外部キーストア - AWS Key Management Service

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

外部キーストア

外部キーストアを使用すると、AWS リソースを AWS 以外の暗号化キーを使って保護することができます。この高度な機能は、ユーザーが管理する外部のキー管理システムに保存された暗号化キーで保護しなければならない、規制対象のワークロード向けに設計されています。外部キーストアは「AWS のデジタル統制に関するお客様との約束」をサポートしているため、AWS の外部でお客様が所有し管理しているキーマテリアルを使って暗号化する機能など、AWS 内のデータをお客様ご自身で制御できます。

外部キーストアとは、AWS の外部で所有し管理している外部キーマネージャーによってバックアップされるカスタムキーストアです。外部キーマネージャーは、物理的または仮想的なハードウェアセキュリティモジュール (HSM) である場合もあれば、暗号化キーの生成や使用を行うハードウェアベースまたはソフトウェアベースのシステムである場合もあります。外部キーストアの KMS キーを使用した暗号化と復号のオペレーションは、外部キーマネージャーがユーザーの暗号化キーマテリアルを使って実行します。この機能は Hold Your Own Key (HYOK) と呼ばれています。

AWS KMS は、ユーザーの外部キーマネージャーを直接操作することはなく、ユーザーのキーの作成、閲覧、管理、削除は行えません。代わりに、AWS KMS は、ユーザーが提供する外部キーストアプロキシ (XKS プロキシ) ソフトウェアを操作します。この外部キーストアプロキシは、AWS KMS と外部キーマネージャーとのあらゆるやり取りを仲介します。AWS KMS のリクエストを外部キーマネージャーに送信し、外部キーマネージャーのレスポンスを AWS KMS に送信します。また、外部キーストアプロキシは、AWS KMS の一般的なリクエストを、外部キーマネージャが理解できる、ベンダー固有の形式に変換して、ユーザーが外部キーストアをさまざまなベンダーのキーマネージャーで使用できるようにします。

外部キーストアの KMS キーは、AWS Encryption SDK など、クライアント側の暗号化に使用できます。外部キーストアはサーバー側の暗号化にとって重要なリソースであり、AWS 外部の暗号化キーを使用して、複数の AWS のサービス で AWS リソースを保護します。対称暗号化のカスタマーマネージドキーをサポートしている AWS のサービス は、外部キーストアの KMS キーもサポートします。サービスサポートの詳細については、「AWS サービス統合」を参照してください。

外部キーストアを使用すれば、暗号化キーを AWS の外部で保存して使用することが求められる規制対象のワークロードで、AWS KMS を使えるようになります。ただし、こうした使用は標準の責任共有モデルから大きく逸脱するものであり、オペレーション上の負担が増えることになります。可用性とレイテンシーに関するリスクが増えれば、そのリスクは、大半のお客様にとって外部キーストアのセキュリティにおける利点を上回るものとなります。

外部キーストアを使用すると、ユーザーは、信頼の基点を制御することができます。外部キーストアの KMS キーで暗号化されたデータは、ユーザーが管理する外部キーマネージャーでしか復号することはできません。外部キーストアを切断したり外部キーマネージャーと外部キーストアプロキシを切断したりするなどして外部キーマネージャーへのアクセスを一時的に無効にした場合、それが復元されるまで、AWS は暗号化キーにまったくアクセスできなくなります。その間、ユーザーの KMS キーで暗号化された暗号文は復号できません。外部キーマネージャーへのアクセスを永久に無効にすると、外部キーストアの KMS キーで暗号化された暗号文は、すべて回復不能になります。唯一の例外が、KMS キーで保護されたデータキーを一時的にキャッシュする AWS サービスです。これらのデータキーは、リソースを非アクティブにするまで、またはキャッシュの有効期限が切れるまで、機能し続けます。詳細については、「使用できない KMS キーがデータキーに及ぼす影響」を参照してください。

