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:123456789012: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": "*" } ] }

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

指定したパラメータのみをインスタンスが実行できるようにアクセスをコントロールできます。

パラメータを作成するときに SecureString データタイプを選択した場合、Systems Manager は AWS Key Management Service (KMS) を使用してパラメータ値を暗号化します。AWS 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

以下の例では、インスタンスが "prod-" で始まるパラメータのみのパラメータ値を取得できます。パラメータが安全な文字列である場合、インスタンスは AWS KMS を使用して文字列を復号します。

注記

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

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

現在、以下の Get* パラメータ関連の 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. [ポリシーの確認] を選択します。

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

  7. (オプション) [説明] に説明を入力します。

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

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

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

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

User: user-name isn't authorized to perform: ssm:GetParameters on resource: parameter-ARN with the following command.

パラメータに複数のタグが含まれる場合、ユーザーがいずれかのタグへのアクセスを許可されていなければ、ユーザーはアクセス拒否エラーを受け取ります。