AWS Key Management Service
開発者ガイド

AWS Key Management Service (AWS KMS) へのキーマテリアルのインポート

カスタマーマスターキー (CMK) は AWS KMS のマスターキーの論理的な表現です。作成日、説明、およびキーステータスを含むマスターキーの識別子や他のメタデータに加えて、CMK は、データの暗号化と復号化に使用されたキーマテリアルを含みます。CMK を作成すると、デフォルトでは AWS KMS がその CMK のキーマテリアルを生成します。ただし、CMK をキーマテリアルなしで作成し、独自のキーマテリアルをその CMK にインポートできます。

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

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

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

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

  • キーマテリアルのオリジナルコピーを所有し、キーマテリアルの全ライフサイクルでの耐久性を高めるためおよび災害対策としてオリジナルコピーを AWS の外部に保持するため。

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

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

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

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

キー生成をセキュリティで保護

お客様の責任において、セキュリティ要件を満たすランダムのソースを使用して、キーマテリアルを生成する必要があります。

CMK ごとに 1 つのキー

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

暗号化テキストあたり 1 つの CMK

KMS CMK でデータを暗号化すると、暗号化テキストを他の CMK を使用して復号化することはできません。これは、同じキーマテリアルを異なる CMK にインポートする場合でも同じです。

可用性と耐久性

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

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

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

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

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

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

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

  1. キーデータなしで CMK を作成する – キーマテリアルのインポートを開始するには、まず、オリジンEXTERNAL である CMK を作成します。これは、キーマテリアルが AWS KMS 外で生成されたことを示し、AWS KMS が CMK のキーマテリアルを生成しないようにします。後の手順で、この CMK に独自のキーマテリアルをインポートします。

  2. パブリックキーおよびインポートトークンをダウンロード – ステップ 1 を完了した後、パブリックキーとインポートトークンをダウンロードします。これらの項目は、AWS KMS へのキーマテリアルのインポートを保護します。

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

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

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

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

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

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

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

  • CMK キーマテリアルが含まれている場合、キーマテリアルを再インポートする前に、既存のキーマテリアルを削除する必要があります。

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

インポートされたキーマテリアルのある CMK を特定する方法

キーマテリアルなしで CMK を作成する場合、CMK の Origin プロパティの値は EXTERNAL で、変更することはできません。インポートされたキーマテリアルを使用するように設計されたキーは、AWS KMS が提供するキーマテリアルを使用するキーに変換することはできません。

AWS KMS コンソールまたは AWS KMS API を使用して、インポートされたキーマテリアルを必要とする CMK を特定できます。

CMK の Origin プロパティの値を特定するには (コンソール)

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. 左のナビゲーションペインで、暗号化キーを選択します。

  3. フィルタ で、AWS の該当するリージョンを選択します。

  4. 次のいずれかのテクニックを使用して、CMK の Origin プロパティを表示します。

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

    • 特定の CMK の Origin プロパティの値を検索するには、CMK のキー ID またはエイリアスを選択します。[General configuration (一般設定)] セクションに Origin プロパティ値が表示されます。

CMK の Origin プロパティの値を特定するには (KMS API)

DescribeKey オペレーションを使用します。以下の例に示すように、レスポンスには、CMK の Origin プロパティが含まれています。

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Origin": "EXTERNAL", "KeyManager": "CUSTOMER", "ValidTo": 1549224000.0, "Enabled": true, "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1517867689.949, "KeyUsage": "ENCRYPT_DECRYPT", "Description": "example-key", "KeyState": "Enabled", "ExpirationModel": "KEY_MATERIAL_EXPIRES" }