外部キーストアを使用すれば、暗号化キーをユーザーが管理し AWS からアクセスできないようにする必要のある規制対象のワークロードに関するいくつかのユースケースの問題を解消できます。しかし、こうした使用はクラウドベースのインフラストラクチャの運用方法を大きく変えるもので、責任共有モデルに著しい変化をもたらします。ほとんどのワークロードでオペレーションの負担が増えることになり、可用性とパフォーマンスのリスクが増え、そのリスクは、外部キーストアを利用するセキュリティ上の利点を上回ります。

自分は外部キーストアを使う必要がありますか?

FIPS 140-2 セキュリティレベル 3 検証済みハードウェアセキュリティモジュールで保護されているデフォルトの AWS KMS キーストアは、ほとんどのユーザーのセキュリティ、管理、規制に関する要件を満たします。  外部キーストアを使用するユーザーには、多額のコスト、メンテナンスやトラブルシューティングなどの負担、レイテンシー、可用性、信頼性のリスクが生じます。

外部キーストアの使用を検討する際は、代わりの手段についても理解しておきましょう。例えば、ユーザーが所有し管理する、AWS CloudHSM クラスターでバックアップされた AWS CloudHSM キーストアや、ユーザーが自身の HSM で生成し、必要に応じて KMS キーから削除できる、インポートされたキーマテリアルを使う KMS キーなどです。特に、有効期限が非常に短いキーマテリアルをインポートすると、パフォーマンスや可用性のリスクなしに、同様のレベルの制御が可能になる場合があります。

以下の要件がある場合は、外部キーストアが組織にとって適切なソリューションとなる可能性があります。

  • 暗号化キーを、オンプレミスのキーマネージャー、またはユーザーが管理する AWS 以外のキーマネージャーで使用する必要がある場合。

  • 暗号化キーが、クラウド以外の場所で、ユーザーが単独で管理して保持されていることを証明する必要がある場合。

  • 暗号化と復号で、独立した認可を受けた暗号化キーを使用する必要がある場合。

  • キーマテリアルは、補助的な、独立した監査パスの対象とする必要があります。

外部キーストアを選択する場合は、その使用を、AWS 以外の暗号化キーによる保護を必要とするワークロードに限定します。

責任共有モデル

標準の KMS キーは、AWS KMS が所有し管理する HSM で生成され使用される、キーマテリアルを使用します。ユーザーは、KMS キーのアクセス制御ポリシーを作成し、KMS キーを使用してリソースを保護するように AWS のサービス を設定します。AWS KMS は、KMS キーに含まれるキーマテリアルのセキュリティ、可用性、レイテンシー、耐久性に対して責任を負います。

外部キーストアの KMS キーは、外部キーマネージャーにおけるキーマテリアルとオペレーションに依存します。そのため、責任のバランスはユーザー側にシフトします。お使いの外部キーマネージャーの暗号化キーのセキュリティ、信頼性、耐久性、およびパフォーマンスについては、お客様が責任を負います。AWS KMS は、リクエストに迅速に対応し、外部キーストアプロキシと通信し、弊社のセキュリティ基準を維持する責任を負います。すべての外部キーストア暗号文が少なくとも標準 AWS KMS 暗号文と同等に強力であることを保証するため、AWS KMS はまずすべてのプレーンテキストを KMS キーに固有の AWS KMS キーマテリアルで暗号化し、次にこれをユーザーの外部キーマネージャーに送信してユーザーの外部キーマネージャーによる暗号化を行います。これは二重暗号化と呼ばれる手順です。それにより、AWS KMS も外部キーマテリアルの所有者も、二重に暗号化された暗号文を単独で復号することはできなくなります。

ユーザーは、規制およびパフォーマンス基準を満たす外部キーマネージャーの管理、AWS KMS 外部キーストアプロキシ API 仕様に準拠する外部キーストアプロキシの提供と維持、およびキーマテリアルの可用性と耐久性の確保に責任を負います。また、は外部キーストアの作成、設定、維持もユーザーが行います。ユーザーが管理しているコンポーネントが原因でエラーが生じた場合、ユーザーは、AWS サービスが過度の中断なくユーザーのリソースにアクセスできるよう、エラーを特定して解決するための準備を整えておかなくてはなりません。AWS KMS には、問題の原因を特定して、可能な解決策を見きわめるのに役立つトラブルシューティングのガイドが用意されています。

