翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
IAM ポリシーを使用して Systems Manager パラメータへのアクセスを制限する
AWS Identity and Access Management (IAM) を使用して、AWS Systems Manager パラメータへのアクセスを制限します。具体的には、次の API オペレーションへのアクセスを制限する IAM ポリシーを作成します。
IAM ポリシーを使用して Systems Manager パラメータへのアクセスを制限する場合は、制限付き IAM ポリシーを作成して使用することをお勧めします。たとえば、以下のポリシーでは、ユーザーは限られた一連のリソースに対して 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-*" } ] }
重要
ユーザーがパスへのアクセス許可を持つ場合、そのユーザーはそのパスのすべてのレベルにアクセスできます。たとえば、ユーザーがパス /a
へのアクセス許可を持っている場合、ユーザーは /a/b
にアクセスすることもできます。ユーザーが IAM でパラメータ /a/b
へのアクセスを明示的に拒否された場合でも、/a
に対して GetParametersByPath
API オペレーションを再帰的に呼び出し、/a/b
を表示できます。
信頼されている管理者には、以下の例のようなポリシーを使用することで、すべての Systems Manager パラメータ API オペレーションへのアクセスを許可できます。このポリシーにより、ユーザーは、dbserver-prod-*
で始まるすべての本稼働パラメータにフルアクセスできます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/dbserver-prod-*" }, { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }
アクセス許可を拒否する
各 API は一意であり、個別に許可または拒否できる個別の操作とアクセス許可があります。ポリシー内の明示的な拒否は、許可に優先します。
注記
デフォルトの AWS Key Management Service (AWS KMS) キーには、AWS アカウント 内のすべての IAM プリンシパルに対する Decrypt
アクセス許可があります。アカウントの SecureString
パラメータに対して異なるアクセスレベルを使用する場合は、デフォルトのキーを使用することはお勧めしません。
パラメータ値を取得するすべての API オペレーションの動作を同じにする場合は、ポリシーの GetParameter*
ようなパターンを使用できます。次に、GetParameter
で始まるすべてのパラメータについて、GetParameters
、GetParameterHistory
、GetParametersByPath
、および prod-*
を拒否する例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
次に、prod-*
で始まるすべてのパラメータに対してユーザーが他のコマンドを実行できるようにしながら、一部のコマンドを拒否する例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
注記
パラメータ履歴には、現在のパラメータを含むすべてのパラメータバージョンが含まれます。したがって、GetParameter
、GetParameters
、および GetParameterByPath
に対するアクセス許可が拒否され、GetParameterHistory
に対するアクセス許可が認められている場合、SecureString
を使用して、GetParameterHistory
パラメータを含む現在のパラメータを表示できます。
特定のパラメータのみノードでの実行を許可する
指定したパラメータのみをマネージドノードが実行できるようにアクセスをコントロールできます。
パラメータを作成するときに SecureString
パラメータ型を選択した場合、Systems Manager は AWS KMS を使用してパラメータ値を暗号化します。AWS KMS は AWS マネージドキー またはカスタマーマネージドキーを使用して値を暗号化します。AWS KMS と AWS KMS key の詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。
AWS マネージドキー を表示するには、以下のコマンドを AWS CLI から実行します。
aws kms describe-key --key-id alias/aws/ssm
以下の例では、「prod-
」で始まるパラメータに対してのみ、ノードがパラメータの値を取得できるようにしています。パラメータが SecureString
の場合、ノードは AWS KMS を使用してその文字列を復号化します。
注記
以下の例のように、IAM でインスタンスポリシーはインスタンスロールに割り当てられます。ユーザーとインスタンスにポリシーを割り当てる方法を含め、Systems Manager の機能へのアクセスを設定する方法の詳細については、「Systems Manager の EC2 インスタンスのセットアップ」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE" ] } ] }
AWS のデフォルトキーとカスタマーマネージドキーを使用するための IAM アクセス権限
Parameter Store SecureString
パラメータは、AWS KMS キーを使用して暗号化および復号化されます。AWS が提供する AWS KMS key またはデフォルトの KMS キーを使用して、SecureString
パラメータを暗号化することを選択できます。
カスタマーマネージドキーを使用する場合、パラメータまたはパラメータパスへのユーザーアクセスを許可する IAM ポリシーによって、キーに対する明示的な kms:Encrypt
アクセス許可を提供する必要があります。例えば、次のポリシーでは、指定した AWS リージョン と AWS アカウント で「prod-
」で始まる SecureString
パラメータを作成、更新、表示できます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }
1指定されたカスタマーマネージドキーを使用して暗号化された詳細パラメータを作成するには、kms:GenerateDataKey
アクセス許可が必要です。
対照的に、カスタマーアカウント内のすべてのユーザーは、デフォルトの AWS マネージドキーにアクセスできます。このデフォルトキーを使用して SecureString
パラメータを暗号化し、ユーザーが SecureString
パラメータを操作しないようにする場合は、次のポリシー例に示すように、IAM ポリシーでデフォルトキーへのアクセスを明示的に拒否する必要があります。
注記
デフォルトのキーの Amazon リソースネーム (ARN) は、AWS KMS コンソールの [AWS マネージドキー]aws/ssm
で識別されるキーです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE" ] } ] }
アカウントの SecureString
パラメータに対するきめ細かいアクセス制御が必要な場合は、カスタマーマネージドキーを使用して、これらのパラメータへのアクセスを保護および制限する必要があります。また、AWS CloudTrail を使用して SecureString
パラメータのアクティビティを監視することをお勧めします。
詳細については、以下のトピックを参照してください。
-
IAM ユーザーガイドの「ポリシー評価ロジック」
-
「AWS Key Management Service デベロッパーガイド」の「AWS KMS の主要ポリシーを使用する」
-
AWS CloudTrail ユーザーガイドの「CloudTrail イベント履歴でのイベントの表示」