キーポリシーを作成する - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

キーポリシーを作成する

AWS KMS コンソールで、または 、、 などのオペレーションを使用して AWS KMS APICreateKeyReplicateKey、キーポリシーを作成および管理できますPutKeyPolicy

AWS KMS コンソールでKMSキーを作成すると、コンソールは、コンソールのデフォルトのキーポリシーに基づいてキーポリシーを作成するステップを順を追って説明します。CreateKey または を使用する場合ReplicateKeyAPIs、キーポリシーを指定しない場合、これらはプログラムで作成されたキーのデフォルトのキーポリシーAPIsを適用します。を使用する場合PutKeyPolicyAPI、キーポリシーを指定する必要があります。

各ポリシードキュメントには、1 つ以上のポリシーステートメントを指定できます。以下は、1 つのポリシーステートメントがある有効なキーポリシードキュメントの例です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Describe the policy statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } } ] }

キーポリシー形式

キーポリシードキュメントは、以下のルールに従う必要があります。

  • 最大 32 キロバイト (32,768 バイト)

  • キーポリシーステートメントの Sid 要素には、スペースを含めることができます。(ポリシーIAMドキュメントの Sid要素ではスペースは禁止されています)。

キーポリシードキュメントには、以下の文字のみを含めることができます。

  • 印刷可能なASCII文字

  • 基本ラテンおよびラテン 1 補助文字セットの印字可能な文字

  • タブ (\u0009)、ラインフィード (\u000A)、およびキャリッジリターン (\u000D) の特殊文字

キーポリシー内の要素

キーポリシードキュメントには、次の要素が必要です。

Version

キーポリシードキュメントのバージョンを指定します。バージョンを 2012-10-17 (最新バージョン) に設定します。

Statement

ポリシーステートメントを囲みます。キーポリシードキュメントには、少なくとも 1 つのステートメントが必要です。

各キーポリシーステートメントは、最大 6 個の要素で構成されます。EffectPrincipalActionResource の要素は必須です。

Sid

(オプション) ステートメント識別子 (Sid)。ステートメントを記述するために使用できる任意の文字列です。キーポリシーの Sid には、スペースを含めることができます。(IAMポリシーSid要素にスペースを含めることはできません)。

Effect

(必須) ポリシーステートメント内の許可を許容するか拒否するかを決定します。有効な値は Allow または Deny です。KMS キーへのアクセスを明示的に許可しない場合、アクセスは暗黙的に拒否されます。KMS キーへのアクセスを明示的に拒否することもできます。これは、別のポリシーがアクセスを許可している場合でも、ユーザーがアクセスできないようにするために行います。

Principal

(必須) プリンシパルは、ポリシーステートメントで指定されている許可を取得するアイデンティティです。 AWS アカウント、IAMユーザー、IAMロール、および一部の AWS サービスを、キーポリシーのプリンシパルとして指定できます。IAM ユーザーグループは、どのポリシータイプでも有効なプリンシパルではありません。

"AWS": "*" などのアスタリスク値は、すべてのアカウントのすべての AWS ID を表します。

重要

条件を使用してキーポリシーを制限しない限り、アクセス許可を付与するキーポリシーステートメントで、プリンシパルをアスタリスク (*) に設定しないでください。アスタリスクは、別のポリシーステートメントが明示的に拒否しない限り、KMSキーを使用するすべての AWS アカウント アクセス許可のすべての ID に付与します。他の のユーザーは AWS アカウント 、自分のアカウントで対応するアクセス許可がある場合にいつでもKMSキーを使用できます。

注記

IAM ベストプラクティスでは、長期的な認証情報を持つIAMユーザーの使用をお勧めしていません。可能な限り、一時的な認証情報を提供するIAMロールを使用します。詳細については、「 ユーザーガイド」の「 セキュリティのベストプラクティスIAM」を参照してください。 IAM