AWS KMS が外部キーストアを記録している Amazon CloudWatch のメトリクスとディメンションを確認しておきましょう。AWS KMS では、パフォーマンスやオペレーションの問題の初期兆候を事前に検出できるよう、外部キーストアをモニタリングする CloudWatch アラームを作成することが強く推奨されています。

違いは何か

外部キーストアは、対称暗号化 KMS キーのみをサポートしています。AWS KMS では、ユーザーは、アクセス制御ポリシーの設定キー使用のモニタリングなど、他のカスタマーマネージドキーを管理する方法とほぼ同じやり方で、外部キーストアの KMS キーを使用し管理します。ユーザーが KMS キーに使用している、外部キーストアの KMS キーを使った暗号化オペレーションをリクエストするときは、同じ API を同じパラメータで使用します。料金も、標準の KMS キーと同じです。詳細については、「外部キーストアの KMS キー」および「AWS Key Management Service の料金」を参照してください。

ただし、外部キーストアには以下のような原則の変更があります。

  • キーオペレーションの可用性、耐久性、レイテンシーの責任はユーザーが負う。

  • 外部キーマネージャーシステムの開発、購入、オペレーション、ライセンス供与のコストは、ユーザーが負担する。

  • AWS KMS から外部キーストアプロキシへのすべてのリクエストに対して、独立した認証を実装できます。

  • ユーザーは、外部キーストアプロキシのすべてのオペレーション、AWS KMS リクエストに関連する外部キーマネージャーのすべてのオペレーションをモニタリング、監査、記録できる。

開始方法

外部キーストアを作成して管理するには、外部キーストアプロキシ接続オプションを選択し、前提条件を構成し、外部キーストアを作成、設定する必要があります。

クォータ

AWS KMS では、接続状態にかかわらず、AWS CloudHSM キーストア外部キーストアの両方を含め、各 AWS アカウント とリージョンで最大 10 個のカスタムキーストアを使用できます。また、外部キーストアで KMS キーを使用するときは、AWS KMS リクエストクォータが適用されます。

外部キーストアプロキシに VPC プロキシ接続を選択すると、VPC、サブネット、Network Load Balancer などの必要なコンポーネントにもクオータが適用される場合があります。これらのクォータの詳細については、Service Quotas コンソールを参照してください。

リージョン

ネットワークのレイテンシーを最小限に抑えるには、外部キーマネージャーに最も近い AWS リージョン に外部キーストアコンポーネントを作成します。可能な場合は、ネットワークラウンドトリップ時間 (RTT) が 35 ミリ秒以下のリージョンを選択します。

外部キーストアは、中国 (北京) と中国 (寧夏) を除き、AWS KMS がサポートされるすべての AWS リージョンでサポートされています。

サポートされていない機能

AWS KMS はカスタムキーストアで次の機能をサポートしていません。

詳細はこちら:

外部キーストアのコンセプト

外部キーストアで使用される基本的な用語とコンセプトについて説明します。

外部キーストア

外部キーストアは、AWS の外部でユーザーが所有し管理している外部キーマネージャーによってバックアップされた AWS KMS カスタムキーストアです。外部キーストアの各 KMS キーは、外部キーマネージャーの外部キーに関連付けられています。外部キーストアの KMS キーを使って暗号化または複合化を行う場合、オペレーションは、外部キーマネージャーでユーザーの外部キーを使用して実行されます。この方法は Hold your Own Keys (HYOK) と呼ばれます。この機能は、暗号化キーを自社の外部キーマネージャーで管理する必要のある組織向けに設計されています。

