IAM ポリシーを使用して Systems Manager パラメータへのアクセスを制限する
AWS Identity and Access Management (IAM) を使用して、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-*
" } ] }
信頼されている管理者には、以下の例のようなポリシーを使用することで、すべての 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": "*" } ] }
アクセス許可を拒否する
各 API は一意であり、個別に許可または拒否できる個別の操作とアクセス許可があります。ポリシー内の明示的な拒否は、許可に優先します。
デフォルトの AWS Key Management Service (AWS KMS) キーには、AWS アカウント内のすべての IAM プリンシパルに対する Decrypt
アクセス許可があります。アカウントの SecureString
パラメータに対して異なるアクセスレベルを使用する場合は、デフォルトのキーを使用することはお勧めしません。
パラメータ値を取得するすべての API オペレーションの動作を同じにする場合は、ポリシーの GetParameter*
ようなパターンを使用できます。次に、prod-*
で始まるすべてのパラメータについて、GetParameter
、GetParameters
、GetParameterHistory
、および GetParametersByPath
を拒否する例を示します。
{ "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" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" "ssm:DescribeParameters" ], "Resource": "arn:aws:ssm:
region
:account-id
:parameter/prod-*
" } ] }
パラメータ履歴には、現在のパラメータを含むすべてのパラメータバージョンが含まれます。したがって、GetParameter
、GetParameters
、および GetParameterByPath
に対するアクセス許可が拒否され、GetParameterHistory
に対するアクセス許可が認められている場合、GetParameterHistory
を使用して、SecureString
パラメータを含む現在のパラメータを表示できます。
特定のパラメータのみインスタンスでの実行を許可する
指定したパラメータのみをインスタンスが実行できるようにアクセスをコントロールできます。
パラメータを作成するときに SecureString
データ型を選択した場合、Systems Manager は AWS Key Management Service (AWS 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-
」で始まるパラメータのみ、パラメータの値を取得できるようにしています。パラメータが SecureString
の場合、インスタンスは 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
" ] } ] }
AWS のデフォルトキーとカスタマーマネージドキーを使用するための IAM アクセス許可
パラメータストア SecureString
パラメータは、AWS Key Management Service (AWS KMS) キーを使用して暗号化および復号化されます。カスタマーマスターキー (CMK)
または AWS が提供するデフォルトの KMS キーを使用して SecureString
パラメータを暗号化する選択ができます。
カスタマーマネージドキーを使用する場合、パラメータまたはパラメータパスへのユーザーアクセスを許可する IAM ポリシーによって、キーに対する明示的な kms:Encrypt
アクセス許可を提供する必要があります。たとえば、次のポリシーでは、指定した 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 ポリシーでデフォルトキーへのアクセスを明示的に拒否する必要があります。
AWS KMS コンソールのデフォルトキーの Amazon リソースネーム (ARN) は、AWS マネージドキーaws/ssm
で識別されるキーです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey " ], "Resource": [ "
default-key-ARN
" ] } ] }
アカウントの SecureString
パラメータに対するきめ細かいアクセス制御が必要な場合は、カスタマー管理の CMK を使用して、これらのパラメータへのアクセスを保護および制限する必要があります。また、AWS
CloudTrail を使用して SecureString
パラメータのアクティビティを監視することをお勧めします。
詳細については、以下のトピックを参照してください。
-
IAM ユーザーガイド のポリシーの評価ロジック
-
AWS Key Management Service Developer Guide の AWS KMS でのキーポリシーの使用
-
AWS CloudTrail User Guide の CloudTrail イベント履歴でのイベントの表示