AWS KMS キーにキーマテリアルをインポートする - AWS Key Management Service

AWS KMS キーにキーマテリアルをインポートする

提供するキーマテリアルで AWS KMS keys (KMS キー) を作成できます。

KMS キーは、暗号化キーの論理表現です。KMS キーのメタデータには、データを暗号化および復号するために使用されるキーマテリアルの ID が含まれます。KMS キーを作成すると、デフォルトで AWS KMS がその KMS キーのキーマテリアルを生成します。ただし、キーマテリアルを使用せずに KMS キーを作成し、独自のキーマテリアルをその KMS キーにインポートできます。この機能は、「キーの持ち込み」(BYOK) とも呼ばれます。

注記

AWS KMS では、暗号文が、インポートされたキーマテリアルを持つ KMS キーで暗号化された場合でも、AWS KMS の外部の AWS KMS 暗号文の復号はサポートされません。AWS KMS はこのタスクに必要な暗号文形式を公開せず、形式は予告なく変更される可能性があります。

インポートされたキーマテリアルは AWS KMS キーストア内の対称暗号化 KMS キー (マルチリージョン対称暗号化 KMS キーを含む) のみでサポートされます。非対称 KMS キーHMAC KMS キー、またはカスタムキーストア内の KMS キーではサポートされません。

インポートされたキーマテリアルを使用する場合、AWS KMS がそのコピーを使用できるようにしている間、キーマテリアルに対して責任を負います。そうする場合の理由として次のものが考えられます (複数が組み合わさる場合もあります)。

  • 要件を満たすエントロピーのソースを使用してキーマテリアルを生成したことを証明するため。

  • AWS サービスを使用してインフラストラクチャのキーマテリアルを使用する、および AWS KMS を使用して AWS 内のキーマテリアルのライフサイクルを管理するため。

  • AWS のキーマテリアルの有効期限を設定し、手動で削除しながらも、将来的に再び利用できるようにするため。これに対して、キー削除のスケジュールは、7 日から 30 日間の待機時間が必要となり、その後、削除された KMS キーは復元できません。

  • キーマテリアルのオリジナルコピーを所有し、それを AWS 外に保存して、キーマテリアルのライフサイクル期間に耐久性を高めディザスタリカバリに備えるには

インポートされたキーマテリアルは AWS KMS キーストア内の対称暗号化 KMS キー (マルチリージョン対称 KMS キーを含む) のみでサポートされます。非対称 KMS キーHMAC KMS キー、またはカスタムキーストア内の KMS キーではサポートされません。

インポートされたキーマテリアルを使用して、KMS キーの使用と管理を監視することができます。AWS KMS は、KMS キーを作成し、パブリックキーとインポートトークンをダウンロードし、キーマテリアルをインポートすると、AWS CloudTrail ログにエントリを記録します。AWS KMS は、インポートされたキーマテリアルを手動で削除した場合、または AWS KMS 期限切れのキーマテリアルを削除した場合にもエントリを記録します。

インポートされたキーマテリアルを持つ KMS キーと、AWS KMS で生成されたキーマテリアルを持つ KMS キーの重要な違いについては、「インポートしたキーマテリアルについて」を参照してください。

リージョン

AWS KMS がサポートする全ての AWS リージョン で、インポートされたキーマテリアルをサポートしています。中国リージョンでは、インポートされたキーマテリアルの要件が異なります。詳細については、「キーマテリアルのインポート ステップ 3: キーマテリアルを暗号化する」を参照してください。

インポートしたキーマテリアルについて

キーマテリアルを AWS KMS にインポートする前に、インポートされたキーマテリアルの以下の特性を理解する必要があります。

キーのマテリアルを生成する

お客様の責任において、セキュリティ要件を満たすランダムのソースを使用して、キーマテリアルを生成する必要があります。インポートするキーマテリアルは 256 ビット対称暗号化キーである必要があります。ただし、中国リージョンでは 128 ビット対称暗号化キーである必要があります。

キーマテリアルを削除できます。

インポートしたキーマテリアルを KMS キーから削除すると、KMS キーが使用できなくなることがあります。また、KMS キーにキーマテリアルをインポートすると、キーの有効期間を確認して、有効期間を設定することができます。有効期間が経過すると、AWS KMS キーマテリアルを削除します。キーマテリアルがない場合、KMS キーは暗号化オペレーションで使用することはできません。キーを復元するには、キーに同じキーマテリアルを再インポートする必要があります。

キーマテリアルを変更できません

KMS キーにキーマテリアルをインポートすると、KMS キーはキーマテリアルに永続的に関連付けられます。同じキーマテリアルを再インポートすることはできますが、別のキーマテリアルをその KMS キーにインポートすることはできません。また、インポートされたキーマテリアルを持つ KMS キーに対して、自動キーローテーションを有効にすることはできません。ただし、インポートされたキーマテリアルを持つ KMS キーを手動でローテーションすることはできます。

キーマテリアルの起源は変更できません

インポートされたキーマテリアルのために設計されている KMS キーには、変更することができない EXTERNALオリジンの値があります。インポートしたキーマテリアルの KMS キーを、AWS KMS を含めて、その他のソースのキーマテリアルを使用するように変換することはできません。

