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

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

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

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

注記

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

インポートされたキーマテリアルは、AWS KMS キーストアの対称 KMS キーでのみサポートされます。非対称 KMS キーまたはカスタムキーストアの KMS キーではサポートされません。

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

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

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

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

  • キーマテリアルのオリジナルコピーを所有し、それを AWS 外に保存して、キーマテリアルのライフサイクル期間に耐久性を高め障害の復旧を行うには

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

インポートするキーマテリアルは 256 ビット対称暗号化キーである必要があります。

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

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

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

セキュリティ要件を満たすランダム性のソースを使用して、256 ビットのキー素材を生成する責任があります。

キー素材を変更できません

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

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

KMS キーでデータを暗号化した場合、他の KMS キーを使用して暗号化テキストを復号することはできません。これは、同じキーマテリアルを別の KMS キーにインポートする場合にも当てはまります。これは KMS キーのセキュリティ機能です。

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

携帯性またはエスクロー機能なし

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

また、AWS KMS 暗号化テキストを復号するために、AWS Encryption SDK または Amazon S3 クライアント側の暗号化などの AWS ツールを使用することもできません。

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

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

お客様は、キーマテリアルの全体的な可用性と耐久性に対して責任があります。AWS KMS は、インポートされたキーマテリアルの可用性を高めるために設計されています。ただし、このサービスでは、インポートされたキーマテリアルの耐久性は、ユーザーに代わって生成されたキーマテリアルと同じレベルでは維持されません。この差は、次の場合に有意義です。

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

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

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

このようなイベント後にキーマテリアルを復元するには、制御するシステムにキーマテリアルのコピーを保存する必要があります。次に、KMS キーに再インポートできます。

キーマテリアルをインポートするための権限

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

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

  • KMS: 作成キー (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: インポートのパラメータを取得 (キーポリシーまたは IAM ポリシー)

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

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

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

インポートされたキーマテリアルを再インポートするには、プリンシパルに KMS: getParametersforImport および KMS: ImportKeyMater ial 権限が必要です。

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

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

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

  1. キーマテリアルのない対称 KMS キーを作成する — キーマテリアルのインポートを開始するには、まず、オリジンEXTERNAL の対称 KMS キーを作成します。これは、キーマテリアルが AWS KMS の外部で生成されたことを示し、AWS KMS が KMS キーのキーマテリアルを生成することを防ぎます。後のステップで、この KMS キーに独自のキーマテリアルをインポートします。

  2. 公開鍵とインポートトークンのダウンロード — 手順 1 を完了した後、公開鍵とインポートトークンをダウンロードします。これらの項目は、AWS KMS へのキーマテリアルのインポートを保護します。

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

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

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 で、変更することはできません。インポートされたキーマテリアルを使用するように設計されたキーは、AWS KMS が提供するキーマテリアルを使用するキーに変換することはできません。

AWS KMS コンソールで、または AWS KMS API を使用して、インポートされたキーマテリアルを必要とする KMS キーを識別できます。コンソールまたは 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 またはエイリアスを選択します。次に、[ 暗号構成 ] タブを選択します。これらのタブは、[ 一般設定 ] セクションの下にあります。

  4. キーマテリアルに関する詳細情報を表示するには、[ キーマテリアル ] タブを選択します。このタブは、インポートされたキーマテリアルを持つ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" ] } }