外部キーストアを使用することで、ユーザーの AWS リソースを保護している暗号化キーとオペレーションを、ユーザーが管理する外部キーマネージャーで保持できます。AWS KMS は、外部キーマネージャーにデータの暗号化と復号のリクエストを送信しますが、外部キーを作成、削除、管理することはできません。AWS KMS から外部キーマネージャーへのリクエストはすべて、ユーザーが提供、所有、管理する外部キーストアプロキシのソフトウェアコンポーネントが仲介します。

AWS KMS カスタマーマネージドキーをサポートしている AWS サービスは、外部キーストアの KMS キーを使用してデータを保護することができます。それによりデータは、最終的にユーザーのキーによって、外部キーマネージャーで暗号化オペレーションを使用して保護されます。

外部キーストアの KMS キーは、信頼モデル、責任共有の取り決め、期待されるパフォーマンスが標準の KMS キーとは根本的に異なります。外部キーストアを使用した場合、ユーザーは、キーマテリアルのセキュリティと整合性、および暗号化のオペレーションに責任を負います。外部キーストアにある KMS キーの可用性とレイテンシーは、ハードウェア、ソフトウェア、ネットワークコンポーネント、そして AWS KMS と外部キーマネージャーとの距離の影響を受けます。また、外部キーマネージャーのコストと、外部キーマネージャーが AWS KMS とやり取りする際に必要となるネットワークおよびロードバランサーインフラストラクチャのコストが、追加で発生する可能性もあります。

外部キーストアは、より広範なデータ保護戦略の一環として使用することができます。ユーザーが保護する AWS リソースについては、外部キーストアの KMS キーを必要とするリソースや標準の KMS キーで保護できるリソースを、ユーザーがそれぞれ判断できます。これにより、KMS キーを、特定のデータ分類、アプリケーション、プロジェクト向けに柔軟に選択できます。

外部キーマネージャー

外部キーマネージャーは、256 ビット AES 対称キーを生成し、対称暗号化と復号を実行できる AWS の外部コンポーネントです。外部キーストアの外部キーマネージャーには、物理ハードウェアセキュリティモジュール (HSM)、仮想 HSM、HSM コンポーネントの有無にかかわらずソフトウェアキーマネージャー、のいずれかを使用できます。これらは、ローカルまたはリモートのデータセンター、もしくは任意のクラウドなど、AWS の外部のどこにでも配置できます。外部キーストアは、単一の外部キーマネージャー、または暗号化キーを共有している、複数の関連するキーマネージャーインスタンス(HSM クラスターなど)によってバックアップできます。外部キーストアは、さまざまなベンダーの、さまざまな外部マネージャーをサポートするように設計されています。外部キーマネージャーへの接続の詳細については、「外部キーストアプロキシとの接続オプションを選択する」を参照してください。

外部キー

外部キーストアの各 KMS キーは、外部キーとも呼ばれる、外部キーマネージャーにある暗号化キーに関連付けられています。外部キーストアの KMS キーを使って暗号化または複合化を行うとき、暗号化オペレーションは、外部キーマネージャーによって、ユーザーの外部キーを使用して実行されます。

警告

外部キーは、KMS キーのオペレーションに不可欠なものです。外部キーを紛失したり削除したりすると、関連付けられた KMS キーで暗号化された暗号文は回復不能になります。

外部キーストアの場合、外部キーは、有効化され、暗号化と復号を実行できる、256 ビット AES キーでなければなりません。外部キー要件の詳細については、「外部キーストアの KMS キーの要件」を参照してください。

AWS KMS は、外部キーを作成、削除、管理することはできません。ユーザーの暗号化キーマテリアルは、外部キーマネージャーの外に出ることはありません。外部キーストアで KMS キーを作成するときは、ユーザーが外部キーの ID (XksKeyId) を指定します。KMS キーに関連付けられた外部キー ID は変更できません。ただし、外部キーマネージャは、外部キー ID に関連付けられたキーマテリアルをローテーションできます。

