

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

# KMS キー \| 作成
<a name="deployment-advanced-kms-key-create"></a>

SSM 自動化ドキュメントとポリシー検証を使用して AWS KMS カスタマーマスターキー (CMK) を作成します。

**完全分類:** デプロイ \| 高度なスタックコンポーネント \| KMS キー \| 作成

## 変更タイプの詳細
<a name="ct-1d84keiri1jhg-DAKc-table"></a>


****  

|  |  | 
| --- |--- |
| 変更タイプ ID | ct-1d84keiri1jhg | 
| 現在のバージョン | 2.0 | 
| 予想される実行期間 | 30 分 | 
| AWS の承認 | 必須 | 
| お客様の承認 | 不要 | 
| 実行モード | 自動 | 

## 追加情報
<a name="deployment-advanced-kms-key-create-info"></a>

### KMS キーを作成する
<a name="ex-kms-key-create-col"></a>

#### コンソールを使用した AWS KMS キーの作成
<a name="kms-key-create-con"></a>

AMS コンソールでのこの変更タイプのスクリーンショット:

![](http://docs.aws.amazon.com/ja_jp/managedservices/latest/ctref/images/guiKmsKeyCreateCT.png)


仕組み:

1. **RFC **の作成ページに移動します。AMS コンソールの左側のナビゲーションペインで**RFCs** をクリックして RFCsリストページを開き、**RFC の作成**をクリックします。

1. デフォルトの変更タイプ参照ビューで一般的な**変更タイプ** (CT) を選択するか、**カテゴリ別選択ビューで CT **を選択します。
   + **変更タイプ別に参照**: **クイック作成**エリアで一般的な CT をクリックすると、すぐに **RFC の実行**ページを開くことができます。クイック作成で古い CT バージョンを選択することはできません。

     CTs をソートするには、**カード**ビューまたは**テーブル**ビューで**すべての変更タイプ**領域を使用します。どちらのビューでも、CT を選択し、**RFC **の作成をクリックして **RFC の実行**ページを開きます。必要に応じて、RFC **の作成ボタンの横に古いバージョンで**作成オプションが表示されます。 ****
   + **カテゴリ別に選択**: カテゴリ、サブカテゴリ、項目、オペレーションを選択すると、CT 詳細ボックスが開き、必要に応じて**古いバージョンで作成する**オプションが表示されます。**RFC の作成**をクリックして、**RFC の実行**ページを開きます。

1. **RFC の実行**ページで、CT 名エリアを開き、CT の詳細ボックスを表示します。**件名**は必須です (**変更タイプの参照**ビューで CT を選択した場合は入力されます）。**追加設定**エリアを開き、RFC に関する情報を追加します。

   **実行設定**領域で、使用可能なドロップダウンリストを使用するか、必要なパラメータの値を入力します。オプションの実行パラメータを設定するには、**追加の設定**領域を開きます。

1. 完了したら、**実行** をクリックします。エラーがない場合、**RFC が正常に作成された**ページに、送信された RFC の詳細と最初の**実行出力**が表示されます。

1. **Run parameters** エリアを開き、送信した設定を確認します。ページを更新して RFC 実行ステータスを更新します。必要に応じて、RFC をキャンセルするか、ページ上部のオプションを使用してコピーを作成します。

#### CLI を使用した AWS KMS キーの作成
<a name="kms-key-create-cli"></a>

仕組み:

1. インライン作成 (すべての RFC と実行パラメータを含む`create-rfc`コマンドを発行) またはテンプレート作成 (2 つの JSON ファイルを作成します。1 つは RFC パラメータ用、もう 1 つは実行パラメータ用) のいずれかを使用し、2 つのファイルを入力として`create-rfc`コマンドを発行します。どちらの方法もここで説明します。

1. 返された RFC ID を使用して RFC: `aws amscm submit-rfc --rfc-id {{ID}}` コマンドを送信します。

   RFC: `aws amscm get-rfc --rfc-id {{ID}}` コマンドをモニタリングします。

変更タイプのバージョンを確認するには、次のコマンドを使用します。

```
aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value={{CT_ID}}
```
**注記**  
変更タイプのスキーマの一部であるかどうかにかかわらず、任意の RFC で任意の`CreateRfc`パラメータを使用できます。たとえば、RFC ステータスが変更されたときに通知を受け取るには、リクエストの RFC パラメータ部分 (実行パラメータではなく) `--notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}"`にこの行を追加します。すべての CreateRfc パラメータのリストについては、[AMS 変更管理 API リファレンス](https://docs.aws.amazon.com/managedservices/latest/ApiReference-cm/API_CreateRfc.html)を参照してください。

*インライン作成*:

インラインで指定された実行パラメータ (インラインで実行パラメータを指定する場合は引用符をエスケープ) を指定して create RFC コマンドを発行し、返された RFC ID を送信します。たとえば、コンテンツを次のような内容に置き換えることができます。

必須パラメータのみ:

```
aws amscm create-rfc --title {{my-app-key}} --change-type-id ct-1d84keiri1jhg --change-type-version {{1.0}} --execution-parameters '{"Description":"{{KMS key for my-app}}","VpcId":"{{VPC_ID}}","Name":"{{my-app-key}}","StackTemplateId":"stm-enf1j068fhg34vugt","TimeoutInMinutes":60,"Parameters":{"Description":"{{KMS key for my-app}}"}}'
```

*テンプレートの作成*:

1. この変更タイプの実行パラメータ JSON スキーマをファイルに出力します。この例では、CreateKmsKeyAutoParams.json.

   ```
   aws amscm get-change-type-version --change-type-id "ct-1d84keiri1jhg" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateKmsKeyAutoParams.json
   ```

1. CreateKmsKeyAutoParams ファイルを変更して保存します。以下に例を示します。

   **ユーザーまたはロールに、作成された CMK を復号するアクセス許可を付与します**。実行パラメータの例:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}”,
     "Name": "{{my-app-key-decrypt}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringDecryptPermissions": [
         "{{ARN:role/roleA}}",
         "{{ARN:user/userB}}",
         "{{ARN:role/instanceProfileA}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   結果のポリシーについては、「」を参照してください[IAM ユーザーまたはロールの CML で復号するアクセス許可を付与します](#kms-key-grant-cmk-decrypt-for-user-or-role)。

   **作成した CMK を使用して暗号化するアクセス許可をユーザーまたはロールに付与します**。実行パラメータの例:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encrypt}}",
     "Tags": [
       {
         "Key": "Name",
         "Value": "{{my-app-key}}"
       }
     ],
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringEncryptPermissions": [
         "{{ARN:role/roleA}}",
         "{{ARN:user/userB}}",
         "{{ARN:role/instanceProfileA}}"
       ],
       "Description": "KMS key for my-app"
     }
   }
   ```

   結果のポリシーについては、「」を参照してください[IAM ユーザーまたはロールの CML で暗号化するアクセス許可を付与します](#kms-key-grant-cmk-encrypt-for-user-or-role)。

   **作成した CMK を使用して許可を作成するアクセス許可をユーザー、ロール、またはアカウントに付与します**。実行パラメータの例:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-create-grants}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringGrantsPermissions": [
         "{{arn:aws:iam::999999999999:role/roleA}}",
         "{{888888888888}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   結果のポリシーについては、「」を参照してください[IAM ユーザー、ロール、またはアカウントの CMK を使用してグラントを作成するアクセス許可を付与します](#kms-key-create-cmk-grants-for-user-role-or-account)。

   **AWS KMS と統合された AWS のサービスのみが GRANT オペレーションを実行できるようにします**。実行パラメータの例:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-limit-to-services}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringGrantsPermissions": [
         "{{arn:aws:iam::999999999999:role/roleA}}"
       ],
       "LimitGrantsToAWSResources": "true",
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   結果のポリシーについては、「」を参照してください[AWS KMS と統合されている AWS のサービスにのみ GRANT オペレーションの実行を許可する](#kms-key-limit-grants-to-aws-services)。

   **暗号化オペレーションで暗号化コンテキストキーの使用を強制**します。実行パラメータの例:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encryption-keys}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "EnforceEncryptionContextKeys": "true",
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   結果のポリシーについては、「」を参照してください[暗号化オペレーションで暗号化コンテキストキーの使用を強制する](#kms-key-enforce-encryption-context-keys)。

   **暗号化オペレーションで暗号化コンテキストキーの特定のリストを適用**します。実行パラメータの例:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encryption-list}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "AllowedEncryptionContextKeys": [
         "{{Name}}",
         "{{Application}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   結果のポリシーについては、「」を参照してください[暗号化オペレーションで暗号化コンテキストキーの特定のリストを適用する](#kms-key-enforce-encryption-context-keys-list)。

   **作成された CMK へのアクセスを AWS サービスに許可します**。実行パラメータの例:

   ```
   {
     "Description" : "KMS key for my-app",
     "VpcId" : "VPC_ID",
     "Name" : "my-app-key-allow-aws-service-access",
     "StackTemplateId" : "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes" : 60,
     "Parameters" : {
         "AllowServiceRolesAccessKMSKeys": [
             "ec2.us-east-1.amazonaws.com",
             "ecr.us-east-1.amazonaws.com"
       ],
       "Description": "KMS key for my-app"
     }
   }
   ```

   結果のポリシーについては、「」を参照してください[作成された CMK へのアクセスを AWS サービスに許可する](#kms-key-allow-services)。

1. RFC テンプレート JSON ファイルをファイルに出力します。この例では、CreateKmsKeyAutoRfc.json:

   ```
   aws amscm create-rfc --generate-cli-skeleton > CreateKmsKeyAutoRfc.json
   ```

1. CreateKmsKeyAutoRfc.json ファイルを変更して保存します。たとえば、コンテンツを次のような内容に置き換えることができます。

   ```
   {
       "ChangeTypeId": "ct-1d84keiri1jhg",
       "ChangeTypeVersion": "1.0",
       "Title": "{{Create KMS Key}}"
   }
   ```

1. CreateKmsKeyAuto Rfc ファイルと CreateKmsKeyAutoParams ファイルを指定して、RFC を作成します。

   ```
   aws amscm create-rfc --cli-input-json file://CreateKmsKeyAutoRfc.json  --execution-parameters file://CreateKmsKeyAutoParams.json
   ```

   レスポンスで新しい RFC の ID を受け取り、それを使用して RFC を送信およびモニタリングできます。送信するまで、RFC は編集状態のままであり、開始されません。

#### ヒント
<a name="ex-kms-key-create-tip"></a>
+ この CT は、 で KMS キーを作成する CloudFormation スタックを作成します`DeletionPolicy: Retain`。設計上、スタックを削除した後も、作成された KMS キーは保持されます。KMS キーを削除する場合は、変更タイプ [ct-2zxya20wmf5bf](schemas.md#ct-2zxya20wmf5bf-schema-section)、管理 \| 高度なスタックコンポーネント \| KMS キー \| 削除 (マネージドオートメーション) を使用して RFC を作成します。
+ この変更タイプは ExecutionMode=Automated であるため、この変更タイプは AMS オペレーションによる手動レビューを必要とせず、KMS キー: 作成 (マネージドオートメーション) よりも迅速に実行する必要があります。ただし、異常な状況が発生した場合は、手動バージョンの方がうまく機能する可能性があります。[「KMS キー \| 作成 (マネージドオートメーション)](https://docs.aws.amazon.com/managedservices/latest/ctref/deployment-advanced-kms-key-create-review-required.html)」を参照してください。
+ この CT には、指定された AWS サービスに KMS キーへのアクセスを提供する新しいパラメータ AllowServiceRolesAccessKMSKeys があります。この変更は、Autoscaling グループサービスロールが、KMS キーに対するアクセス許可がないために、暗号化された EBS ボリュームを持つ EC2 インスタンスを起動できなかったために行われました。
+ AWS KMS キーの詳細については、[AWS Key Management Service (KMS)](https://aws.amazon.com/kms/)」、[AWS Key Management Service に関するよくある質問 FAQs](https://aws.amazon.com/kms/faqs/)」、および[AWS Key Management Service の概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)」を参照してください。

#### KMS キー 結果のポリシーを作成する
<a name="ex-kms-key-create-policies"></a>

KMS キーの作成方法に応じて、ポリシーを作成しました。これらのポリシー例は、 で提供されているさまざまな KMS キー作成シナリオと一致します[KMS キーを作成する](#ex-kms-key-create-col)。

##### IAM ユーザーまたはロールの CML で復号するアクセス許可を付与します
<a name="kms-key-grant-cmk-decrypt-for-user-or-role"></a>

結果のポリシー例では、IAM ユーザー、ロール、またはインスタンスプロファイルに、CMK を使用して復号するアクセス許可を付与します。

```
{
          "Sid": "Allow decrypt using the key",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                "arn:aws:iam::999999999999:role/roleA",
                "arn:aws:iam::999999999999:user/userB",
                "arn:aws:iam::999999999999:role/instanceProfileA"
              ]
          },
          "Action": [
              "kms:DescribeKey",
              "kms:Decrypt"
          ],
          "Resource": "*"
}
```

KMS キーでこのポリシーを作成するための実行パラメータの変更タイプについては、「」を参照してください。 [KMS キーを作成する](#ex-kms-key-create-col)

##### IAM ユーザーまたはロールの CML で暗号化するアクセス許可を付与します
<a name="kms-key-grant-cmk-encrypt-for-user-or-role"></a>

結果のポリシー例では、CMK を使用して暗号化するアクセス許可を IAM ユーザー、ロール、またはインスタンスプロファイルに付与します。

```
{
          "Sid": "Allow encrypt using the key",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                "arn:aws:iam::999999999999:role/roleA",
                "arn:aws:iam::999999999999:user/userB",
                "arn:aws:iam::999999999999:role/instanceProfileA"
              ]
          },
          "Action": [
              "kms:DescribeKey",
              "kms:Encrypt",
              "kms:ReEncrypt*",
              "kms:GenerateDataKey",
              "kms:GenerateDataKeyWithoutPlaintext"
          ],
          "Resource": "*"
}
```

KMS キーでこのポリシーを作成するための実行パラメータの変更タイプについては、「」を参照してください。 [KMS キーを作成する](#ex-kms-key-create-col)

##### IAM ユーザー、ロール、またはアカウントの CMK を使用してグラントを作成するアクセス許可を付与します
<a name="kms-key-create-cmk-grants-for-user-role-or-account"></a>

結果のポリシーの例:

```
{
          "Sid": "Allow grants",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                  "arn:aws:iam::999999999999:role/roleA",
                  "arn:aws:iam::888888888888:root"
              ]
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*"
}
```

KMS キーでこのポリシーを作成するための実行パラメータの変更タイプについては、「」を参照してください。 [KMS キーを作成する](#ex-kms-key-create-col)

##### AWS KMS と統合されている AWS のサービスにのみ GRANT オペレーションの実行を許可する
<a name="kms-key-limit-grants-to-aws-services"></a>

結果のポリシーの例:

```
{
          "Sid": "Allow grants",
          "Effect": "Allow",
          "Principal": {
              "AWS": "arn:aws:iam::999999999999:role/roleA"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*"
      },
      {
          "Sid": "Deny if grant is not for AWS resource",
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*",
          "Condition": {
              "Bool": {
                  "kms:GrantIsForAWSResource": "false"
              }
          }
      } }
}
```

KMS キーでこのポリシーを作成するための実行パラメータの変更タイプについては、「」を参照してください。 [KMS キーを作成する](#ex-kms-key-create-col)

##### 暗号化オペレーションで暗号化コンテキストキーの使用を強制する
<a name="kms-key-enforce-encryption-context-keys"></a>

結果のポリシーの例:

```
{
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:Decrypt",
              "kms:Encrypt",
              "kms:GenerateDataKey*",
              "kms:ReEncrypt"
          ],
          "Resource": "*",
          "Condition": {
              "Null": {
                  "kms:EncryptionContextKeys": "true"
              }
          }
}
```

KMS キーでこのポリシーを作成するための実行パラメータの変更タイプについては、「」を参照してください。 [KMS キーを作成する](#ex-kms-key-create-col)

##### 暗号化オペレーションで暗号化コンテキストキーの特定のリストを適用する
<a name="kms-key-enforce-encryption-context-keys-list"></a>

結果のポリシーの例:

```
{
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:Decrypt",
              "kms:Encrypt",
              "kms:GenerateDataKey*",
              "kms:ReEncrypt"
          ],
          "Resource": "*",
          "Condition": {
              "StringEquals": {
                  "kms:EncryptionContextKeys": [
                    "Name",
                    "Application"
                  ]
              }
          }
      }