他の KMS キーでは復号できない

KMS キーでデータを暗号化すると、KMS キーとそのキーマテリアルに永続的に関連付けられます。同じキーマテリアルを持つ別の KMS キーを含めて、他の KMS キーを使用して復号することはできません。これは KMS キーのセキュリティ機能です。

唯一の例外はマルチリージョンキーであり、相互運用可能なように設計されています。詳細については、「」を参照してくださいインポートされたキーマテリアルを持つすべての KMS キーが相互運用できない理由

移植性またはエスクロー機能なし

AWS KMS が生成する暗号文は移植性ではありません。AWS KMS では、暗号文が、インポートされたキーマテリアルを持つ KMS キーで暗号化された場合でも、AWS KMS の外部の AWS KMS 暗号文の復号はサポートされません。AWS KMS はこのタスクに必要な暗号文形式を公開せず、形式は予告なく変更される可能性があります。

また、AWS Encryption SDKAmazonS3 クライアント側の暗号化などの AWS ツールを使用して、AWS KMS 暗号文を復号することはできません。

その結果、インポートされたキーマテリアルを含むキーを使用して、キーマテリアルへの条件付きアクセス権を持つ許可されたサードパーティーが AWS KMS の外部で特定の暗号文を復号できるキーエスクローの配置をサポートすることはできません。キーエスクローをサポートするには、AWS Encryption SDK を使用して、AWS KMS に依存しないキーでメッセージを暗号化します。

可用性と耐久性に責任があります

お客様は、キーマテリアルの全体的な可用性と耐久性に対して責任があります。AWS KMS は、インポートされたキーマテリアルの可用性を高めるために設計されています。ただし、AWS KMS では、インポートされたキーマテリアルの耐久性は、AWS KMS によって生成されたキーマテリアルと同じレベルでは維持されません。KMS キーから削除されたインポートされたキーマテリアルを復元するには、コントロールするシステムにキーマテリアルのコピーを保存する必要があります。その後、KMS キーに再インポートできます。

この相違は、次の場合に有意義です。

  • インポートされたキーマテリアルに有効期限を設定すると、 AWS KMS は有効期限が切れた後、キーマテリアルを削除します。AWS KMS は KMS キーやそのメタデータを削除しません。AWS KMS が KMS キーから生成したキーマテリアルを削除することはできません。また、ローテーションさせることはできますが、AWS KMS キーマテリアルを期限切れに設定することはできません。

  • インポートされたキーマテリアルを手動で削除する場合、AWS KMS は、キーマテリアルを削除しますが、KMS キーまたはそのメタデータは削除しません。一方、キー削除のスケジュールは、7 日から 30 日間の待機期間を必要とし、その後、AWS KMS は KMS キー、そのメタデータおよびキーマテリアルをすべて削除します。

  • 万一 AWS KMS に影響する特定のリージョン全体への障害が発生した場合には (全体の停電など)、AWS KMS は、インポートされたキーマテリアルを自動的に復元できません。ただし、AWS KMS では、KMS キーおよびメタデータを復元できます。

キーマテリアルをインポートするためのアクセス許可

インポートされたキーマテリアルを使用して KMS キーを作成および管理するには、このプロセスのオペレーションに対するアクセス許可が必要です。KMS キーの作成時、キーポリシーに kms:GetParametersForImportkms:ImportKeyMaterialkms:DeleteImportedKeyMaterial のアクセス許可を付与できます。この kms:ImportKeyMaterial アクセス許可は、キー管理者のデフォルトのアクセス許可には含まれないため、手動で追加する必要があります。

