

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

# KMS キーを作成する
<a name="create-keys"></a>

は、 AWS KMS keys で作成することも AWS マネジメントコンソール、[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションまたは [AWS::KMS::Key AWS CloudFormation リソース](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html)を使用して作成することもできます。このプロセスでは、KMS キーのキーポリシーも設定します。これはいつでも変更できます。また、作成する KMS キーのタイプを定義する以下の値も選択します。KMS キー作成後にこれらのプロパティを変更することはできません。

**KMS キータイプ**  
*キータイプ*は、作成される暗号化キーのタイプを決定するプロパティです。 は、データを保護するために 3 つのキータイプ AWS KMS を提供します。  
+ Advanced Encryption Standard (AES) 対称キー

  AES の Galois Counter Mode (GCM) モードで使用される 256 ビットキーで、4KB 未満のサイズのデータの認証付き暗号化/復号化を提供します。これは最も一般的なタイプのキーであり、ユーザーに代わってデータを暗号化 AWS のサービス するアプリケーションおよび で使用される他のデータ暗号化キーを保護するために使用されます。
+ RSA、楕円曲線、または SM2 (中国リージョンのみ) の非対称キー

  これらのキーはさまざまなサイズで利用可能で、多くのアルゴリズムをサポートしています。選択したアルゴリズムに応じて、暗号化と復号化、署名と検証、もしくは共有シークレットの取得のいずれかのオペレーションに使用できます。
+ Hash-based Message Authentication Code (HMAC) オペレーションを実行するための対称キー

  これらのキーは、署名および検証オペレーションに使用される 256 ビットのキーです。

  KMS キーは、サービスからプレーンテキストでエクスポートすることはできません。これらはサービスに使用されるハードウェアセキュリティモジュール (HSM) により生成され、そのモジュール内でのみ使用できます。これは、キーが侵害されないように AWS KMS するための の基本的なセキュリティプロパティです。

** キーの用途**  
「キーの使用」は、キーがサポートする暗号化オペレーションを決定するプロパティです。KMS キーには、`ENCRYPT_DECRYPT`、`SIGN_VERIFY`、`GENERATE_VERIFY_MAC`、`KEY_AGREEMENT` のいずれかのキー用途を指定できます。各 KMS キーに指定できるキー用途は 1 つだけです。これは、[米国国立標準技術研究所 (NIST) の「Special Publication 800-57 Recommendations for Key Management](https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final)」のセクション 5.2 の「Key usage」に従った主要な使用のベストプラクティスに従います。KMS キーを複数タイプのオペレーションに使用すると、両方のオペレーションの成果が攻撃に対してより脆弱になります。

** キー仕様**  
*キー仕様*は、キーの暗号化設定を表すプロパティです。キー仕様の意味は、キータイプによって異なります。  
KMS キーにおいて、*キー仕様*はその KMS キーが対称か非対称かを決定します。また、そのキーマテリアルのタイプとサポートするアルゴリズムも決定します。  
デフォルトのキースペックである [SYMMETRIC\_DEFAULT](symm-asymm-choose-key-spec.md#symmetric-cmks) は、256 ビット対称暗号化キーを表します。サポートされているすべてのキー仕様の詳細については、「[キー仕様のリファレンス](symm-asymm-choose-key-spec.md)」を参照してください。

** キーマテリアルのオリジン**  
*キーマテリアルのオリジン*は、KMS キーのキーマテリアルのソースを識別する KMS キープロパティです。KMS キーの作成時にキーマテリアルのオリジンを選択し、それを変更することはできません。キーマテリアルのソースは、KMS キーのセキュリティ、耐久性、可用性、レイテンシー、スループット特性に影響します。  
各 KMS キーには、メタデータにキーマテリアルへの参照が含まれています。対称暗号化 KMS キーのキーマテリアルのオリジンは、異なる可能性があります。 AWS KMS が生成するキーマテリアル、または[カスタムキーストア](key-store-overview.md#custom-key-store-overview)内で生成されるキーマテリアルを使用するか、もしくは[独自のキーマテリアルをインポートすることができます](importing-keys.md)。  
デフォルトでは、各 KMS キーに一意のキーマテリアルがあります。ただし、同じキーマテリアルで[マルチリージョンキー](multi-region-keys-overview.md)のセットを作成することができます。  
KMS キーには、、 `EXTERNAL` ([インポートされたキーマテリアル](importing-keys.md))`AWS_KMS`、 `AWS_CLOUDHSM` (キー[ストアの KMS キー）、または (外部 AWS CloudHSM](keystore-cloudhsm.md)キーストアの KMS キー) のいずれかのキーマテリアルオリジン値を指定できます。 `EXTERNAL_KEY_STORE` [外部キーストア](keystore-external.md)

**Topics**
+ [KMS キーを作成するためのアクセス許可](#create-key-permissions)
+ [作成する KMS キーのタイプの選択](#symm-asymm-choose)
+ [対称暗号化 KMS キーを作成する](create-symmetric-cmk.md)
+ [非対称 KMS キーを作成する](asymm-create-key.md)
+ [HMAC KMS キーを作成する](hmac-create-key.md)
+ [マルチリージョンのプライマリキーを作成する](create-primary-keys.md)
+ [マルチリージョンのレプリカキーを作成する](multi-region-keys-replicate.md)
+ [インポートされたキーマテリアルを持つ KMS キーの作成](importing-keys-conceptual.md)
+ [キーストアに KMS AWS CloudHSM キーを作成する](create-cmk-keystore.md)
+ [外部キーストアで KMS キーを作成する](create-xks-keys.md)

## KMS キーを作成するためのアクセス許可
<a name="create-key-permissions"></a>

コンソールで、または API を使用して KMS キーを作成するには、IAM ポリシーで次のアクセス許可を持っている必要があります。可能な限り、[条件キー](policy-conditions.md)を使用してアクセス許可を制限します。例えば、IAM ポリシーで [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec) 条件キーを使用して、プリンシパルが対称暗号化キーのみを作成できるようにすることが可能です。

キーを作成するプリンシパルの IAM ポリシーの例については、「[KMS キーの作成をユーザーに許可する](customer-managed-policies.md#iam-policy-example-create-key)」を参照してください。

**注記**  
タグとエイリアスを管理する許可をプリンシパルに付与する場合は注意が必要です。タグまたはエイリアスを変更すると、カスタマーマネージドキーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「[の ABAC AWS KMS](abac.md)」を参照してください。
+ [kms:CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) は必須です。
+ [kms:CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)は、新しい KMS キーごとにエイリアスが必要なコンソールで、KMS キーを作成するために必要です。
+ [kms:TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) は、KMS キーの作成中にタグを追加するために必要です。
+ [iam:CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) は、マルチリージョンのプライマリキーを作成するために必要です。詳細については、「[マルチリージョンキーへのアクセスを制御する](multi-region-keys-auth.md)」を参照してください。

[kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) アクセス許可は、KMS キーの作成には必要ありません。`kms:CreateKey` アクセス許可には、初期キーポリシーを設定する許可が含まれています。ただし、KMS キーの作成時にこのアクセス許可をキーポリシーに追加して、KMS キーへのアクセスを制御できるようにする必要があります。代替方法として、[BypassLockoutSafetyCheck](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-BypassPolicyLockoutSafetyCheck) パラメータを使用します。これは推奨されていません。

KMS キーは、それらが作成された AWS アカウントに属します。KMS キーを作成する IAM ユーザーはキー所有者とはみなされないため、作成した KMS キーを使用または管理するためのアクセス許可が自動的に付与されません。他のプリンシパルと同様に、キー作成者は、キーポリシー、IAM ポリシー、またはグラントを使用してアクセス許可を取得する必要があります。ただし、`kms:CreateKey` アクセス許可を持つプリンシパルは、初期キーポリシーを設定し、キーを使用または管理するためのアクセス許可を自分自身に付与できます。

## 作成する KMS キーのタイプの選択
<a name="symm-asymm-choose"></a>

作成する KMS キーのタイプは、予定される KMS キーの*用途*、セキュリティ要件、および認可要件に大きく依存します。KMS キーのキータイプとキー用途によって、そのキーで実行できる暗号化オペレーションが決まります。キーの用途は、各 KMS キーに 1 つしかありません。KMS キーを複数タイプのオペレーションに使用すると、すべてのオペレーションの成果が攻撃に対してより脆弱になります。

プリンシパルが特定のキーの用途だけに KMS キーを作成できるようにするには、[kms:KeyUsage](conditions-kms.md#conditions-kms-key-usage) 条件キーを使用します。`kms:KeyUsage` 条件キーを使用して、プリンシパルがキーの用途に基づいて KMS キーの API オペレーションを呼び出せるようにすることもできます。例えば、キーの用途が SIGN\_VERIFY である場合にのみ、KMS キーを無効にするアクセス許可を許可できます。

以下のガイダンスを使用し、ユースケースに基づいて必要なタイプの KMS キーを決定します。

**データの暗号化と復号**  
データの暗号化と復号を必要とするほとんどのユースケースには、[対称 KMS キー](symm-asymm-choose-key-spec.md#symmetric-cmks)を使用します。 AWS KMS が使用する対称暗号化アルゴリズムは、高速かつ効率的で、データの機密性と信頼性を保証します。これは、[暗号化コンテキスト](encrypt_context.md)として定義された追加認証データ (AAD) による認証された暗号化をサポートします。このタイプの KMS キーでは、暗号化されたデータの送信者と受信者の両方が呼び出す有効な AWS 認証情報を持っている必要があります AWS KMS。  
を呼び出すことができないユーザーが の外部 AWS で暗号化を必要とするユースケースでは AWS KMS、[非対称 KMS キー](symmetric-asymmetric.md)が適しています。非対称 KMS キーのパブリックキーを配信して、これらのユーザーがデータを暗号化できるようにします。また、そのデータを復号する必要があるアプリケーションは、 AWS KMS内で非対称 KMS キーのプライベートキーを使用できます。

**メッセージの署名および署名の検証**  
メッセージに署名して、署名を検証するには、[非対称 KMS キー](symmetric-asymmetric.md)を使用する必要があります。RSA キーペア、楕円曲線 (ECC) キーペア、ML-DSA キーペア、または SM2 キーペア (中国リージョンのみ) を表す[キー仕様](symm-asymm-choose-key-spec.md)で KMS キーを使用できます。選択するキー仕様は、使用する署名アルゴリズムによって決まります。ECC キーペアがサポートする ECDSA 署名アルゴリズムは、RSA 署名アルゴリズムよりも推奨されます。RSA キーまたは ECC キーからポスト量子キーに移行するときは、ML-DSA キーペアを使用します。ただし、 AWS外部で署名を検証するユーザーをサポートするには、特定のキー仕様と署名アルゴリズムを使用することが必要になる場合があります。

**非対称キーペアを用いた暗号化**  
非対称キーペアを用いてデータを暗号化するには、[RSA キー仕様](symm-asymm-choose-key-spec.md#key-spec-rsa-encryption)または [SM2 キー仕様](symm-asymm-choose-key-spec.md#key-spec-sm) (中国リージョンのみ) の[非対称 KMS キー](symmetric-asymmetric.md)を使用する必要があります。KMS キーペアのパブリックキーを使用して、 AWS KMS でデータを暗号化するには、[Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) オペレーションを使用します。[パブリックキーをダウンロード](download-public-key.md)して、外部でデータを暗号化する必要がある当事者と共有することもできます AWS KMS。  
非対称 KMS キーのパブリックキーをダウンロードする場合、 AWS KMSの外部で使用できます。ただし、KMS キーを保護するセキュリティコントロールの対象ではなくなりました AWS KMS。たとえば、パブリック AWS KMS キーの使用を制御するためにキーポリシーや許可を使用することはできません。また、 AWS KMS がサポートする暗号化アルゴリズムを使用して、キーが暗号化と復号にのみ使用されるかどうかを制御することもできません。詳細については、「[パブリックキーのダウンロードに関する特別な考慮事項](offline-public-key.md#download-public-key-considerations)」を参照してください。  
外部でパブリックキーで暗号化されたデータを復号するには AWS KMS、[Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションを呼び出します。キー用途を `SIGN_VERIFY` に設定して KMS キーからのパブリックキーでデータを暗号化した場合、`Decrypt` オペレーションは失敗します。また、選択したキー仕様で をサポート AWS KMS していないアルゴリズムを使用して暗号化された場合も失敗します。主なキー仕様とサポートされているアルゴリズムの詳細については、「[キー仕様のリファレンス](symm-asymm-choose-key-spec.md)」を参照してください。  
これらのエラーを回避するには、 の外部でパブリックキーを使用するすべてのユーザーがキー設定を保存 AWS KMS する必要があります。 AWS KMS コンソールと [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) レスポンスは、パブリックキーを共有するときに含める必要がある情報を提供します。

**共有シークレットを取得する**  
共有シークレットを取得するには、[NIST 標準の楕円曲線](symm-asymm-choose-key-spec.md#key-spec-ecc)または [SM2](symm-asymm-choose-key-spec.md#key-spec-sm) (中国リージョンのみ) キーマテリアルを持つ KMS キーを使用します。 は[、楕円曲線のパブリック/プライベートキーペアから共有シークレットを取得することで、楕円曲線暗号コファクタ Diffie-Hellman Primitive](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60) (ECDH) AWS KMS を使用して 2 つのピア間でキーアグリーメントを確立します。[ DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html) オペレーションが返す raw 共有シークレットを使用して、2 つの当事者間で送信されるデータを暗号化および復号できる対称キーを導き出すか、HMACs を生成して検証できます。raw 共有シークレットを使用して対称キーを導き出す場合は、[キー導き出しに関する NIST の推奨事項](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf)に従う AWS KMS ことをお勧めします。

**HMAC コードを生成して検証する**  
Hash-based Message Authentication Code を生成して検証するには、HMAC KMS キーを使用します。で HMAC キーを作成すると AWS KMS、 はキーマテリアル AWS KMS を作成および保護し、キーに正しい MAC アルゴリズムを使用するようにします。HMAC コードは、擬似乱数としての使用、および対称署名とトークン化のための特定のシナリオでの使用も可能です。  
HMAC KMS キーは対称キーです。 AWS KMS コンソールで HMAC KMS キーを作成するときは、`Symmetric` キータイプを選択します。

** AWS サービスで を使用する**  <a name="cmks-aws-service"></a>
[AWS と統合された サービス AWS KMS](service-integration.md)で使用する KMS キーを作成するには、データを暗号化する service. AWS services のドキュメントで[対称暗号化 KMS キー](symm-asymm-choose-key-spec.md#symmetric-cmks)が必要です。

これらの考慮事項に加えて、キー仕様が異なる KMS キーの暗号化オペレーションでは、料金とリクエストクォータも異なります。 AWS KMS の料金については、[AWS Key Management Service の料金](https://aws.amazon.com/kms/pricing/)を参照してください。リクエストクォータの詳細については、「[クォータのリクエスト](requests-per-second.md)」を参照してください 。