```

KMS キーでこのポリシーを作成するための実行パラメータの変更タイプについては、「」を参照してください。 [KMS キーを作成する](#ex-kms-key-create-col)

##### 作成された CMK へのアクセスを AWS サービスに許可する
<a name="kms-key-allow-services"></a>

結果のポリシーの例:

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "*"
    },
    "Action": [
        "kms:ListGrants",
        "kms:CreateGrant",
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:ViaService":  [
              "ec2.us-west-2.amazonaws.com",
              "ecr.us-east-1.amazonaws.com"
            ],
            "kms:CallerAccount": "111122223333"
        }
    }
}
```

KMS キーでこのポリシーを作成するための実行パラメータの変更タイプについては、「」を参照してください。 [KMS キーを作成する](#ex-kms-key-create-col)

## 実行入力パラメータ
<a name="deployment-advanced-kms-key-create-input"></a>

実行入力パラメータの詳細については、「」を参照してください[変更タイプ ct-1d84keiri1jhg のスキーマ](schemas.md#ct-1d84keiri1jhg-schema-section)。

## 例: 必須パラメータ
<a name="deployment-advanced-kms-key-create-ex-min"></a>

```
{
  "DocumentName": "AWSManagedServices-CreateKMSKey",
  "Region": "us-east-1",
  "Parameters": {
    "Description": "Test key"
  }
}
```

## 例: すべてのパラメータ
<a name="deployment-advanced-kms-key-create-ex-max"></a>

```
{
  "DocumentName": "AWSManagedServices-CreateKMSKey",
  "Region": "us-west-2",
  "Parameters": {
    "Alias": "testkey",
    "EnableKeyRotation": true,
    "Description": "Test key for validation",
    "PendingWindow": 30,
    "IAMPrincipalsRequiringDecryptPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole"
    ],
    "IAMPrincipalsRequiringEncryptPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole"
    ],
    "IAMPrincipalsRequiringGrantsPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole",
      "987654321098"
    ],
    "LimitGrantsToAWSResources": true,
    "EnforceEncryptionContextKeys": true,
    "AllowedEncryptionContextKeys": [
      "App",
      "Environment"
    ],
    "AllowServiceRolesAccessKMSKeys": [
      "ec2.us-west-2.amazonaws.com",
      "s3.us-west-2.amazonaws.com"
    ],
    "Tags": [
      {
        "Key": "foo",
        "Value": "bar"
      }
    ]
  }
}
```