外部キーのほかに、外部キーストアの KMS キーには AWS KMS キーマテリアルもあります。KMS キーで保護されたデータは、最初に AWS KMS キーマテリアルを使用して AWS KMS によって暗号化され、次に、外部キーを使用して外部キーマネージャーによって暗号化されます。この二重暗号化プロセスにより、KMS キーで保護された暗号文は、AWS KMS のみで保護された暗号文と同等以上の安全性を維持できます。

暗号化キーの多くは、異なる種類の識別子を持ちます。外部キーストアに KMS キーを作成するときは、外部キーストアプロキシが外部キーを参照するときに使用する、外部キーの ID を指定します。誤った識別子を使用すると、外部キーで KMS キーを作成するときに失敗します。

外部キーストアプロキシ

外部キーストアプロキシ (「XKS プロキシ」) は顧客が所有および管理するソフトウェアアプリケーションで、AWS KMS と外部キーマネージャーとのすべてのやり取りを仲介します。また、一般的な AWS KMS リクエストを、ベンダー固有の外部キーマネージャーが理解可能な形式に変換します。外部キーストアには、外部キーストアプロキシが必要です。各外部キーストアは、1 つの外部キーストアプロキシに関連付けられています。

外部キーストアプロキシ

AWS KMS は、外部キーを作成、削除、管理することはできません。ユーザーの暗号化キーマテリアルは、ユーザーの外部キーマネージャーの外に出ることはありません。AWS KMS と外部キーマネージャーのやり取りはすべて、外部キーストアプロキシによって仲介されます。AWS KMS は、外部キーストアプロキシにリクエストを送信し、外部キーストアプロキシからレスポンスを受けとります。AWS KMS から外部キーマネージャーにリクエストを送信し、外部キーマネージャーのレスポンスを AWS KMS に送り返す責任は、外部キーストアプロキシが負います。

外部キーストアの外部キーストアプロキシを所有および管理して、そのメンテナンスとオペレーションを行う責任は、ユーザーが負います。ユーザーは、AWS KMS が公開しているオープンソースの外部キーストアプロキシ API 仕様に基づいて外部キーストアプロキシを開発するか、ベンダーからプロキシアプリケーションを購入することができます。外部キーストアプロキシは、外部キーマネージャーに含まれている場合があります。プロキシの開発をサポートするため、AWS KMS には、サンプルの外部キーストアプロキシ (aws-kms-xks-proxy) と、外部キーストアプロキシが仕様に従っていることを検証するテストクライアント (xks-kms-xksproxy-test-client) も用意されています。

AWS KMS への認証のため、プロキシはサーバー側の TLS 証明書を使用します。ユーザーのプロキシを認証するため、AWS KMS は、SigV4 のプロキシ認証の認証情報を使って、外部キーストアプロキシへのすべてのリクエストに署名します。任意で、プロキシで相互TLS (mTLS) を有効にすれば、さらに確実に AWS KMS のリクエストのみを受け入れるようにすることが可能です。

外部キーストアプロキシは、以下の暗号スイートのうち少なくとも 1 つを含む HTTP/1.1 以降と TLS 1.2 以降をサポートしている必要があります。

  • TLS_AES_256_GCM_SHA384 (TLS 1.3)

  • TLS_CHACHA20_POLY1305_SHA256 (TLS 1.3)

    注記

    AWS GovCloud (US) Regionでは TLS_CHACHA20_POLY1305_SHA256 はサポートされていません。

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)

外部キーストアの KMS キーを作成し使用するときは、最初に外部キーストアを外部キーストアプロキシに接続しておく必要があります。外部キーストアは、必要に応じてプロキシから切断することも可能です。切断すると、外部キーストアのすべての KMS キーが使用できなくなり、いずれの暗号化オペレーションでもそれらを使用できなくなります。

外部キーストアプロキシ接続

外部キーストアプロキシ接続 (「XKS プロキシ接続」) とは、AWS KMS が外部キーストアプロキシとの通信に使用する方法のことをいいます。

外部キーストアを作成するときにプロキシ接続のオプションを指定すると、そのプロキシ接続は外部キーストアのプロパティになります。プロキシ接続オプションは、カスタムキーストアプロパティを更新することで変更できますが、外部キーストアプロキシが引き続き同じ外部キーにアクセスできることを、確認しておく必要があります。

