翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
キーポリシーを確認する
キーポリシーは、KMS キーへのアクセスを制御するための主要な方法です。すべての KMS キーには、厳密に 1 つのキーポリシーが必要です。
キーポリシーがデフォルトのキーポリシーで設定されるか、含まれている場合、キーポリシーによって、アカウントの IAM 管理者が IAM ポリシーを使用し、KMS キーへのアクセスを制御できるようになります。また、キーポリシーによって KMS キーを使用するアクセス許可が別の AWS アカウント に付与されている場合、外部アカウントの IAM 管理者は、IAM ポリシーを使用してこれらのアクセス許可を委任できます。KMS キーにアクセスできるプリンシパルの完全なリストを確認するには、IAM ポリシーを調べます。
アカウントAWS マネージドキーで AWS KMS カスタマーマネージドキーまたは のキーポリシーを表示するには、 AWS KMS API で AWS Management Console または GetKeyPolicy オペレーションを使用します。キーポリシーを表示するには、KMS キーの kms:GetKeyPolicy
アクセス許可が必要です。KMS キーのキーポリシーを表示する手順については、キーポリシーを表示する を参照してください。
キーポリシードキュメントを確認し、各ポリシーステートメントの Principal
要素で指定されているすべてのプリンシパルを書き留めます。Allow
効果のあるポリシーステートメントでは、 Principal
要素 AWS アカウント の IAM ユーザー、IAM ロール、および がこの KMS キーにアクセスできます。
注記
条件を使用してキーポリシーを制限しない限り、アクセス許可を付与するキーポリシーステートメントで、プリンシパルをアスタリスク (*) に設定しないでください。アスタリスクは、別のポリシーステートメントが明示的に拒否しない限り、KMS キーを使用するすべての AWS アカウント アクセス許可をすべての のすべての ID に付与します。他の のユーザーは AWS アカウント 、自分のアカウントで対応するアクセス許可を持っている場合はいつでも KMS キーを使用できます。
次の例では、デフォルトのキーポリシーで見つかったポリシーステートメントを使用してこれを行う方法を示します。
例 ポリシーステートメント 1
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }
ポリシーステートメント 1 では、 arn:aws:iam::111122223333:root
は AWS アカウント 111122223333 を参照するAWS アカウントプリンシパルです。(アカウントのルートユーザーではありません)。デフォルトでは、 を使用して新しい KMS キーを作成するとき AWS Management Console、またはプログラムで新しい KMS キーを作成するときに、このようなポリシーステートメントがキーポリシードキュメントに含まれますが、キーポリシーは指定されません。
へのアクセスを許可するステートメントを含むキーポリシードキュメントは、アカウントの IAM ポリシーが KMS キーへのアクセスを許可 AWS アカウント できるようにします。つまり、アカウントのユーザーとロールは、キーポリシードキュメントにプリンシパルとして明示的にリストされていない場合でも、KMS キーにアクセスできる可能性があります。プリンシパルとして AWS アカウント リストされているすべての のすべての IAM ポリシーを調べて、この KMS キーへのアクセスを許可するかどうかを確認してください。
例 ポリシーステートメント 2
{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"}, "Action": [ "kms:Describe*", "kms:Put*", "kms:Create*", "kms:Update*", "kms:Enable*", "kms:Revoke*", "kms:List*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }
ポリシーステートメント 2 では、 は KMSKeyAdmins in AWS アカウント 111122223333 という名前の IAM ロールarn:aws:iam::111122223333:role/KMSKeyAdmins
を参照します。このロールを引き受ける権限を持つユーザーは、KMS キーを管理するための管理アクションである、ポリシーステートメントにリストされたアクションを実行できます。
例 ポリシーステートメント 3
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*" }
ポリシーステートメント 3 では、 は EncryptionApp in AWS アカウント 111122223333 という名前の IAM ロールarn:aws:iam::111122223333:role/EncryptionApp
を参照します。このロールを引き受ける権限を持つプリンシパルは、対称暗号化 KMS キーの暗号化オペレーションを含む、ポリシーステートメントにリストされたアクションを実行できます。
例 ポリシーステートメント 4
{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }
ポリシーステートメント 4 では、 は EncryptionApp in AWS アカウント 111122223333 という名前の IAM ロールarn:aws:iam::111122223333:role/EncryptionApp
を参照します。このロールを引き受ける権限を持つプリンシパルは、ポリシーステートメントにリストされたアクションを実行できます。これらのアクションは、ポリシーステートメント 3 の例で許可されたアクションと連動する際に、KMS キーの使用を、AWS KMSと統合されたほとんどのAWS のサービス (特に、権限を使用するサービス) に委任するために必要なアクションになります。Condition
要素の kms:GrantIsForAWSResource 値により、委任が と統合 AWS KMS され、認可に許可を使用する AWS サービスである場合にのみ、委任が許可されます。
キーポリシードキュメントでプリンシパルを指定する各種方法をすべて確認するには、IAM ユーザーガイドのプリンシパルの指定を参照してください。
AWS KMS キーポリシーの詳細については、「」を参照してくださいのキーポリシー AWS KMS。