

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

# の使用 AWS KMS keys
<a name="kms-keys"></a>

 AWS KMS key は、1 つ以上のハードウェアセキュリティモジュール (HSM) バッキングキー (HBKs。このトピックでは、KMS キーの作成方法、キーマテリアルのインポート方法、および KMS キーの有効化、無効化、ローテーション、削除方法について説明します。

**注記**  
AWS KMS は、*カスタマーマスターキー (CMK)* という用語を *AWS KMS key*および *KMS キー*に置き換えます。この概念に変更はありません。重大な変更を防ぐために、 AWS KMS は、この用語のいくつかのバリエーションを保持しています。

この章では、次の図に示すように、作成から削除までの KMS キーのライフサイクルについて説明します。

![\[KMS キーのライフサイクル。\]](http://docs.aws.amazon.com/ja_jp/kms/latest/cryptographic-details/images/keystate.png)


**Topics**
+ [CreateKey の呼び出し](create-key.md)
+ [キーマテリアルのインポート](importing-key-material.md)
+ [キーの有効化と無効化](enable-and-disable-key.md)
+ [キーの削除](key-deletion.md)
+ [キーマテリアルのローテーション](rotate-customer-master-key.md)

# CreateKey の呼び出し
<a name="create-key"></a>

 AWS KMS key は、 [https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) API コールの呼び出しの結果として生成されます。

[`CreateKey` リクエスト構文](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#API_CreateKey_RequestSyntax)のサブセットを次に示します。

```
{
  "Description": "string",
  "KeySpec": "string",
  "KeyUsage": "string",
  "Origin": "string";
  "Policy": "string"
}
```

リクエストは以下のデータを JSON 形式で受け入れます。

**説明**  
(オプション) キーの説明。キーがタスクに適しているかどうかを判断するのに役立つ説明にすることをお勧めします。

**KeySpec**  
作成する KMS キーのタイプを指定します。デフォルト値 SYMMETRIC\$1DEFAULT は、対称暗号化 KMS キーを作成します。このパラメーターは、対称暗号化キーでオプションですが、他のすべてのキー仕様では必須です。

**KeyUsage**  
キーの用途を指定します。有効な値は `ENCRYPT_DECRYPT`、`SIGN_VERIFY`、または `GENERATE_VERIFY_MAC` です。デフォルト値は `ENCRYPT_DECRYPT` です。このパラメーターは、対称暗号化キーでオプションですが、他のすべてのキー仕様では必須です。

** オリジン**  
(オプション) KMS キーのキーマテリアルのソースを指定します。デフォルト値は です。これは`AWS_KMS`、 が KMS キーのキーマテリアル AWS KMS を生成および管理していることを示します。その他の有効な値には`EXTERNAL`、[インポートされたキーマテリアルのキーマテリアルなしで作成された KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)を表`AWS_CLOUDHSM`し、ユーザーが管理する AWS CloudHSM クラスターにバックアップされた[カスタムキーストア](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html)に KMS キーを作成する が含まれます。

**ポリシー**  
(オプション) キーにアタッチするポリシー。ポリシーが省略された場合、キーは次に示すデフォルトのポリシーで作成され、ルートアカウントと AWS KMS プリンシパルを持つ IAM ユーザーがキーを管理できるようになります。

ポリシーの詳細については、「AWS Key Management Service デベロッパーガイド」の「[AWS KMSのキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

`CreateKey` リクエストはキー ARM を含む[レスポンス](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#API_CreateKey_ResponseSyntax)を返します。

```
arn:<partition>:kms:<region>:<account-id>:key/<key-id>
```

`Origin` が `AWS_KMS`の場合、ARN が作成された後、認証されたセッションで、 AWS KMS HSM に HSM バッキングキー (HBK) のプロビジョニングがリクエストされます。HBK は、KMS キーのキー ID に関連付けられている 256 ビットのキーです。これは HSM 上でのみ生成でき、HSM 境界の外側にクリアテキストでエクスポートされないように設計されています。HBK は、現在のドメインキー DK0 で暗号化されます。これらの暗号化された HBK は、暗号化キートークン (EKT) と呼ばれます。HSM はさまざまなキーラッピング方法を使用するように設定できますが、現在の実装では、Galois Counter Mode (GCM) の AES-256 と呼ばれる認証された暗号化方式が使用されます。この認証済み暗号化モードでは、クリアテキストでエクスポートされたキートークンのメタデータを保護できます。

これは、スタイル上は次のように表されます。

```
EKT = Encrypt(DK0, HBK)
```

KMS キーとその後の HBK には、KMS キーに設定された許可ポリシーと、関連付けられた HBK の暗号化保護という 2 つの基礎的な保護方法が用意されています。残りのセクションでは、暗号化保護と の管理機能のセキュリティについて説明します AWS KMS。

ARN に加えて、キーのエイリアスを作成することで、わかりやすい名前を作成して KMS キーに関連付けることができます。エイリアスを KMS キーに関連付けると、エイリアスを使用して、暗号化操作で KMS キーを識別できます。詳細については、AWS Key Management Service デベロッパーガイドの「[エイリアスの使用](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html)」を参照してください。

KMS キーの使用には、複数のレベルの認可が必要です。 AWS KMS では、暗号化されたコンテンツと KMS キーの認可ポリシーを別々にできます。例えば、 AWS KMS エンベロープで暗号化された Amazon Simple Storage Service (Amazon S3) オブジェクトは、Amazon S3 バケットのポリシーを継承します。ただし、必要な暗号化キーへのアクセスは、KMS キーのアクセスポリシーによって決まります。KMS キーの認可の詳細については、*AWS Key Management Service デベロッパーガイド*の「[AWS KMSの認証とアクセスコントロール](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)」を参照してください。

# キーマテリアルのインポート
<a name="importing-key-material"></a>

AWS KMS は、HBK に使用される暗号化マテリアルをインポートするためのメカニズムを提供します。[CreateKey の呼び出し](create-key.md)で説明しているとおり、`Origin` を `EXTERNAL` に設定して CreateKey コマンドを使用すると、基になる HBK を含まない論理 KMS キーが作成されます。暗号化マテリアルは、[https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) API コールを使用してインポートする必要があります。この機能を使用して、暗号マテリアルのキーの作成と耐久性を制御できます。この機能を使用する場合は、ご使用の環境におけるこれらのキーの取り扱いおよび耐久性に非常に注意することをお勧めします。キーマテリアルのインポートに関する詳細と推奨事項については、*AWS Key Management Service デベロッパーガイド*の「[Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)」を参照してください。

## ImportKeyMaterial 呼び出し
<a name="importkeymaterial"></a>

`ImportKeyMaterial` リクエストで、HBK に必要な暗号化マテリアルがインポートされます。暗号化マテリアルは 256 ビット対称キーである必要があります。これは、最近の [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html) リクエストで返されたパブリックキーを使用して、`WrappingAlgorithm` で指定されたアルゴリズムを使用して暗号化する必要があります。

[`ImportKeyMaterial` リクエスト](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#API_ImportKeyMaterial_RequestSyntax)は次の引数を取ります。

```
{
  "EncryptedKeyMaterial": blob,
  "ExpirationModel": "string",
  "ImportToken": blob,
  "KeyId": "string",
  "ValidTo": number
}
```

**EncryptedKeyMaterial**  
`GetParametersForImport` リクエストで指定されたラッピングアルゴリズムを使用して、そのリクエストで返されたパブリックキーで暗号化されたインポート済みキーマテリアル。

**ExpirationModel**  
キーマテリアルの有効期限が切れているかどうかを指定します。この値が `KEY_MATERIAL_EXPIRES` の場合は、`ValidTo` パラメータに有効期限が切れた日を含める必要があります。この値が `KEY_MATERIAL_DOES_NOT_EXPIRE` の場合は、`ValidTo` パラメータを含めないでください。有効な値は `"KEY_MATERIAL_EXPIRES"` および `"KEY_MATERIAL_DOES_NOT_EXPIRE"` です。

**ImportToken**  
パブリックキーを提供した同じ `GetParametersForImport` リクエストによって返されるインポートトークン。

**KeyId**  
インポートされたキーマテリアルに関連付けられる KMS キー。KMS キーの `Origin` は、`EXTERNAL` である必要があります。  
指定した KMS キーでインポート済みのキーマテリアルを削除して同じキーを再度インポートできますが、その他のキーマテリアルの KMKMS キーをインポートすることや関連付けることはできません。

**ValidTo**  
(オプション) インポートされたキーマテリアルの有効期限が切れる時刻。キーマテリアルが有効期限切れになると、 AWS KMS はキーマテリアルを削除し、KMS キーは使用不可能になります。このパラメータは、`ExpirationModel` の値が `KEY_MATERIAL_EXPIRES` の場合に必要です。それ以外の場合は、無効です。

リクエストが成功すると、KMS キーが指定されていれば、指定された有効期限 AWS KMS まで 内で使用できます。インポートされたキーマテリアルの有効期限が切れると、EKT は AWS KMS ストレージレイヤーから削除されます。

# キーの有効化と無効化
<a name="enable-and-disable-key"></a>

KMS キーを無効にすることで、キーが暗号化オペレーションで使用されるのを防ぎます。KMS キーに関連付けられているすべての HBK を使用する機能が停止されます。有効にすると、HBK と KMS キーの使用が復元されます。[有効化](https://docs.aws.amazon.com/kms/latest/APIReference/API_Enable.html)と[無効化](https://docs.aws.amazon.com/kms/latest/APIReference/API_Disable.html)は、KMS キーのキー ID またはキー AEN のみを取るシンプルなリクエストです。

# キーの削除
<a name="key-deletion"></a>

承認済みユーザーは、[https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) API を使用して、KMS キーおよび関連付けられたすべての HBK の削除をスケジュールできます。これは本質的に破壊的な操作であり、 からキーを削除するときは注意が必要です AWS KMS。 は、KMS キーを削除するときに 7 日間の最小待機時間 AWS KMS を適用します。待機期間中、キーは無効状態になり、キー状態は**削除保留中**になります。暗号化操作にこのキーを使用するすべての呼び出しは失敗します。ScheduleKeyDeletion は次のオプションの引数を取ります。

```
{
  "KeyId": "string",
  "PendingWindowInDays": number
}
```

**KeyId**  
削除する KMS キーの一意の識別子。この値を指定するには、一意のキー ID または KMS キーのキー ARN を使用します。

** PendingWindowInDays**  
(オプション) 待機期間 (日)。この値はオプションです。範囲は 7 ～ 30 日で、デフォルト値は 30 日です。待機期間が終了すると、 は KMS キーと関連するすべての HBKs AWS KMS を削除します。

# キーマテリアルのローテーション
<a name="rotate-customer-master-key"></a>

承認済みユーザーは、カスタマー管理の KMS キーの自動年次ローテーションを有効にできます。 AWS マネージドキー は、毎年ローテーションされます。

KMS キーがローテーションされると、新しい HBK が作成され、すべての新しい暗号化リクエストのキーマテリアルの現在のバージョンとしてマークされます。HBK の以前のすべてのバージョンは、この HBK バージョンを使用して暗号化された暗号文を復号化するために引き続き永続的に使用できます。 AWS KMS は KMS キーで暗号化された暗号文を保存しないため、古いローテーションされた HBK で暗号化された暗号文では、HBK が復号化する必要があります。[https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) API を使用して KMS キーの新しい HBK で暗号文を再度暗号化すること、またはプレーンテキストを公開することなく別の KMS キーで暗号文を再度暗号化することができます。

キーローテーションの有効化と無効化詳細については、AWS Key Management Service デベロッパーガイドの「[AWS KMS キーのローテーション](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)」を参照してください。