AWS KMS は、次の接続オプションをサポートしています。

  • パブリックエンドポイント接続 — AWS KMS は、外部キーストアプロキシへのリクエストを、インターネットを介して、ユーザーが管理しているパブリックエンドポイントに送信します。このオプションは簡単に作成し管理することができますが、すべてのインストールのセキュリティ要件を満たしているとは限りません。

  • VPC エンドポイントサービス接続 - AWS KMS は、ユーザーが作成し管理している Amazon Virtual Private Cloud (Amazon VPC) エンドポイントにリクエストを送信します。外部キーストアプロキシを Amazon VPC 内でホストするか、AWS の外部でホストして、Amazon VPC を通信にのみ使用することができます。

外部キーストアプロキシ接続のオプションの詳細については、「外部キーストアプロキシとの接続オプションを選択する」を参照してください。

外部キーストアのプロキシ認証の認証情報

外部キーストアのプロキシを認証するために、AWS KMS は、Signature V4 (SigV4) 認証の認証情報を使って外部キーストアプロキシへのすべてのリクエストに署名します。プロキシでこの認証の認証情報を確立した後、外部ストアを作成する際に、この認証情報を AWS KMS に提供します。

注記

AWS KMS が XKS プロキシへのリクエストに署名する際に使用する SigV4 認証情報は、AWS アカウント の AWS Identity and Access Management プリンシパルに関連付けられた SigV4 認証情報とは無関係です。IAM SigV4 認証情報を外部キーストアプロキシに再利用しないでください。

各プロキシ認証の認証情報は、2 つの要素から成ります。外部キーストアを作成するとき、または外部キーストア用にプロキシ認証の認証情報を更新するときは、これら両方の要素を指定する必要があります。

  • アクセスキー ID: シークレットアクセスキーを識別します。この ID はプレーンテキストで入力できます。

  • シークレットアクセスキー: 認証情報のシークレットの部分です。AWS KMS は、認証情報のシークレットアクセスキーを暗号化し、その後保存します。

認証情報の設定は、間違った値を入力したとき、プロキシの認証情報を変更するとき、プロキシが認証情報をローテーションするときなどにいつでも編集できます。外部キーストアプロキシの AWS KMS 認証に関する技術的な詳細については、「AWS KMS 外部キーストアプロキシ API 仕様」の「認証」を参照してください。

外部キーストアの KMS キーを使用している AWS のサービス を中断せずに、認証情報をローテーションできるようにするために、外部キーストアプロキシで、AWS KMS に有効なプロキシ認証の認証情報を 2 つ以上サポートしておくことが推奨されています。これにより、新しい認証情報を AWS KMS に提供している間も、以前の認証情報が引き続き機能します。

プロキシ認証の認証情報の有効期限を追跡できるようにするために、AWS KMS は、Amazon CloudWatch のメトリクスの XksProxyCredentialAge を定義します。このメトリクスを使用すれば、認証情報が、設定した有効期限に達したときに通知する、CloudWatch アラームを作成できます。

外部キーストアプロキシが AWS KMS のみに応答することをさらに確実にするため、一部の外部キープロキシは Mutual Transport Layer Security (mTLS) をサポートしています。詳細については、「mTLS 認証 (オプション)」を参照してください。

プロキシ API

AWS KMS 外部キーストアをサポートするには、「AWS KMS 外部キーストアプロキシ API 仕様」に記載のとおり、外部キーストアプロキシに必要なプロキシ API が実装されている必要があります。これらのプロキシ API リクエストは、AWS KMS がプロキシに送信する唯一のリクエストです。ユーザーはこれらのリクエストを直接送信することはありませんが、これらについて知っておくと、外部キーストアやそのプロキシで発生する問題を修正する際に役に立つ場合があります。例えば、AWS KMS は、これらの API コールのレイテンシーと成功率に関する情報を外部キーストアの Amazon CloudWatch メトリクスに含めます。詳細については、「外部キーストアをモニタリングする」を参照してください。