キーポリシーステートメントのプリンシパルが として表されるAWS アカウント プリンシパルである場合arn:aws:iam::111122223333:root"、ポリシーステートメントはプリンIAMシパルに許可を付与しません。代わりに、キーIAMポリシーで指定された AWS アカウント アクセス許可を委任するためにポリシーを使用するアクセス許可を付与します。(arn:aws:iam::111122223333:root" 形式のプリンシパルは、アカウント識別子に「root」が使用されていても AWS アカウントのルートユーザーを示すものではありません。ただし、アカウントプリンシパルは、アカウントのルートユーザーを含むアカウントとその管理者を表します。)

プリンシパルが別のプリンシパル AWS アカウント またはそのプリンシパルである場合、アクセス許可は、 リージョンで KMSキーと キーポリシーを使用してアカウントが有効になっている場合にのみ有効になります。デフォルトで有効になっていないリージョン (「オプトインリージョン」) については、「AWS 全般のリファレンス」の「AWS リージョンの管理」を参照してください。

別の AWS アカウント またはそのプリンシパルにKMSキーの使用を許可するには、キーポリシーと他のアカウントのIAMポリシーでアクセス許可を提供する必要があります。詳細については、「他のアカウントのユーザーに KMS キーの使用を許可する」を参照してください。

Action

(必須) 許可または拒否するAPIオペレーションを指定します。例えば、 kms:Encryptアクションは AWS KMS Encrypt オペレーションに対応します。ポリシーステートメントに複数のアクションを一覧表示できます。詳細については、「アクセス許可に関するリファレンス」を参照してください。

注記

必要な Action 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Action 要素のないキーポリシーステートメントは、どのKMSキーにも適用されません。

キーポリシーステートメントにAction要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKeyと はPutKeyPolicyAPIs成功します。

リソース

(必須) キーポリシーでは、Resource 要素の値は です。これは"*"「このKMSキー」を意味します。アスタリスク ("*") は、KMSキーポリシーがアタッチされているキーを識別します。

注記

必要な Resource 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Resource 要素のないキーポリシーステートメントは、どのKMSキーにも適用されません。

キーポリシーステートメントにResource要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKeyと はPutKeyPolicyAPIs成功します。

Condition

(オプション) 条件は、キーポリシーを有効にするために満たす必要がある要件を指定します。条件により、 はAPIリクエストのコンテキストを評価して、ポリシーステートメントが適用されるかどうかを判断 AWS できます。

条件を指定するには、事前定義された条件キー を使用します。 はAWS グローバル条件キーAWS KMS 条件キー AWS KMS をサポートします。属性ベースのアクセスコントロール (ABAC) をサポートするために、 タグとエイリアスに基づいてキーへのアクセスを制御する条件KMSキー AWS KMS を提供します。詳細については、「AWS KMS の ABAC」を参照してください。

条件の形式は次のとおりです。

"Condition": {"condition operator": {"condition key": "condition value"}}

例:

"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}

AWS ポリシー構文の詳細については、「 ユーザーガイド」のAWS IAM「ポリシーリファレンス」を参照してください。 IAM

キーポリシーの例

次の例は、対称暗号化キーの完全なKMSキーポリシーを示しています。この章の主なポリシー概念について読むと、参考に使うことができます。このキーポリシーでは、先ほどの「デフォルトキーポリシー」のセクションからのポリシーステートメント例と、以下を実行するための 1 つのキーポリシーを組み合わせています。

  • 例 111122223333 AWS アカウントのKMSキーへのフルアクセスを許可します。これにより、アカウントとその管理者、およびアカウントルートユーザー (緊急時) は、アカウントのIAMポリシーを使用してKMSキーへのアクセスを許可できます。

  • ExampleAdminRole IAM ロールがKMSキーを管理できるようにします。

  • ExampleUserRole IAM ロールに KMSキーの使用を許可します。

{ "Id": "key-consolepolicy", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM user Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleAdminRole" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion", "kms:RotateKeyOnDemand" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }