

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

# 外部キーストア
<a name="keystore-external"></a>

外部キーストアを使用すると、外部で暗号化キーを使用して AWS リソースを保護できます AWS。この高度な機能は、ユーザーが管理する外部のキー管理システムに保存された暗号化キーで保護しなければならない、規制対象のワークロード向けに設計されています。外部キーストアは、ユーザーが所有および管理するキーマテリアルで暗号化する機能など AWS、 内のデータを主権的に制御するための[AWS デジタル主権の約束](https://aws.amazon.com/blogs/security/aws-digital-sovereignty-pledge-control-without-compromise/)をサポートします AWS。

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

AWS KMS は外部キーマネージャーと直接やり取りすることはなく、キーを作成、表示、管理、または削除することもできません。代わりに、 は、指定した[外部キーストアプロキシ](#concept-xks-proxy) (XKS プロキシ) ソフトウェアとのみ AWS KMS やり取りします。外部キーストアプロキシは、 AWS KMS と外部キーマネージャー間のすべての通信を仲介します。からのすべてのリクエスト AWS KMS を外部キーマネージャーに送信し、外部キーマネージャーからのレスポンスを に送信します AWS KMS。外部キーストアプロキシは、 からの一般的なリクエスト AWS KMS を、外部キーマネージャーが理解できるベンダー固有の形式に変換するため、さまざまなベンダーのキーマネージャーと外部キーストアを使用できます。

外部キーストアの KMS キーは、[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) など、クライアント側の暗号化に使用できます。ただし、外部キーストアはサーバー側の暗号化の重要なリソースであり、外部の暗号化キー AWS のサービス を使用して複数の の AWS リソースを保護することができます AWS。 AWS のサービス 対称暗号化の[カスタマーマネージドキー](concepts.md#customer-mgn-key)をサポートする は、外部キーストアの KMS キーもサポートしています。サービスサポートの詳細については、「[AWS サービス統合](https://aws.amazon.com/kms/features/#AWS_service_integration)」を参照してください。

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

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

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



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

ほとんどのユーザーにとって、[FIPS 140-3 セキュリティレベル 3 検証済みハードウェアセキュリティモジュール](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4884)で保護されているデフォルトの AWS KMS キーストアは、セキュリティ、コントロール、および規制要件を満たしています。外部キーストアを使用するユーザーには、多額のコスト、メンテナンスやトラブルシューティングなどの負担、レイテンシー、可用性、信頼性のリスクが生じます。

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

以下の要件がある場合は、外部キーストアが組織にとって適切なソリューションとなる可能性があります。
+ オンプレミスのキーマネージャーまたは AWS 自分が管理する 以外のキーマネージャーで暗号化キーを使用する必要があります。
+ 暗号化キーが、クラウド以外の場所で、ユーザーが単独で管理して保持されていることを証明する必要がある場合。
+ 暗号化と復号で、独立した認可を受けた暗号化キーを使用する必要がある場合。
+ キーマテリアルは、補助的な、独立した監査パスの対象とする必要があります。

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



**責任共有モデル**

標準 KMS キーは、 AWS KMS を所有および管理する HSMs で生成および使用されるキーマテリアルを使用します。KMS キーのアクセスコントロールポリシーを確立し、KMS キー AWS のサービス を使用してリソースを保護する を設定します。 AWS KMS は、KMS キー内のキーマテリアルのセキュリティ、可用性、レイテンシー、耐久性について責任を負います。

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

ユーザーは、規制およびパフォーマンス基準を満たす外部キーマネージャーの管理、[AWS KMS 外部キーストアプロキシ API 仕様](https://github.com/aws/aws-kms-xksproxy-api-spec/)に準拠する外部キーストアプロキシの提供と維持、およびキーマテリアルの可用性と耐久性の確保に責任を負います。また、は外部キーストアの作成、設定、維持もユーザーが行います。メンテナンスするコンポーネントが原因でエラーが発生した場合は、 AWS サービスが過度に中断することなくリソースにアクセスできるように、エラーを特定して解決する準備を整える必要があります。 は、問題の原因と最も可能性の高い解決策を判断するのに役立つ[トラブルシューティングガイダンス](xks-troubleshooting.md) AWS KMS を提供します。

が AWS KMS 外部キーストアに記録する [Amazon CloudWatch メトリクスとディメンション](monitoring-cloudwatch.md#kms-metrics)を確認します。 では、CloudWatch アラームを作成して外部キーストアをモニタリングし、パフォーマンスと運用の問題の初期兆候を事前に検出できるようにすることを AWS KMS 強くお勧めします。

**違いは何か**

外部キーストアは、対称暗号化 KMS キーのみをサポートしています。内部では AWS KMS、[アクセスコントロールポリシーの設定](authorize-xks-key-store.md)やキー[の使用のモニタリング](monitoring-overview.md)など、他の[カスタマーマネージド](concepts.md#customer-mgn-key)キーを管理するのとほぼ同じ方法で、外部キーストアで KMS キーを使用および管理します。ユーザーが KMS キーに使用している、外部キーストアの KMS キーを使った暗号化オペレーションをリクエストするときは、同じ API を同じパラメータで使用します。料金も、標準の KMS キーと同じです。詳細については、「[外部キーストアの KMS キー](keystore-external-key-manage.md)」および「[AWS Key Management Service の料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

ただし、外部キーストアには以下のような原則の変更があります。
+ キーオペレーションの可用性、耐久性、レイテンシーの責任はユーザーが負う。
+ 外部キーマネージャーシステムの開発、購入、オペレーション、ライセンス供与のコストは、ユーザーが負担する。
+ から外部キーストアプロキシ AWS KMS へのすべてのリクエストに対して[、独立した認可](authorize-xks-key-store.md#xks-proxy-authorization)を実装できます。
+ 外部キーストアプロキシのすべてのオペレーションと、 AWS KMS リクエストに関連する外部キーマネージャーのすべてのオペレーションをモニタリング、監査、ログ記録できます。

**開始方法**

外部キーストアを作成して管理するには、[外部キーストアプロキシ接続オプションを選択](choose-xks-connectivity.md)し、[前提条件を構成](create-xks-keystore.md#xks-requirements)し、[外部キーストアを作成、設定](create-xks-keystore.md)する必要があります。

**クォータ**

AWS KMS では、接続状態に関係なく、[キーストアと外部キーストアの両方を含む、各 およびリージョンに最大 10 個のカスタム](resource-limits.md)[キーストア](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)を使用できます。 AWS アカウント [AWS CloudHSM](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html)また、[外部キーストアで KMS キーを使用する](requests-per-second.md#rps-key-stores)ときは、 AWS KMS リクエストクォータが適用されます。

外部キーストアプロキシに [VPC プロキシ接続](#concept-xks-connectivity)を選択すると、VPC、サブネット、Network Load Balancer などの必要なコンポーネントにもクオータが適用される場合があります。これらのクォータの詳細については、[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/home)を参照してください。



**リージョン**

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

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

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

AWS KMS は、カスタムキーストアで以下の機能をサポートしていません。
+ [非対称 KMS キー](symmetric-asymmetric.md)
+ [HMAC KMS キー](hmac.md)
+ [インポートされたキーマテリアルを持つ KMS キー](importing-keys.md)
+ [自動キーローテーション](rotate-keys.md)
+ [マルチリージョンキー](multi-region-keys-overview.md)

**詳細はこちら:**
+ AWS ニュースブログ「[Announcing AWS KMS External Key Store](https://aws.amazon.com/blogs/aws/announcing-aws-kms-external-key-store-xks/)」。

## 外部キーストアのコンセプト
<a name="xks-concepts"></a>

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

### 外部キーストア
<a name="concept-external-key-store"></a>

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

外部キーストアは、 AWS リソースを保護する暗号化キーとオペレーションが、ユーザーの管理下にある外部キーマネージャーに確実に保持されるようにします。 は、データを暗号化および復号するためのリクエストを外部キーマネージャー AWS KMS に送信しますが、外部キーを作成、削除、管理 AWS KMS することはできません。から外部キーマネージャー AWS KMS へのすべてのリクエストは、ユーザーが提供、所有、管理する[外部キーストアプロキシ](#concept-xks-proxy)ソフトウェアコンポーネントによって仲介されます。

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

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

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

### 外部キーマネージャー
<a name="concept-ekm"></a>

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

### 外部キー
<a name="concept-external-key"></a>

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

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

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

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

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

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

### 外部キーストアプロキシ
<a name="concept-xks-proxy"></a>

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

![外部キーストアプロキシ](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/xks-proxy-concept-40.png)


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

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

認証先として AWS KMS、プロキシはサーバー側の TLS 証明書を使用します。プロキシに対して認証するために、 は SigV4 プロキシ[認証情報](#concept-xks-credential)を使用して外部キーストアプロキシへのすべてのリクエスト 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 キーを作成し使用するときは、最初に[外部キーストアを外部キーストアプロキシに接続](xks-connect-disconnect.md)しておく必要があります。外部キーストアは、必要に応じてプロキシから切断することも可能です。切断すると、外部キーストアのすべての KMS キーが[使用できなくなり](key-state.md)、いずれの暗号化オペレーションでもそれらを使用できなくなります。

### 外部キーストアプロキシ接続
<a name="concept-xks-connectivity"></a>

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

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

AWS KMS では、次の接続オプションがサポートされています。
+ [パブリックエンドポイント接続](choose-xks-connectivity.md#xks-connectivity-public-endpoint) — インターネット経由で外部キーストアプロキシのリクエストを、ユーザーが管理するパブリックエンドポイント AWS KMS に送信します。このオプションは簡単に作成し管理することができますが、すべてのインストールのセキュリティ要件を満たしているとは限りません。
+ [VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity) — 作成して維持する Amazon Virtual Private Cloud (Amazon VPC) エンドポイントサービスにリクエスト AWS KMS を送信します。Amazon VPC 内で外部キーストアプロキシをホストすることも、 の外部で外部キーストアプロキシをホスト AWS して、Amazon VPC を通信にのみ使用できます。外部キーストアは、別の AWS アカウントが所有する Amazon VPC エンドポイントサービスに接続することもできます。

外部キーストアプロキシ接続のオプションの詳細については、「[外部キーストアプロキシとの接続オプションを選択する](choose-xks-connectivity.md)」を参照してください。

### 外部キーストアのプロキシ認証の認証情報
<a name="concept-xks-credential"></a>

外部キーストアプロキシに認証するために、 は[署名 V4 (SigV4)](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 認証情報を使用して外部キーストアプロキシへのすべてのリクエスト AWS KMS に署名します。プロキシで認証情報を確立して維持し、外部ストアを作成する AWS KMS ときにこの認証情報を に提供します。

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

各プロキシ認証の認証情報は、2 つの要素から成ります。外部キーストアを作成するとき、または外部キーストア用にプロキシ認証の認証情報を更新するときは、これら両方の要素を指定する必要があります。
+ アクセスキー ID: シークレットアクセスキーを識別します。この ID はプレーンテキストで入力できます。
+ シークレットアクセスキー: 認証情報のシークレット部分。 は、認証情報を保存する前に、認証情報内のシークレットアクセスキーを AWS KMS 暗号化します。

[認証情報の設定](update-xks-keystore.md)は、間違った値を入力したとき、プロキシの認証情報を変更するとき、プロキシが認証情報をローテーションするときなどにいつでも編集できます。外部キーストアプロキシへの認証に関する AWS KMS 技術的な詳細については、 AWS KMS 「外部キーストアプロキシ API 仕様」の[「認証](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/xks_proxy_api_spec.md#authentication)」を参照してください。

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

プロキシ認証情報の経過時間を追跡しやすくするために、 は Amazon CloudWatch メトリクス [XksProxyCredentialAge](monitoring-cloudwatch.md#metric-xks-proxy-credential-age) AWS KMS を定義します。このメトリクスを使用すれば、認証情報が、設定した有効期限に達したときに通知する、CloudWatch アラームを作成できます。

### プロキシ API
<a name="concept-proxy-apis"></a>

 AWS KMS 外部キーストアをサポートするには、[外部キーストアプロキシ](#concept-xks-proxy)は、外部キーストアプロキシ APIs 仕様で説明されているように、必要なプロキシ API を実装する必要があります。 [AWS KMS](https://github.com/aws/aws-kms-xksproxy-api-spec/)これらのプロキシ API リクエストは、 がプロキシ AWS KMS に送信する唯一のリクエストです。ユーザーはこれらのリクエストを直接送信することはありませんが、これらについて知っておくと、外部キーストアやそのプロキシで発生する問題を修正する際に役に立つ場合があります。たとえば、 は、外部キーストアの [Amazon CloudWatch メトリクス](monitoring-cloudwatch.md)に、これらの API コールのレイテンシーと成功率に関する情報 AWS KMS を含めます。詳細については、「[外部キーストアをモニタリングする](xks-monitoring.md)」を参照してください。

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


| プロキシ API | 説明 | 関連する AWS KMS オペレーション | 
| --- | --- | --- | 
| Decrypt | AWS KMS は、復号する暗号文と、使用する[外部キー](#concept-external-key)の ID を送信します。必要な暗号化アルゴリズムは AES\_GCM です。 | [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)、[ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) | 
| 暗号化 | AWS KMS は、暗号化するデータと、使用する[外部キー](#concept-external-key)の ID を送信します。必要な暗号化アルゴリズムは AES\_GCM です。 | [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)、[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)、[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)、[ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) | 
| GetHealthStatus | AWS KMS は、プロキシと外部キーマネージャーのステータスに関する情報をリクエストします。各外部キーマネージャーのステータスは、以下のいずれかになります。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/keystore-external.html) | [CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html) ([パブリックエンドポイント接続](choose-xks-connectivity.md#xks-connectivity-public-endpoint)用)、[ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) ([VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)用)すべての外部キーマネージャーインスタンスが `Unavailable` である場合、キーストアを作成または接続しようとすると [`XksProxyUriUnreachableException`](xks-troubleshooting.md#fix-xks-latency) で失敗します。 | 
| GetKeyMetadata | AWS KMS は、[外部キー](#concept-external-key)ストアの KMS キーに関連付けられた外部キーに関する情報をリクエストします。応答には、キーのスペック (`AES_256`)、キーの使用 (`[ENCRYPT, DECRYPT]`)、外部キーが `ENABLED` または `DISABLED` かどうか、が含まれます。 | [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)キーのスペックが `AES_256` でない場合、キーの使用が `[ENCRYPT, DECRYPT]` でない場合、ステータスが `DISABLED` である場合、`CreateKey` オペレーションは `XksKeyInvalidConfigurationException` により失敗します。 | 

### 二重暗号化
<a name="concept-double-encryption"></a>

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

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

![外部キーストアの KMS キーによって保護されたデータの二重暗号化](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/xks-double-encrypt-40.png)


二重暗号化を有効にするには、外部キーストア内の各 KMS キーに 2 つの暗号化バッキングキーを作成します。
+ KMS AWS KMS キーに固有のキーマテリアル。このキーマテリアルは、 AWS KMS [FIPS 140-3 セキュリティレベル 3 ](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4884)認定ハードウェアセキュリティモジュール (HSMs) でのみ生成され、使用されます。
+ 外部キーマネージャーの[外部キー](#concept-external-key)。

二重暗号化には次の効果があります。
+ AWS KMS は、外部キーストアプロキシを介して外部キーにアクセスせずに、外部キーストアの KMS キーによって暗号化された暗号文を復号することはできません。
+ 外部キーマテリアルがある場合でも AWS、外部の外部キーストアで KMS キーによって暗号化された暗号文を復号することはできません。
+ 外部キーストアから削除された KMS キーは、その外部キーマテリアルがある場合でも、再作成できない。各 KMS キーには、対称暗号文に含まれる固有のメタデータがある。新しい KMS キーでは、同じ外部キーマテリアルを使用する場合でも、元のキーで暗号化された暗号文を復号することはできない。

実際の二重暗号化の例については、「[外部キーストアの仕組み](#xks-how-it-works)」を参照してください。

## 外部キーストアの仕組み
<a name="xks-how-it-works"></a>

[外部キーストア](#concept-external-key-store)、[外部キーストアプロキシ](#concept-xks-proxy)、[外部キーマネージャー](#concept-ekm)は、連携して AWS リソースを保護します。次の手順は、KMS キーで保護された一意のデータキーに基づいて各オブジェクトを暗号化する、一般的な AWS のサービス の暗号化ワークフローを示したものです。この場合、オブジェクトを保護するために、外部キーストアの KMS キーが選択されています。この例では、 が[二重暗号化](#concept-double-encryption) AWS KMS を使用して転送中のデータキーを保護し、外部キーストアの KMS キーによって生成された暗号文が、キーマテリアルを含む標準の対称 KMS キーによって暗号化された暗号文と少なくとも同じ強度であることを保証します AWS KMS。

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

![外部キーストアの仕組み](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/xks-how-it-works-jan26.png)


1.  AWS のサービス リソースに新しいオブジェクトを追加します。オブジェクトを暗号化するために、 は外部キーストアの KMS キー AWS KMS を使用して [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) リクエストを AWS のサービス に送信します。

1. AWS KMS は 256 ビット対称[データキー](data-keys.md)を生成し、外部キーストアプロキシを介してプレーンテキストデータキーのコピーを外部キーマネージャーに送信する準備をします。 は、外部キーストアの KMS キーに関連付けられた[AWS KMS キーマテリアル](#concept-double-encryption)を使用してプレーンテキストデータキーを暗号化することで、[二重暗号化](#concept-double-encryption)プロセス AWS KMS を開始します。

1. AWS KMS は、外部キーストアに関連付けられた外部キーストアプロキシに[暗号化](#concept-proxy-apis)リクエストを送信します。リクエストには、暗号化されるデータキー暗号文と、KMS [キーに関連付けられている外部](#concept-external-key)キーの ID が含まれます。 は、外部キーストアプロキシの[プロキシ認証情報](#concept-xks-credential)を使用してリクエスト AWS KMS に署名します。

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

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

   外部キーストアプロキシの中には、特定の条件下において選択されたプリンシパルのみにオペレーションを許可する、オプションの[認可ポリシー](authorize-xks-key-store.md#xks-proxy-authorization)を実装しているものもあります。

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

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

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

   一部の AWS のサービス では、プレーンテキストのデータキーをキャッシュして複数のオブジェクトに使用したり、リソースの使用中に再利用したりできます。詳細については、「[使用できない KMS キーがデータキーに及ぼす影響](unusable-kms-keys.md)」を参照してください。

暗号化されたオブジェクトを復号するには、 は暗号化されたデータキーを [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエスト AWS KMS で に送信し直す AWS のサービス 必要があります。暗号化されたデータキーを復号するには、暗号化されたデータキーを外部キーの ID で外部キーストアプロキシ AWS KMS に送信する必要があります。何らかの理由で外部キーストアプロキシへの復号リクエストが失敗した場合、 AWS KMS は暗号化されたデータキーを復号できず、 は暗号化されたオブジェクトを復号 AWS のサービス できません。