以下の表には各プロキシ API が一覧表示され、それぞれが説明されてます。また、プロキシ API への呼び出しをトリガーする AWS KMS オペレーションや、プロキシ API 関連の AWS KMS オペレーションの例外も記載されています。

プロキシ API 説明 関連の AWS KMS オペレーション
Decrypt AWS KMS は、復号する暗号文と、使用する外部キーの ID を送信します。必要な暗号化アルゴリズムは AES_GCM です。 DecryptReEncrypt
暗号化 AWS KMS は、暗号化するデータと、使用する外部キーの ID を送信します。必要な暗号化アルゴリズムは AES_GCM です。 EncryptGenerateDataKeyGenerateDataKeyWithoutPlaintextReEncrypt
GetHealthStatus AWS KMS は、プロキシと外部キーマネージャーのステータスに関する情報をリクエストします。

各外部キーマネージャーのステータスは、以下のいずれかになります。

  • Active: 正常。トラフィックを処理できる

  • Degraded: 異常。ただし、トラフィックを処理できる

  • Unavailable: 異常。トラフィックを処理できない

CreateCustomKeyStore (パブリックエンドポイント接続用)、ConnectCustomKeyStore (VPC エンドポイントサービス接続用)

すべての外部キーマネージャーインスタンスが Unavailable である場合、キーストアを作成または接続しようとすると XksProxyUriUnreachableException で失敗します。

GetKeyMetadata AWS KMS は、外部キーストアの KMS キーに関連付けられた外部キーに関する情報をリクエストします。

応答には、キーのスペック (AES_256)、キーの使用 ([ENCRYPT, DECRYPT])、外部キーが ENABLED または DISABLED かどうか、が含まれます。

CreateKey

キーのスペックが AES_256 でない場合、キーの使用が [ENCRYPT, DECRYPT] でない場合、ステータスが DISABLED である場合、CreateKey オペレーションは XksKeyInvalidConfigurationException により失敗します。

二重暗号化

外部キーストアの KMS キーで暗号化されるデータは、2 回暗号化されます。まず、AWS KMS が KMS キーに固有の AWS KMS キーマテリアルを使ってデータを暗号化します。次に、AWS KMS で暗号化された暗号文が、外部キーマネージャーによって外部キーを使用して暗号化されます。このプロセスは二重暗号化と呼ばれます。

二重暗号化を使用すれば、外部キーストアの KMS キーで暗号化されたデータを、標準の KMS キーで暗号化された暗号文と同等以上の安全性で維持できます。また、AWS KMS から外部キーストアプロキシに送信されているプレーンテキストを保護することもできます。二重暗号化を使うことで、暗号文を完全に制御できます。外部キーへの AWS アクセスを外部プロキシ経由で永久に無効にすると、AWS に残っている暗号文は暗号によって実質的に細断されます。

外部キーストアの KMS キーによって保護されたデータの二重暗号化

二重暗号化を有効にするには、外部キーストア内の各 KMS キーに 2 つの暗号化バッキングキーを作成します。

  • KMS キーに固有の AWS KMS キーマテリアル。このキーマテリアルは AWS KMS FIPS 140-2 セキュリティレベル 3 検証済みハードウェアセキュリティモジュール (HSM) で生成され、その HSM 内でのみ使用されます。

  • 外部キーマネージャーの外部キー

二重暗号化には次の効果があります。

  • AWS KMS は、外部キーストアプロキシ経由で外部キーにアクセスしない限り、外部キーストアの KMS キーで暗号化された暗号文を復号できない。

  • AWS 以外のキーストアにある KMS キーで暗号化された暗号文は、その外部キーマテリアルがある場合でも、復号できない。

  • 外部キーストアから削除された KMS キーは、その外部キーマテリアルがある場合でも、再作成できない。各 KMS キーには、対称暗号文に含まれる固有のメタデータがある。新しい KMS キーでは、同じ外部キーマテリアルを使用する場合でも、元のキーで暗号化された暗号文を復号することはできない。

