AWS Systems Manager
ユーザーガイド

Systems Manager パラメーターへのアクセス制御

AWS Identity and Access Management (IAM) を使用することで、Systems Manager パラメータへのアクセスを制御します。具体的には、次の API オペレーションへのアクセスを制限する IAM ポリシーを作成します。

制限付きの IAM ポリシーを作成して、Systems Manager パラメータへのアクセスを制御することをお勧めします。たとえば、次のポリシーでは、ユーザーは DescribeParameters および GetParameters API オペレーションを特定のリソースに呼び出すことができます。つまり、prod-* で始まるすべてのパラメータに関する情報を取得し、使用することができます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456123:parameter/prod-*" } ] }

信頼されている管理者には、次の例のようなポリシーを使用することで、すべての Systems Manager パラメータ API オペレーションへのフルアクセスを提供できます。このポリシーにより、ユーザーは、dbserver-prod-* で始まるすべての本稼働パラメータにフルアクセスできます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:region:account-id:parameter/dbserver-prod-*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

特定のパラメータのみインスタンスでの実行を許可する

また、インスタンスに、特定のパラメータのみを実行するためのアクセス権限を制御することもできます。次の例では、インスタンスが "prod-" で始まるパラメータのみのパラメータ値を取得できます。パラメータが安全な文字列である場合、インスタンスは AWS KMS を使用して文字列を復号します。

注記

パラメータを作成するときに SecureString データ型を選択すると、Systems Manager は AWS Key Management Service (KMS) を使用してパラメータ値を暗号化します。KMS は、AWS 管理のカスタマーマスターキー (CMK) またはカスタマー管理の CMK を使用して値を暗号化します。AWS KMS と CMK の詳細については、AWS Key Management Service Developer Guide を参照してください。

AWS 管理の CMK を表示するには、次のコマンドを AWS CLI から実行します。

aws kms describe-key --key-id alias/aws/ssm
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:GetParameters" ], "Resource":[ "arn:aws:ssm:region:account-id:parameter/prod-*" ] }, { "Effect":"Allow", "Action":[ "kms:Decrypt" ], "Resource":[ "arn:aws:kms:region:account-id:key/CMK" ] } ] }

注記

前の例のようなインスタンスポリシーは、IAM でインスタンスロールに割り当てられます。ユーザーとインスタンスにポリシーを割り当てる方法など、Systems Manager の機能へのアクセスを設定する方法の詳細については、「AWS Systems Manager のセットアップ」を参照してください。

タグを使用したパラメータへのアクセスの制御

パラメータをタグ付けしたあと、ユーザーがアクセスできるタグを指定する IAM ポリシーを作成することで、アクセスを制限できます。ユーザーがパラメータの使用を試みると、システムはパラメータに指定された IAM ポリシーおよびタグをチェックします。ユーザーがパラメータに割り当てられたタグへのアクセス権限を持たない場合、ユーザーはアクセス拒否エラーを受け取ります。

現在、以下の GetParameter API アクションへのアクセスを制限することができます。

次の手順に従って、タグを使用してパラメータへのアクセスを制限する IAM ポリシーを作成します。

開始する前に

パラメータを作成およびタグ付けします。詳細については、「パラメータストア をセットアップする」を参照してください。

タグを使用してユーザーによるパラメータへのアクセスを制限するには

  1. Open the IAM console at https://console.aws.amazon.com/iam/.

  2. ナビゲーションペインで、[Policies (ポリシー)] を選択し、次に [Create policy (ポリシーの作成)] を選択します。

  3. [JSON] タブを選択します。

  4. 次のサンプルポリシーをコピーしてテキストフィールド内に貼り付け、サンプルテキストを置き換えます。tag_key および tag_value を、タグのキー値のペアと置き換えます。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:GetParameters" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key":[ "tag_value" ] } } } ] }

    このサンプルポリシーでは、GetParameters API アクションのみへのアクセスに制限されています。アクションブロックの次の形式を使用して、複数の API アクションへのアクセスを制限できます。

    "Action":[ "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory", ],

    次の Condition 形式を使用して、ポリシー内の複数のキーを指定できます。複数のキーを指定すると、キーに AND 関係が作られます。

    "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ], "ssm:resourceTag/tag_key2":[ "tag_value2" ] } }

    次の Condition 形式を使用して、ポリシー内の複数の値を指定できます。ForAnyValue は、値の OR 関係を確立します。また、ForAllValues を指定して AND 関係を確立することもできます。

    "Condition":{ "ForAnyValue:StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1", "tag_value2" ] } }
  5. [Review policy] を選択します。

  6. [ Name] フィールドで、これをタグ付けされたパラメータのユーザーポリシーとして識別する名前を指定します。

  7. 説明を入力します。

  8. [Summary] セクションでポリシーの詳細を確認します。

  9. [Create policy] を選択します。

  10. IAM ユーザーまたはグループにポリシーを割り当てます。詳細については、IAM User Guide の「IAM ユーザーのアクセス許可の変更」および「IAM グループへのポリシーのアタッチ」を参照してください。

ポリシーを IAM ユーザーまたはグループアカウントにアタッチしたあと、ユーザーがパラメータの使用を試みて、ユーザーのポリシーがパラメータのタグへのアクセスを許可していない場合 (GetParameters API を呼び出します)、システムはエラーを返します。エラーは次の例のようになります。

ユーザー: user_name は、以下のコマンドでリソース: parameter_ARN に対して ssm:GetParameters を実行するアクセス許可を持っていません。

パラメータが複数のタグを持つ場合でも、ユーザーがいずれかのタグにアクセスする権限を持っていなければ、ユーザーはアクセス拒否エラーを受け取ります。