

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

# キーポリシーを作成する
<a name="key-policy-overview"></a>

キーポリシーは、 AWS KMS コンソールで、または [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)、[ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)、[PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) などの AWS KMS API オペレーションを使用して作成および管理できます。

 AWS KMS コンソールで KMS キーを作成すると、コンソールはコンソールの[デフォルトキーポリシーに基づいてキーポリシー](key-policy-default.md)を作成する手順を説明します。`CreateKey` または `ReplicateKey` API を使用するときにキーポリシーを指定しない場合、これらの API は[プログラム的に作成されたキーのデフォルトキーポリシー](key-policy-default.md)を適用します。`PutKeyPolicy` API を使用するときは、キーポリシーを指定する必要があります。

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

------
#### [ JSON ]

****  

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

------

**Topics**
+ [キーポリシー形式](#key-policy-format)
+ [キーポリシー内の要素](#key-policy-elements)
+ [キーポリシーの例](#key-policy-example)

## キーポリシー形式
<a name="key-policy-format"></a>

キーポリシードキュメントは、以下のルールに従う必要があります。
+ 最大 32 キロバイト (32,768 バイト)
+ キーポリシーステートメントの `Sid` 要素には、スペースを含めることができます。(IAM ポリシードキュメントの `Sid` 要素では、スペースが禁止されています｡)

キーポリシードキュメントには、以下の文字のみを含めることができます。
+ 印字可能な ASCII 文字
+ 基本ラテンおよびラテン 1 補助文字セットの印字可能な文字
+ タブ (`\u0009`)、ラインフィード (`\u000A`)、およびキャリッジリターン (`\u000D`) の特殊文字

## キーポリシー内の要素
<a name="key-policy-elements"></a>

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

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

**Statement**  
ポリシーステートメントを囲みます。キーポリシードキュメントには、少なくとも 1 つのステートメントが必要です。  
各キーポリシーステートメントは、最大 6 個の要素で構成されます。`Effect`、`Principal`、`Action`、`Resource` の要素は必須です。    
**Sid **  
(オプション) ステートメント識別子 (`Sid`)。ステートメントを記述するために使用できる任意の文字列です。キーポリシーの `Sid` には、スペースを含めることができます。(IAM ポリシーの `Sid` 要素にスペースを含めることはできません。)  
**Effect**  
(必須) ポリシーステートメント内の許可を許容するか拒否するかを決定します。有効な値は `Allow` または `Deny` です。KMS キーへのアクセスを明示的に許可しない場合、アクセスは暗黙的に拒否されます。KMS キーへのアクセスを明示的に拒否することもできます。これは、別のポリシーがアクセスを許可している場合でも、ユーザーがアクセスできないようにするために行います。  
**Principal**  
(必須) [プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying)は、ポリシーステートメントで指定されている許可を取得するアイデンティティです。キーポリシーでは AWS アカウント、プリンシパルとして、、IAM ユーザー、IAM ロール、および一部の AWS サービスを指定できます。IAM [ユーザーグループ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)は、どのポリシータイプにおいても有効なプリンシパルではありません。  
`"AWS": "*"` などのアスタリスク値は、すべてのアカウントのすべての AWS ID を表します。  
[条件](policy-conditions.md)を使用してキーポリシーを制限しない限り、アクセス許可を付与するキーポリシーステートメントで、プリンシパルをアスタリスク (\$1) に設定しないでください。アスタリスクは、別のポリシーステートメントが明示的に拒否しない限り、KMS キーを使用するすべての AWS アカウント アクセス許可をすべての ID に付与します。他の のユーザーは AWS アカウント 、自分のアカウントで対応するアクセス許可があるたびに KMS キーを使用できます。
IAM ベストプラクティスでは、長期の認証情報を持つ IAM ユーザーの使用は推奨されていません。可能な限り、一時的な認証情報を提供する IAM ロールを使用してください。詳細については、「IAM ユーザーガイド」の「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。
キーポリシーステートメントのプリンシパルが `arn:aws:iam::111122223333:root"` 形式の [AWS アカウント プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)である場合、ポリシーステートメントはいかなる IAM プリンシパルにも許可を付与しません。代わりに、IAM ポリシーを使用してキーポリシーで指定された AWS アカウント アクセス許可を委任するアクセス許可が に付与されます。(`arn:aws:iam::111122223333:root"` 形式のプリンシパルは、アカウント識別子に「root」が使用されていても [AWS アカウントのルートユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)を示すものではありません。ただし、アカウントプリンシパルは、アカウントのルートユーザーを含むアカウントとその管理者を表します。)  
プリンシパルが別のプリンシパル AWS アカウント またはそのプリンシパルである場合、アクセス許可は、KMS キーとキーポリシーを使用して リージョンでアカウントが有効になっている場合にのみ有効です。デフォルトで有効になっていないリージョン (「オプトインリージョン」) の詳細については、「AWS 全般のリファレンス」の「[AWS リージョンの管理](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)」を参照してください。  
別の AWS アカウント またはそのプリンシパルに KMS キーの使用を許可するには、キーポリシーと他のアカウントの IAM ポリシーでアクセス許可を付与する必要があります。詳細については、「[他のアカウントのユーザーに KMS キーの使用を許可する](key-policy-modifying-external-accounts.md)」を参照してください。  
**Action**  
(必須) 許可または拒否する API オペレーションを指定します。たとえば、 `kms:Encrypt`アクションは AWS KMS [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) オペレーションに対応します。ポリシーステートメントに複数のアクションを一覧表示できます。詳細については、「[アクセス許可に関するリファレンス](kms-api-permissions-reference.md)」を参照してください。  
必要な `Action` 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。`Action` 要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。  
キーポリシーステートメントに `Action`要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) API と [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs は成功します。  
**[リソース] **  
(必須) キーポリシーでは、Resource 要素の値が `"*"` になります。これは「この KMS キー」を意味します。アスタリスク (`"*"`) は、キーポリシーがアタッチされた KMS キーを識別します。  
必要な `Resource` 要素がキーポリシーステートメントにない場合、ポリシーステートメントによる影響はありません。`Resource` 要素のないキーポリシーステートメントは、どの KMS キーにも適用されません。  
キーポリシーステートメントに `Resource`要素がない場合、 AWS KMS コンソールはエラーを正しく報告しますが、ポリシーステートメントが無効であっても [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) API と [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs は成功します。  
**Condition**  
(オプション) 条件は、キーポリシーを有効にするために満たす必要がある要件を指定します。条件を使用すると、 は API リクエストのコンテキストを評価して、ポリシーステートメントが適用されるかどうかを判断 AWS できます。  
条件を指定するには、事前定義された*条件キー*を使用します。 は、[AWS グローバル条件キー](conditions-aws.md)と[AWS KMS 条件キー](conditions-kms.md) AWS KMS をサポートしています。属性ベースのアクセスコントロール (ABAC) をサポートするために、 はタグとエイリアスに基づいて KMS キーへのアクセスを制御する条件キー AWS KMS を提供します。詳細については、「[の ABAC AWS KMS](abac.md)」を参照してください。  
条件の形式は次のとおりです。  

```
"Condition": {"condition operator": {"condition key": "condition value"}}
```
例：  

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

 AWS ポリシー構文の詳細については、IAM **[AWS ユーザーガイドの「IAM ポリシーリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)」を参照してください。

## キーポリシーの例
<a name="key-policy-example"></a>

以下は、対称暗号化 KMS キーの完全なキーポリシーの例です。この章の主なポリシー概念について読むと、参考に使うことができます。このキーポリシーでは、先ほどの「[デフォルトキーポリシー](key-policy-default.md)」のセクションからのポリシーステートメント例と、以下を実行するための 1 つのキーポリシーを組み合わせています。
+ 例 AWS アカウント 111122223333 に KMS キーへのフルアクセスを許可します。これにより、アカウントのルートユーザー (緊急用) を含む、アカウントとその管理者は、アカウントの IAM ポリシーを使用して KMS キーへのアクセスを許可できます。
+ `ExampleAdminRole` IAM ロールが KMS キーを管理できるようにします。
+ `ExampleUserRole` IAM ロールが KMS キーを使用できるようにします。

------
#### [ JSON ]

****  

```
{
    "Id": "key-consolepolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministratorsAccess",
            "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": "AllowKeyUse",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAttachmentPersistentResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}
```

------