実際の二重暗号化の例については、「外部キーストアの仕組み」を参照してください。

外部キーストアの仕組み

外部キーストア外部キーストアプロキシ外部キーマネージャーは、連携して AWS リソースを保護します。次の手順は、KMS キーで保護された一意のデータキーに基づいて各オブジェクトを暗号化する、一般的な AWS のサービス の暗号化ワークフローを示したものです。この場合、オブジェクトを保護するために、外部キーストアの KMS キーが選択されています。この例では、AWS KMS が 二重暗号化をどのように使用し、送信中のデータキーを保護するのか、また、外部キーストアの KMS キーによって生成された暗号文が、AWS KMS のキーマテリアルを使用し標準の対称 KMS キーで暗号化された暗号文と同等以上の安全性を、どう確保しているのかを説明します。

AWS KMS と統合する実際の AWS のサービス が使用する暗号化の方法は、それぞれ異なります。詳細については、AWS のサービス ドキュメントの「セキュリティ」の項にある「データ保護」のトピックを参照してください。

外部キーストアの仕組み
  1. AWS のサービス リソースに新しいオブジェクトを追加します。このオブジェクトを暗号化するために、AWS のサービス が外部キーストアの KMS キーを使用して AWS KMS に GenerateDataKey リクエストを送信します。

  2. AWS KMS が、256 ビットの対称データキーを生成し、プレーンテキストデータキーのコピーを外部キーストアプロキシを介して外部キーマネージャーに送信する準備をします。AWS KMS が、外部キーストアの KMS キーに関連付けられた AWS KMS キーマテリアルを使ってプレーンテキストのデータキーを暗号化すると、二重暗号化のプロセスが開始します。

  3. AWS KMS が、外部キーストアに関連付けられた外部キーストアプロキシに暗号化リクエストを送信します。このリクエストには、暗号化するデータキーの暗号文と、KMS キーに関連付けられた外部キーの ID が含まれています。AWS KMS は、外部キーストアプロキシのプロキシ認証の認証情報を使ってこのリクエストに署名します。

    データキーのプレーンテキストのコピーは、外部キーストアプロキシには送信されません。

  4. 外部キーストアプロキシがリクエストを認証し、暗号化リクエストを外部のキーマネージャーに渡します。

    外部キーストアプロキシの中には、特定の条件下において選択されたプリンシパルのみにオペレーションを許可する、オプションの認可ポリシーを実装しているものもあります。

  5. 外部キーマネージャーは、指定された外部キーを使用して、データキーの暗号文を暗号化します。外部キーマネージャは二重に暗号化されたデータキーを外部キーストアプロキシに返し、外部キーストアプロキシはそれを AWS KMS に返します。

  6. AWS KMS は、データキーのプレーンテキストデータキーと、そのデータキーの二重暗号化コピーを AWS のサービス に返します。

  7. AWS のサービス は、プレーンテキストデータキーを使ってリソースオブジェクトを暗号化し、プレーンテキストデータキーを破棄し、暗号化されたデータキーを暗号化されたオブジェクトと共に保存します。

    AWS のサービス の中には、プレーンテキストのデータキーをキャッシュして複数のオブジェクトに使用したり、リソースの使用中にこれを再利用したりするものもあります。詳細については、「使用できない KMS キーがデータキーに及ぼす影響」を参照してください。

暗号化されたオブジェクトを復号するには、AWS のサービス は、暗号化されたデータキーを Decrypt リクエストで AWS KMS に送り返す必要があります。暗号化されたデータキーを復号するには、AWS KMS は、暗号化されたデータキーを、外部キーの ID とともに外部キーストアプロキシに送り返す必要があります。何らかの理由で、外部キーストアプロキシへの復号リクエストに失敗した場合、AWS KMS は、暗号化されたデータキーを復号できず、AWS のサービス は、暗号化されたオブジェクトを復号できません。