翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
キーポリシーを作成する
キーポリシーは、 AWS KMS コンソールで、または CreateKey、ReplicateKey、PutKeyPolicy などの AWS KMS API オペレーションを使用して作成および管理できます。
AWS KMS コンソールで KMS キーを作成すると、コンソールはコンソールのデフォルトキーポリシーに基づいてキーポリシーを作成する手順を説明します。CreateKey または ReplicateKey API を使用するときにキーポリシーを指定しない場合、これらの API はプログラム的に作成されたキーのデフォルトキーポリシーを適用します。PutKeyPolicy API を使用するときは、キーポリシーを指定する必要があります。
各ポリシードキュメントには、1 つ以上のポリシーステートメントを指定できます。以下は、1 つのポリシーステートメントがある有効なキーポリシードキュメントの例です。
キーポリシー形式
キーポリシードキュメントは、以下のルールに従う必要があります。
-
最大 32 キロバイト (32,768 バイト)
-
キーポリシーステートメントの
Sid要素には、スペースを含めることができます。(IAM ポリシードキュメントのSid要素では、スペースが禁止されています。)
キーポリシードキュメントには、以下の文字のみを含めることができます。
-
印字可能な ASCII 文字
-
基本ラテンおよびラテン 1 補助文字セットの印字可能な文字
-
タブ (
\u0009)、ラインフィード (\u000A)、およびキャリッジリターン (\u000D) の特殊文字
キーポリシー内の要素
キーポリシードキュメントには、次の要素が必要です。
- Version
-
キーポリシードキュメントのバージョンを指定します。バージョンを
2012-10-17(最新バージョン) に設定します。 - Statement
-
ポリシーステートメントを囲みます。キーポリシードキュメントには、少なくとも 1 つのステートメントが必要です。
各キーポリシーステートメントは、最大 6 個の要素で構成されます。
Effect、Principal、Action、Resourceの要素は必須です。- 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 でのセキュリティのベストプラクティス」を参照してください。
キーポリシーステートメントのプリンシパルが
arn:aws:iam::形式の AWS アカウント プリンシパルである場合、ポリシーステートメントはいかなる IAM プリンシパルにも許可を付与しません。代わりに、IAM ポリシーを使用してキーポリシーで指定された AWS アカウント アクセス許可を委任するアクセス許可が に付与されます。(111122223333:root"arn:aws:iam::形式のプリンシパルは、アカウント識別子に「root」が使用されていても AWS アカウントのルートユーザーを示すものではありません。ただし、アカウントプリンシパルは、アカウントのルートユーザーを含むアカウントとその管理者を表します。)111122223333:root"プリンシパルが別のプリンシパル AWS アカウント またはそのプリンシパルである場合、アクセス許可は、KMS キーとキーポリシーを使用してリージョンでアカウントが有効になっている場合にのみ有効です。デフォルトで有効になっていないリージョン (「オプトインリージョン」) については、「AWS 全般のリファレンス」の「AWS リージョンの管理」を参照してください。
別の AWS アカウント またはそのプリンシパルに KMS キーの使用を許可するには、キーポリシーと他のアカウントの IAM ポリシーでアクセス許可を付与する必要があります。詳細については、「他のアカウントのユーザーに KMS キーの使用を許可する」を参照してください。
- Action
-
(必須) 許可または拒否する API オペレーションを指定します。たとえば、
kms:Encryptアクションは AWS KMS Encrypt オペレーションに対応します。ポリシーステートメントに複数のアクションを一覧表示できます。詳細については、「アクセス許可に関するリファレンス」を参照してください。注記
必要な
Action要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Action要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。キーポリシーステートメントに
Action要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKey API と PutKeyPolicy APIs は成功します。 - リソース
-
(必須) キーポリシーでは、Resource 要素の値が
"*"になります。これは「この KMS キー」を意味します。アスタリスク ("*") は、キーポリシーがアタッチされた KMS キーを識別します。注記
必要な
Resource要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。Resource要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。キーポリシーステートメントに
Resource要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても CreateKey API と PutKeyPolicy APIs は成功します。 - Condition
-
(オプション) 条件は、キーポリシーを有効にするために満たす必要がある要件を指定します。条件を使用すると、 は API リクエストのコンテキストを評価して、ポリシーステートメントが適用されるかどうかを判断 AWS できます。
条件を指定するには、事前定義された条件キーを使用します。 はAWS 、グローバル条件キーとAWS KMS 条件キー AWS KMS をサポートしています。属性ベースのアクセスコントロール (ABAC) をサポートするために、 はタグとエイリアスに基づいて KMS キーへのアクセスを制御する条件キー AWS KMS を提供します。詳細については、「の ABAC AWS KMS」を参照してください。
条件の形式は次のとおりです。
"Condition": {"condition operator": {"condition key": "condition value"}}例:
"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}
AWS ポリシー構文の詳細については、IAM AWS ユーザーガイドの「IAM ポリシーリファレンス」を参照してください。
キーポリシーの例
以下は、対称暗号化 KMS キーの完全なキーポリシーの例です。この章の主なポリシー概念について読むと、参考に使うことができます。このキーポリシーでは、先ほどの「デフォルトキーポリシー」のセクションからのポリシーステートメント例と、以下を実行するための 1 つのキーポリシーを組み合わせています。
-
例 AWS アカウント 111122223333 に KMS キーへのフルアクセスを許可します。これにより、アカウントのルートユーザー (緊急用) を含む、アカウントとその管理者は、アカウントの IAM ポリシーを使用して KMS キーへのアクセスを許可できます。
-
ExampleAdminRoleIAM ロールが KMS キーを管理できるようにします。 -
ExampleUserRoleIAM ロールが KMS キーを使用できるようにします。