インポートされたキーマテリアルを持つ KMS キーを作成するには、プリンシパルに次の許可が必要です。

  • kms:CreateKey (IAM ポリシー)

    • インポートされたキーマテリアルを持つ KMS キーに対するこの許可を制限するには、EXTERNAL の値を持つ kms:KeyOrigin ポリシー条件を使用します。

      { "Version": "2012-10-17", "Statement": { "Sid": "IAM policy to create KMS keys with no key material" "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KMSAdminRole" }, "Action": "kms:CreateKey", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL" } } }
  • KMS:GetParametersForImport (キーポリシーまたは IAM ポリシー)

    • 特定のラッピングアルゴリズムとラッピングキー仕様を使用する要求にこのアクセス許可を制限するには、KMS: WrappingAlgorithm および KMS: WrappingKeySpec ポリシー条件を使用します。

  • KMS:ImportKeyMaterial (キーポリシーまたは IAM ポリシー)

    • 有効期限が切れるキーマテリアルを許可または禁止し、有効期限を制御するには、KMS:ExpirationModel および KMS:Validto ポリシー条件を使用します。

インポートされたキーマテリアルを再インポートするには、プリンシパルに KMS:getParametersforImport および KMS:ImportKeyMaterial アクセス許可が必要です。

インポートされたキーマテリアルを削除するには、プリンシパルに KMS:DeleteImportedKeyMaterial アクセス許可が必要です。

キーマテリアルのインポート方法

次に、AWS KMS にキーマテリアルをインポートする手順の概要を説明します。この手順の各ステップの詳細については、該当するトピックを参照してください。

  1. キーマテリアルを持たない対称暗号化 KMS キーを作成する – キーの仕様は SYMMETRIC_DEFAULT、オリジンは EXTERNAL である必要があります。EXTERNAL のキーオリジンは、キーがインポートされたキーマテリアル用に設計されていることを示しており、AWS KMS は KMS キーのキーマテリアルを生成することができません。後のステップで、この KMS キーに独自のキーマテリアルをインポートします。

  2. パブリックキーとインポートトークンのダウンロード — 手順 1 を完了した後、パブリックキーとインポートトークンをダウンロードします。これらの項目は、AWS KMS にインポートしている間、キーマテリアルを保護します。

  3. キーマテリアルの暗号化 — 手順 2 でダウンロードしたパブリックキーを使用して、独自のシステムで作成したキーマテリアルを暗号化します。

  4. キーマテリアルのインポート — 手順 3 で作成した暗号化されたキーマテリアルと、手順 2 でダウンロードしたインポートトークンをアップロードします。

    インポートオペレーションが正常に完了すると、KMS キーのキーステータスは PendingImport から Enabled に変化します。これで、KMS キーを暗号化オペレーションで使用できます。

AWS KMS は、KMS キーの作成パブリックキーとインポートトークンのダウンロードキーマテリアルのインポートをする際に、AWS CloudTrail ログにエントリを記録します。AWS KMS も、インポートされたキーマテリアルの削除または AWS KMS が有効期限切れのキーマテリアルの削除をする際にエントリを記録します。

キーマテリアルの再インポート方法

インポートされたキーマテリアルを持つ KMS キーを管理する場合、キーマテリアルの有効期限が切れたか、キーマテリアルが誤って削除または失われたために、キーマテリアルを再インポートする必要がある場合があります。

最初に KMS キーにインポートされたのと同じキーマテリアルを再インポートする必要があります。別のキーマテリアルを KMS キーにインポートすることはできません。また、AWS KMS はキーマテリアルなしで作成された KMS キーのキーマテリアルを作成することはできません。

キーマテリアルを再インポートするには、次のような例外を除いて、最初にキーマテリアルのインポートに使用したのと同じ手順を使用します。

  • 新しい KMS キーを作成する代わりに、既存の KMS キーを使用します。インポートの手順のステップ 1 はスキップできます。

  • KMS キーがインポートされたキーマテリアルに関連付けられている場合、キーマテリアルを再インポートする前に、既存のインポートされたキーマテリアルを削除する必要があります。

KMS キーにキーマテリアルをインポートするたびに、KMS キーの新しいラップキーおよびインポートトークンをダウンロードして使用する必要があります。このラップの手順は、キーマテリアルの内容には影響しません。異なるラップキー (および異なるインポートトークン) を使用して同じキーマテリアルをインポートすることができます。

インポートされたキーマテリアルを持つKMS キーを識別する方法

キーマテリアルなしで KMS キーを作成する場合、KMS キーの Origin プロパティの値は EXTERNAL であり、変更することはできません。キーステータスと違って、Origin の値は、キーマテリアルの有無に依存しません。

EXTERNAL オリジン値を使用して、インポートされたキーマテリアル用に設計された KMS キーを識別することができます。AWS KMS コンソールでキーオリジンを検索するか、DescribeKey オペレーションを使用できます。コンソールまたは API を使用して、有効期限が切れるかどうか、いつ失効するかなどの、キーマテリアルのプロパティを表示することもできます。

インポートされたキーマテリアルで KMS キーを識別するには (コンソール)

  1. AWS KMS コンソール (https://console.aws.amazon.com/kms) を開きます。

  2. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  3. 次のいずれかの方法を使用して、KMS キーの Origin プロパティを表示します。

    • KMS キーテーブルに [Origin] (オリジン) 列を追加するには、右上隅の、[Settings] (設定) アイコンを選択します。[Origin] (オリジン)、[Confirm] (確認) の順に選択します。オリジン列では、EXTERNAL のオリジンプロパティ値を持つ KMS キーを簡単に識別できます。

    • 特定の KMS キーの Origin プロパティ値を検索するには、KMS キーのキー ID またはエイリアスを選択します。次に、[Cryptographic configuration] (暗号の設定) タブを選択します。これらのタブは、[General configuration] (一般設定) セクションの下にあります。

  4. キーマテリアルに関する詳細情報を表示するには、[Key material] (キーマテリアル) タブを選択します。このタブは、インポートされたキーマテリアルを持つKMS キーのみの詳細ページに表示されます。

インポートされたキーマテリアルを持つKMS キーを識別するには (AWS KMS API)

DescribeKey オペレーションを使用します。レスポンスには、次の例に示すように KMS キーの Origin プロパティ、有効期限モデル、有効期限日が含まれます。

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Origin": "EXTERNAL", "ExpirationModel": "KEY_MATERIAL_EXPIRES" "ValidTo": 1568894400.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": 1568289600.0, "Enabled": false, "MultiRegion": false, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }