Parameter Store API オペレーションへのアクセスの防止 - AWS Systems Manager

Parameter Store API オペレーションへのアクセスの防止

AWS Identity and Access Management (IAM) ポリシーに Systems Manager がサポートするサービス固有の条件を使用することで、Parameter Store API オペレーションとコンテンツへのアクセスを明示的に許可または拒否することができます。これらの条件を使用すると、組織内の特定の IAM エンティティ (ユーザーとロール) のみに特定の API アクションの呼び出しを許可したり、特定の IAM エンティティがアクションを実行できないようにしたりすることができます。これには、Parameter Store コンソール、AWS Command Line Interface (AWS CLI)、および SDK 経由でのアクションが含まれます。

Systems Manager は現在、Parameter Store に固有の 3 つの条件をサポートしています。

ssm:Overwrite を使用して既存のパラメータの変更を防止する

ssm:Overwrite 条件を使用して、IAM エンティティが既存のパラメータを更新できるかどうかを制御します。

以下のサンプルポリシーでは、"Allow" ステートメントは、米国東部 (オハイオ) リージョン (us-east-2) にある AWS アカウント 123456789012 で PutParameter API オペレーションを実行してパラメータを作成する許可を付与します。

その一方で、"Deny" ステートメントはエンティティが既存のパラメータの値を変更するのを禁止しています。これは、PutParameter オペレーションについての Overwrite オプションが明示的に拒否されているためです。このため、このポリシーが割り当てられているエンティティは、パラメータを作成することはできても、既存のパラメータを変更することはできません。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" }, { "Effect": "Deny", "Action": [ "ssm:PutParameter" ], "Condition": { "StringEquals": { "ssm:Overwrite": [ "true" ] } }, "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" } ] }

ssm:Policies を使用してパラメータポリシーを使用するパラメータの作成または更新を禁止する

パラメータポリシーを含むパラメータの作成と、パラメータポリシーを含む既存のパラメータの更新をエンティティに許可するかどうかを制御する ssm:Policies 条件を使用します。

次のポリシー例では、"Allow" ステートメントはパラメータを作成および**する一般的なアクセス許可を付与しますが、"Deny" ステートメントは、エンティティが米国東部 (オハイオ) リージョン (us-east-2) の AWS アカウント 123456789012 にパラメータポリシーを含むパラメータを作成または更新することを禁止します。エンティティは、パラメータポリシーが割り当てられていないパラメータを作成または更新できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" }, { "Effect": "Deny", "Action": [ "ssm:PutParameter" ], "Condition": { "StringEquals": { "ssm:Policies": [ "true" ] } }, "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" } ] }

ssm:Recursive を使用して階層的パラメータ内のレベルへのアクセスを禁止する

ssm:Recursive 条件を使用して、IAM エンティティが階層的パラメータ内のレベルを表示または参照できるかどうかを制御します。特定の階層レベルを超えるすべてのパラメータへのアクセスを提供または制限することができます。

以下のサンプルポリシーでは、"Allow" ステートメントは、米国東部 (オハイオ) リージョン (us-east-2) にある AWS アカウント 123456789012 のパス /Code/Departments/Finance/* 内のすべてのパラメータに対する Parameter Store オペレーションへのアクセスを提供します。

その後に続く "Deny" ステートメントは、IAM エンティティが /Code/Departments/* レベルもしくはそれ以下のパラメータデータを閲覧または取得することを禁止しています。ただし、エンティティは引き続きそのパス内のパラメータを作成または更新できます。このサンプルは、特定のパラメータ階層レベルより下のレベルへのアクセスを再帰的に拒否することが、同じポリシー内にある許容度の高いアクセスよりも優先されることを説明するために構築されています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" }, { "Effect": "Deny", "Action": [ "ssm:GetParametersByPath" ], "Condition": { "StringEquals": { "ssm:Recursive": [ "true" ] } }, "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/Code/Departments/*" } ] }
重要

ユーザーがパスへのアクセス許可を持つ場合、そのユーザーはそのパスのすべてのレベルにアクセスできます。たとえば、ユーザーがパス /a へのアクセス許可を持っている場合、ユーザーは /a/b にアクセスすることもできます。ただし、上記のように、ユーザーが IAM でパラメータ /b へのアクセスを明示的に拒否されている場合は例外となります。