

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

# 外部キーストア
<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\$1AES\$1256\$1GCM\$1SHA384 (TLS 1.3)
+ TLS\$1CHACHA20\$1POLY1305\$1SHA256 (TLS 1.3)
**注記**  
 AWS GovCloud (US) Region は TLS\$1CHACHA20\$1POLY1305\$1SHA256 をサポートしていません。
+ TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 (TLS 1.2)
+ TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 (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\$1GCM です。 | [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\$1GCM です。 | [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 のサービス できません。

# 外部キーストアへのアクセスの制御
<a name="authorize-xks-key-store"></a>

標準の KMS キーで使用するすべての AWS KMS アクセスコントロール機能 - [キーポリシー](key-policies.md)、[IAM ポリシー](iam-policies.md)、[許可](grants.md) - は、外部キーストアの KMS キーでも同じように機能します。IAM ポリシーを使うことで、外部キーストアを作成し管理するための API オペレーションへのアクセスを、制御できます。IAM ポリシーとキーポリシーを使用して、外部キーストア AWS KMS keys の へのアクセスを制御します。 AWS 組織および VPC エンドポイント[ポリシーのサービスコントロール](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)ポリシーを使用して、外部キーストアの KMS キーへのアクセスを制御することもできます。 [https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy)

ユーザーとロールには、それらが実行する可能性の高いタスクに必要なアクセス許可のみ、付与することが推奨されます。

**Topics**
+ [外部キーストアマネージャーの承認](#authorize-xks-managers)
+ [外部キーストアにおける KMS キーのユーザー認証](#authorize-xks-users)
+ [が外部キーストアプロキシと通信 AWS KMS することを許可する](#allowlist-kms-xks)
+ [外部キーストアプロキシ認可 (オプション)](#xks-proxy-authorization)
+ [mTLS 認証 (廃止)](#xks-mtls)

## 外部キーストアマネージャーの承認
<a name="authorize-xks-managers"></a>

外部キーストアを作成し管理するプリンシパルには、カスタムキーストアオペレーションへのアクセス許可が必要になります。次のリストは、 外部キーストアマネージャーに必要な最小限のアクセス許可です。カスタムキーストアは AWS リソースではないため、他の のプリンシパルの外部キーストアにアクセス許可を付与することはできません AWS アカウント。
+ `kms:CreateCustomKeyStore`
+ `kms:DescribeCustomKeyStores`
+ `kms:ConnectCustomKeyStore`
+ `kms:DisconnectCustomKeyStore`
+ `kms:UpdateCustomKeyStore`
+ `kms:DeleteCustomKeyStore`

[Amazon VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を使用して外部キーストアを作成し、VPC エンドポイントサービスが別の によって所有されている場合は AWS アカウント、次のアクセス許可も必要です。
+ `ec2:DescribeVPCEndpointServices`

外部キーストアを作成するプリンシパルは、外部キーストアコンポーネントを作成し構成するためのアクセス許可が必要になります。プリンシパルは、外部キーストアを自分のアカウントのみで作成できます。[VPC エンドポイントサービスに接続できる](choose-xks-connectivity.md#xks-vpc-connectivity)外部キーストアを作成するには、プリンシパルは、次のコンポーネントを作成するためのアクセス許可を持っている必要があります。
+ An Amazon VPC
+ パブリックサブネットおよびプライベートサブネット
+ Network Load Balancer とターゲットグループ
+ Amazon VPC エンドポイントサービス

詳細については、「[Amazon VPC の Identity and Access Management](https://docs.aws.amazon.com/vpc/latest/userguide/security-iam.html)」、「[VPC エンドポイントおよび VPC エンドポイントサービスの Identity and Access Management](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-iam.html)」、「[Elastic Load Balancing API のアクセス許可](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/elb-api-permissions.html)」を参照してください。

## 外部キーストアにおける KMS キーのユーザー認証
<a name="authorize-xks-users"></a>

外部キーストア AWS KMS keys で を作成および管理するプリンシパルには、 で KMS キーを作成および管理するプリンシパルと同じ[アクセス許可](create-keys.md#create-key-permissions)が必要です AWS KMS。外部キーストアの KMS キーの、[デフォルトのキーポリシー](key-policy-default.md)は、 AWS KMSの KMS キーの、デフォルトのキーポリシーと同一です。タグとエイリアスを使用して KMS キーへのアクセスを制御する[属性ベースのアクセス制御](abac.md) (ABAC) は、カスタムキーストアの KMS キーでも同様に有効です。

カスタムキーストアで暗号化オペレーションに KMS キーを使用するプリンシパルには、KMS キーで[暗号化オペレーション](manage-cmk-keystore.md#use-cmk-keystore) ([KMS: Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)など) を実行するアクセス許可が必要です。　 これらのアクセス権限は、IAM またはキーポリシーで指定できます。ただし、カスタムキーストアで KMS キーを使用するための追加のアクセス許可は必要ありません。

外部キーストアの KMS キーにのみ適用されるアクセス許可を設定するには、値が `EXTERNAL_KEY_STORE` の [`kms:KeyOrigin`](conditions-kms.md#conditions-kms-key-origin) ポリシー条件を使用します。この条件を使用すれば、[kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) アクセス許可、または KMS キーリソースに固有のアクセス許可を制限できます。例えば、次の IAM ポリシーを使えば、アタッチされた ID は、KMS が外部キーストアにある限り、アカウントのすべての KMS キーで、指定されたオペレーションを呼び出すことができます。アクセス許可は、外部キーストアの KMS キーと の KMS キーに制限できますが AWS アカウント、アカウント内の特定の外部キーストアには制限できないことに注意してください。

```
{
  "Sid": "AllowKeysInExternalKeyStores",
  "Effect": "Allow",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeyOrigin": "EXTERNAL_KEY_STORE"
    }
  }
}
```

## が外部キーストアプロキシと通信 AWS KMS することを許可する
<a name="allowlist-kms-xks"></a>

AWS KMS は、指定した外部キー[ストアプロキシを介してのみ外部キー](keystore-external.md#concept-xks-proxy)マネージャーと通信します。 AWS KMS は、指定した外部キーストアプロキシ認証情報を使用して[署名バージョン 4 (SigV4) プロセス](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)を使用してリクエストに署名することで、プロキシを認証します。 [外部キーストアのプロキシ認証の認証情報](keystore-external.md#concept-xks-credential)外部キーストアプロキシに[パブリックエンドポイント接続](choose-xks-connectivity.md#xks-connectivity-public-endpoint)を使用している場合、 AWS KMS に追加のアクセス許可は必要ありません。

ただし、[VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を使用している場合は、Amazon VPC エンドポイントサービスへのインターフェイスエンドポイントを作成する AWS KMS アクセス許可を付与する必要があります。このアクセス許可は、外部キーストアプロキシが VPC にあるか、外部キーストアプロキシが他の場所にあるかにかかわらず必要ですが、VPC エンドポイントサービスを使用して通信します AWS KMS。

 AWS KMS がインターフェイスエンドポイントを作成できるようにするには、[Amazon VPC コンソール](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)または [ModifyVpcEndpointServicePermissions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpointServicePermissions.html) オペレーションを使用します。次のプリンシパルにアクセス許可を付与します:`cks.kms.<region>.amazonaws.com`。

Amazon VPC エンドポイントサービスが外部キーストア (XKS) を所有している AWS アカウント 以外の によって AWS アカウント 所有されている場合は、VPC エンドポイントサービスへの XKS アクセスも許可する必要があります。これを行うには、Amazon VPC エンドポイントサービスの[プリンシパルとして XKS AWS アカウント ID を許可リストに登録します](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)。

------
#### [ Same AWS アカウント ]

VPC エンドポイントサービスが外部キーストア AWS アカウント と同じ によって所有されている場合、VPC エンドポイントサービスのプリン**シパルを許可する**リスト AWS KMS に を追加する必要があります。

次の例では、 [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html) AWS CLI コマンドを使用して、 AWS KMS が米国西部 (オレゴン) (us-west-2) リージョンで指定された VPC エンドポイントサービスに接続できるようにします。このコマンドを使用する前に、Amazon VPC サービス ID と を設定の AWS リージョン 有効な値に置き換えます。

```
modify-vpc-endpoint-service-permissions
--service-id vpce-svc-12abc34567def0987
--add-allowed-principals '["cks.kms.us-west-2.amazonaws.com"]'
```

このアクセス許可を削除するには、[Amazon VPC コンソール](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)か、[ModifyVpcEndpointServicePermissions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpointServicePermissions.html) を `RemoveAllowedPrincipals` パラメータと共に使用します。

------
#### [ Cross AWS アカウント ]

VPC エンドポイントサービスが別の によって所有されている場合は AWS アカウント、 AWS KMS と外部キーストアの両方を VPC エンドポイントサービスのプリン**シパル**を許可するリストに追加する必要があります。

次の例では、 [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html) AWS CLI コマンドを使用して、 AWS KMS と外部キーストア (XKS) の両方が、米国西部 (オレゴン) (us-west-2) リージョンで指定された VPC エンドポイントサービスに接続できるようにします。このコマンドを使用する場合は、設定上の有効な値で Amazon VPC サービス ID、 AWS リージョン、IAM プリンシパル ARN を置き換えてください。IAM プリンシパルは、XKS 所有者のプリンシパルに置き換える必要があります AWS アカウント。

この例では、 `arn:aws:iam::123456789012:role/cks_role` は XKS 所有者アカウントの IAM プリンシパルで、XKS の作成と更新に加えて、XKS を VPC エンドポイントサービスに接続するために使用されます。XKS 所有者アカウントのすべてのプリンシパルに VPC エンドポイントサービスへのアクセスを許可する場合は、`arn:aws:iam::123456789012:root` を指定できます。

```
modify-vpc-endpoint-service-permissions
--service-id vpce-svc-12abc34567def0987
--add-allowed-principals '["cks.kms.us-west-2.amazonaws.com", "arn:aws:iam::123456789012:role/cks_role"]'
```

このアクセス許可を削除するには、[Amazon VPC コンソール](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)か、[ModifyVpcEndpointServicePermissions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpointServicePermissions.html) を `RemoveAllowedPrincipals` パラメータと共に使用します。

------

## 外部キーストアプロキシ認可 (オプション)
<a name="xks-proxy-authorization"></a>

外部キーストアプロキシの中には、外部キーを使用するための認可要件を実装しているものがあります。外部キーストアプロキシは、特定のユーザーが特定の条件下でのみ特定のオペレーションをリクエストすることを許可する、認可スキームの設計と実装が許可されていますが、必須ではありません。例えばプロキシは、ユーザー A に、特定の外部キーを使用した暗号化は許可するが、それを使用した復号は許可しないように設計されていることがあります。

プロキシ認可は、すべての外部キーストア[プロキシに必要な SigV4-basedプロキシ認証](keystore-external.md#concept-xks-credential)とは無関係です。 AWS KMS また、外部キーストアやその KMS キーに影響するオペレーションへのアクセスを認可する、キーポリシー、IAM ポリシー、グラントとも無関係です。

外部キーストアプロキシによる認可を有効にするには、発信者、KMS キー、 AWS KMS オペレーション、 AWS のサービス (存在する場合) など、各[プロキシ API リクエスト](keystore-external.md#concept-proxy-apis)にメタデータ AWS KMS を含めます。外部キープロキシ API のバージョン 1 (v1) のリクエストメタデータは、次のとおりです。

```
"requestMetadata": {
    "awsPrincipalArn": string,
    "awsSourceVpc": string, // optional
    "awsSourceVpce": string, // optional
    "kmsKeyArn": string,
    "kmsOperation": string,
    "kmsRequestId": string,
    "kmsViaService": string // optional
}
```

たとえば、特定のプリンシパル (`awsPrincipalArn`) からのリクエストを許可するようにプロキシを設定できますが、リクエストがプリンシパルに代わって特定の AWS のサービス () によって行われた場合のみです`kmsViaService`。

プロキシ認可に失敗すると、関連する AWS KMS オペレーションは失敗し、エラーの内容を説明するメッセージが表示されます。詳細については、「[プロキシの承認に関する問題](xks-troubleshooting.md#fix-xks-authorization) 」を参照してください。

## mTLS 認証 (廃止)
<a name="xks-mtls"></a>

このガイドの以前のバージョンでは、リクエストを認証するためのオプションのセカンダリ認証メカニズムとして*相互 Transport Layer Security* (mTLS) について説明していました AWS KMS。mTLS では、TLS チャネルを介して通信する (クライアントAWS KMS として、およびサーバーとして XKS プロキシとして) 両方の当事者が証明書を使用して相互に認証します。

ただし、[Chrome ルートプログラムポリシー (セクション 4.2.2)](https://googlechrome.github.io/chromerootprogram/policy-archive/policy-version-1-7/#422-pki-hierarchies-included-in-the-chrome-root-store) の変更により、Chrome ルートストアに含まれるパブリックに信頼されたルート CAs が、2026 年 6 月 15 日以降に clientAuth Extended Key Usage (EKU) 拡張機能を使用して証明書を発行することが禁止されます。その結果、 は [Amazon Trust Services](https://www.amazontrust.com/repository/) から mTLS に適したクライアント証明書を取得 AWS KMS できなくなります。2026 年 3 月 16 AWS KMS 日以降に で新しい外部キーストアを作成するために使用される XKS プロキシには、mTLS は必要ありません。2026 年 6 月 15 日以降、mTLS を要求するように設定された XKS プロキシは と通信できなくなります AWS KMS。お客様は、リクエストの送信元を検証するために SigV4 認証を使用する必要があります AWS KMS。詳細については、[「外部キーストアプロキシ認証情報](keystore-external.md#concept-xks-credential)」を参照してください。

# 外部キーストアプロキシとの接続オプションを選択する
<a name="choose-xks-connectivity"></a>

外部キーストアを作成する前に、 が外部キーストアコンポーネントと AWS KMS 通信する方法を決定する接続オプションを選択します。選択した接続オプションによって、残りの計画プロセスが決まります。

外部キーストアを作成する場合は、 が[外部キーストアプロキシ](keystore-external.md#concept-xks-proxy)と AWS KMS 通信する方法を決定する必要があります。この選択により、必要なコンポーネントとその設定方法が決まります。 は次の接続オプション AWS KMS をサポートしています。
+ [パブリックエンドポイント接続](#xks-connectivity-public-endpoint)
+ [VPC エンドポイントサービス接続](#xks-vpc-connectivity)

パフォーマンスとセキュリティの目標に合ったオプションを選択します。

開始する前に、[外部キーストアが必要であることを確認してください](keystore-external.md#do-i-need-xks)。ほとんどのお客様は、キーマテリアルでバックアップされた KMS AWS KMS キーを使用できます。

**考慮事項**
+ 外部キーストアプロキシが外部キーマネージャーに組み込まれている場合は、接続が事前に決められている可能性があります。ガイダンスについては、外部キーマネージャーまたは外部キーストアプロキシのドキュメントを参照してください。
+ [外部キーストアプロキシの接続オプション](update-xks-keystore.md)は、稼働中の外部キーストアでも変更できます。ただし、中断を最小限に抑え、エラーを回避し、データを暗号化する暗号化キーに継続的にアクセスできるように、プロセスを慎重に計画して実行する必要があります。

## パブリックエンドポイント接続
<a name="xks-connectivity-public-endpoint"></a>

AWS KMS は、パブリックエンドポイントを使用してインターネット経由で外部キーストアプロキシ (XKS プロキシ) に接続します。

この接続オプションはセットアップと保守が簡単で、一部のキー管理モデルとも問題なく連携します。ただし、一部の組織のセキュリティ要件を満たしていない場合があります。

![\[パブリックエンドポイント接続\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/xks-public-endpoint-60.png)


**要件**

パブリックエンドポイント接続を選択する場合、以下が必要です。
+ 外部キーストアプロキシは、パブリックにルーティング可能なエンドポイントからアクセスできる必要があります。
+ [プロキシ URI パス](create-xks-keystore.md#require-path)値が異なる場合は、複数の外部キーストアに同じパブリックエンドポイントを使用できます。
+ キーストアが異なる にある場合でも AWS リージョン、パブリックエンドポイント接続を持つ外部キーストアと、同じ 内の VPC エンドポイントサービス接続を持つ外部キーストアに同じエンドポイントを使用することはできません AWS アカウント。
+ 外部キーストアでサポートされている公開認証機関が発行した TLS 証明書を取得する必要があります。リストについては、「[Trusted Certificate Authorities](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/TrustedCertificateAuthorities)」(信頼された証明機関) を参照してください。

  TLS 証明書のサブジェクト共通名 (CN) は、[外部キーストアプロキシのプロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)のドメイン名と一致する必要があります。例えば、パブリックエンドポイントが `https://myproxy.xks.example.com` の場合、TLS、TLS 証明書の CN は、`myproxy.xks.example.com` または `*.xks.example.com` である必要があります。
+  AWS KMS と外部キーストアプロキシ間のファイアウォールで、プロキシのポート 443 との間のトラフィックが許可されていることを確認します。IPv4 経由でポート 443 で AWS KMS 通信します。この値は設定できません。

外部キーストアのすべての要件については、[前提条件を構成する](create-xks-keystore.md#xks-requirements)を参照してください。

## VPC エンドポイントサービス接続
<a name="xks-vpc-connectivity"></a>

AWS KMS は、作成した Amazon VPC エンドポイントサービスへのインターフェイスエンドポイントを作成して、外部キーストアプロキシ (XKS プロキシ) に接続します。ユーザーは、[VPC エンドポイントサービス](vpc-connectivity.md)を作成し、VPC を外部キーマネージャーに接続する責任があります。

エンドポイントサービスの通信には、[AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/) を含むすべての[サポートされている Network-to-Amazon VPC オプション](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html)を使用できます。

この接続オプションは、セットアップと保守が複雑です。ただし AWS PrivateLink、 を使用します。これにより、 AWS KMS はパブリックインターネットを使用せずに Amazon VPC と外部キーストアプロキシにプライベートに接続できます。

外部キーストアプロキシは Amazon VPC にあります。

![\[VPC エンドポイントサービス接続 - VPC 内の XKS プロキシ\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/xks-proxy-in-vpc-60.png)


または、外部キーストアプロキシを の外部に配置し AWS クラウド 、Amazon VPC エンドポイントサービスを との安全な通信にのみ使用できます AWS KMS。

![\[VPC エンドポイントサービス接続 - の外部にある XKS プロキシ AWS\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/xks-proxy-via-vpc-60.png)


外部キーストアを別の が所有する Amazon VPC エンドポイントサービスに接続することもできます AWS アカウント。どちらも、 AWS KMS と VPC エンドポイントサービス間の通信を許可するために必要な[アクセス許可](authorize-xks-key-store.md#authorize-xks-managers) AWS アカウント が必要です。

**詳細はこちら:**
+ [前提条件の組み合わせ](create-xks-keystore.md#xks-requirements)を含む、外部キーストアを作成するためのプロセスを確認します。外部キーストアを作成する際に、必要なコンポーネントがすべて揃っていることを確認するのに役立ちます。
+ 外部キーストア管理者およびユーザーが必要とする許可を含む、[外部キーストアへのアクセスを制御する](authorize-xks-key-store.md)方法について説明します。
+ が外部キーストア AWS KMS に記録する [Amazon CloudWatch メトリクスとディメンション](monitoring-cloudwatch.md#kms-metrics)について説明します。パフォーマンスや運用上の問題の兆候を早期に検出するために、外部キーストアをモニタリングするアラームを作成することを強くお勧めします。

# VPC エンドポイントサービス接続を設定する
<a name="vpc-connectivity"></a>

このセクションのガイダンスを使用して、[VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を使用する外部キーストアに必要な AWS リソースおよび関連コンポーネントを作成および設定します。この接続オプションに一覧表示されているリソースは、[すべての外部キーストアに必要なリソース](create-xks-keystore.md#xks-requirements)を補足するものです。必要なリソースを作成、設定後に、[外部キーストアを作成](create-xks-keystore.md)できます。

Amazon VPC で外部キーストアプロキシを見つけるか、 の外部でプロキシを見つけ AWS て、VPC エンドポイントサービスを通信に使用できます。

開始する前に、[外部キーストアが必要であることを確認してください](keystore-external.md#do-i-need-xks)。ほとんどのお客様は、キーマテリアルでバックアップされた KMS AWS KMS キーを使用できます。

**注記**  
VPC エンドポイントサービスの接続に必要な要素の一部は、外部キーマネージャーに含まれている場合があります。また、ソフトウェアに追加の設定要件が存在する場合があります。このセクションの AWS リソースを作成して設定する前に、プロキシとキーマネージャーのドキュメントを参照してください。

**Topics**
+ [VPC エンドポイントサービス接続の要件](#xks-vpce-service-requirements)
+ [ステップ 1: Amazon VPC とサブネットを作成する](#xks-create-vpc)
+ [ステップ 2: ターゲットグループを作成する](#xks-target-group)
+ [ステップ 3: Network Load Balancer を作成する](#xks-nlb)
+ [ステップ 4: VPC エンドポイントサービスを作成する](#xks-vpc-svc)
+ [ステップ 5: プライベート DNS 名ドメインを検証する](#xks-private-dns)
+ [ステップ 6: AWS KMS に VPC エンドポイントサービスへの接続を許可する](#xks-vpc-authorize-kms)

## VPC エンドポイントサービス接続の要件
<a name="xks-vpce-service-requirements"></a>

外部キーストアの VPC エンドポイントサービス接続を選択する場合、次のリソースが必要です。
+ 外部キーマネージャーに接続されている Amazon VPC。2 つの異なるアベイラビリティーゾーンで 2 つ以上のプライベート[サブネット](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html)が必要です。

  外部キーストアでの使用の[要件を満たしている](#xks-vpc-requirements)場合は、外部キーストアに既存の Amazon VPC を使用できます。複数の外部キーストアが Amazon VPC を共有できますが、各外部キーストアに独自の VPC エンドポイントサービスとプライベート DNS 名が必要です。
+ [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) と[ターゲットグループ](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html)を備え、[AWS PrivateLinkを搭載した Amazon VPC エンドポイントサービスです](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)。

  エンドポイントサービスは承認を要求できません。また、許可されたプリンシパルとして AWS KMS を追加する必要があります。これにより、 AWS KMS は外部キーストアプロキシと通信できるようにインターフェイスエンドポイントを作成できます。
+  AWS リージョン内で一意の、VPC エンドポイントサービスのプライベート DNS 名です。

  プライベート DNS 名は、上位のパブリックドメインのサブドメインである必要があります。例えば、プライベート DNS 名が `myproxy-private.xks.example.com` の場合、`xks.example.com` または `example.com` などのパブリックドメインのサブドメインである必要があります。

  プライベート DNS 名の DNS ドメインの[所有権を検証する](#xks-private-dns)必要があります。
+ 外部キーストアプロキシの[サポートされている公開認証機関](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/TrustedCertificateAuthorities)が発行した TLS 証明書。

  TLS 証明書のサブジェクト共通名 (CN) は、プライベート DNS 名と一致している必要があります。例えば、プライベート DNS 名が `myproxy-private.xks.example.com` の場合、TLS 証明書の CN は、`myproxy-private.xks.example.com` または `*.xks.example.com` である必要があります。
+ ネットワークレイテンシーを最小限に抑えるには、[外部キーマネージャー](keystore-external.md#concept-ekm)に最も近い[サポートされている AWS リージョン](keystore-external.md#xks-regions) に AWS コンポーネントを作成します。可能な場合は、ネットワークラウンドトリップ時間 (RTT) が 35 ミリ秒以下のリージョンを選択します。

外部キーストアのすべての要件については、[前提条件を構成する](create-xks-keystore.md#xks-requirements)を参照してください。

## ステップ 1: Amazon VPC とサブネットを作成する
<a name="xks-create-vpc"></a>

VPC エンドポイントサービス接続には、2 つ以上のプライベートサブネットをもつ外部キーマネージャーに接続された Amazon VPC が必要です。Amazon VPC を作成することも、外部キーストアの要件を満たす既存の Amazon VPC を使用することもできます。新しい Amazon VPC 作成のヘルプについては、「Amazon Virtual Private Cloud ユーザーガイド」の「[VPC を作成する](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC)」を参照してください。

### Amazon VPC の要件
<a name="xks-vpc-requirements"></a>

Amazon VPC エンドポイントサービスには、外部キーストアと連動するために次のプロパティが必要です。
+ 外部キーストアと同じ[サポートされるリージョン](keystore-external.md#xks-regions)に存在する必要があります。
+ それぞれ異なるアベイラビリティーゾーンに、2 つ以上のプライベートサブネットが必要です。
+ Amazon VPC のプライベート IP アドレス範囲が、[外部キーマネージャー](keystore-external.md#concept-ekm)をホストするデータセンターのプライベート IP アドレス範囲と重複しないようにする必要があります。
+ すべてのコンポーネントが IPv4 を使用する必要があります。

Amazon VPC を外部キーストアプロキシに接続するには、多数の方法があります。必要なパフォーマンスとセキュリティのニーズを満たすオプションを選択します。リストについては、「[VPC を他のネットワークに接続する](https://docs.aws.amazon.com/vpc/latest/userguide/extend-intro.html)」および「[Network-to-Amazon VPC の接続オプション](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html)」を参照してください。詳細については、「[Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)」、および「[AWS Site-to-Site VPN ユーザーガイド](https://docs.aws.amazon.com/vpn/latest/s2svpn/)」を参照してください。

### 外部キーストア用 Amazon VPC を作成する
<a name="xks-vpc-create"></a>

次の手順に従って、外部キーストア用の Amazon VPC を作成します。Amazon VPC は、[VPC エンドポイントサービス接続](choose-xks-connectivity.md)オプションを選択した場合にのみ必要です。外部キーストアの要件を満たす既存の Amazon VPC を使用できます。

次の必須値を使用して、「[VPC、サブネット、他の VPC リソースを作成する](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#create-vpc-and-other-resources)」トピックの手順に従います。他のフィールドについては、デフォルト値を受け入れ、必要に応じて名前を指定します。


| フィールド | 値 | 
| --- | --- | 
| IPv4 CIDR ブロック | VPC の IP アドレスを入力します。Amazon VPC のプライベート IP アドレス範囲が、[外部キーマネージャー](keystore-external.md#concept-ekm)をホストするデータセンターのプライベート IP アドレス範囲と重複しないようにする必要があります。 | 
| アベイラビリティーゾーン数 (AZ) | 2 以上 | 
| パブリックサブネット数 |  何も必要ありません (0)  | 
| プライベートサブネット数 | AZ ごとに 1 つ | 
| NAT ゲートウェイ | 何も必要ありません。 | 
| VPC エンドポイント | 何も必要ありません。 | 
| [Enable DNS hostnames] (DNS ホスト名を有効化) | はい | 
| DNS 解決を有効にする | はい | 

必ず VPC 通信をテストしてください。例えば、外部キーストアプロキシが Amazon VPC にない場合は、Amazon VPC に Amazon EC2 インスタンスを作成し、Amazon VPC が外部キーストアプロキシと通信できることを検証します。

### VPC を外部キーマネージャーに接続する
<a name="xks-vpc-to-ekm"></a>

Amazon VPC がサポートする[ネットワーク接続オプション](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html)のいずれかを使用して、外部キーマネージャーをホストするデータセンターに VPC を接続します。VPC 内の Amazon EC2 インスタンス (または、VPC 内にある場合は外部キーストアプロキシ) がデータセンターおよび外部キーマネージャーと通信できることを確認します。

## ステップ 2: ターゲットグループを作成する
<a name="xks-target-group"></a>

必要な VPC エンドポイントサービスを作成する前に、必要なコンポーネント、Network Load Balancer (NLB)、ターゲットグループを作成します。Network Load Balancer (NLB) は、リクエストを複数の正常なターゲットに分散し、いずれのターゲットもリクエストを処理できるようにします。このステップでは、外部キーストアプロキシ用に 2 つ以上のホストを含むターゲットグループを作成し、そのターゲットグループに IP アドレスを登録します。

次の必須値を使用して、「[ターゲットグループの設定](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html#configure-target-group)」トピックの手順に従います。他のフィールドについては、デフォルト値を受け入れ、必要に応じて名前を指定します。


| フィールド | 値 | 
| --- | --- | 
| 対象タイプ | IP アドレス | 
| プロトコル | TCP | 
| ポート |  443  | 
| IP アドレスタイプ | IPv4 | 
| VPC | 外部キーストアの VPC エンドポイントサービスを作成する VPC を選択します。 | 
| ヘルスチェックプロトコルとパス | ヘルスチェックプロトコルとパスは、外部キーストアプロキシの設定に応じて異なります。外部キーマネージャーまたは外部キーストアプロキシのドキュメントを参照してください。ターゲットグループのヘルスチェック設定に関する一般情報は、Network Load Balancer 用 Elastic Load Balancing ユーザーガイドの「[Health checks for your target groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-health-checks.html)」を参照してください。 | 
| Network | その他のプライベート IP アドレス | 
| IPv4 アドレス | 外部キーストアプロキシのプライベートアドレス | 
| ポート | 443 | 

## ステップ 3: Network Load Balancer を作成する
<a name="xks-nlb"></a>

Network Load Balancer は、外部キーストアプロキシへの AWS KMS からのリクエストなどのネットワークトラフィックを、設定されたターゲットに分散します。

「[ロードバランサーとリスナーの設定](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html#configure-load-balancer)」トピックの手順に従ってリスナーを設定および追加し、次の必須値を使用してロードバランサーを作成します。他のフィールドについては、デフォルト値を受け入れ、必要に応じて名前を指定します。


| フィールド | 値 | 
| --- | --- | 
| スキーム | 内部 | 
| IP アドレスタイプ | IPv4 | 
| ネットワークマッピング |  外部キーストアの VPC エンドポイントサービスを作成する VPC を選択します。  | 
| マッピング | VPC サブネットに設定した両方のアベイラビリティーゾーン (2 つ以上) を選択します。サブネット名とプライベート IP アドレスを検証します。 | 
| プロトコル | TCP | 
| ポート | 443 | 
| デフォルトアクション: 転送 | Network Load Balancer の[ターゲットグループ](#xks-target-group)を選択します。 | 

## ステップ 4: VPC エンドポイントサービスを作成する
<a name="xks-vpc-svc"></a>

通常、サービスへのエンドポイントを作成します。ただし、VPC エンドポイントサービスを作成すると、ユーザーはプロバイダーになり、サービスへのエンドポイント AWS KMS が作成されます。外部キーストアの場合は、前のステップで作成した Network Load Balancer で VPC エンドポイントサービスを作成します。VPC エンドポイントサービスは、外部キーストア AWS アカウント と同じ にすることも、別の にすることもできます AWS アカウント。

複数の外部キーストアが Amazon VPC を共有できますが、各外部キーストアに独自の VPC エンドポイントサービスとプライベート DNS 名が必要です。

「[エンドポイントサービスの作成](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html#create-endpoint-service-nlb)」トピックの手順に従って、次の必須値を含む VPC エンドポイントサービスを作成します。他のフィールドについては、デフォルト値を受け入れ、必要に応じて名前を指定します。


| フィールド | 値 | 
| --- | --- | 
| ロードバランサーのタイプ | Network | 
| 使用可能なロードバランサー | 前のステップで作成した [Network Load Balancer](#xks-nlb) を選択します。新しいロードバランサーがリストに表示されない場合は、その状態がアクティブであることを確認します。ロードバランサーの状態がプロビジョニングからアクティブに変わるまでに、数分かかる場合があります。 | 
| 承認が必要です | False。チェックボックスをオフにします。acceptance*.* AWS KMS can not connect to the VPC endpoint service without a manual acceptance。承認が必要な場合、[外部キーストアを作成](create-xks-keystore.md)しようとすると、`XksProxyInvalidConfigurationException` の例外が発生して失敗します。 | 
| プライベート DNS 名を有効にする | プライベート DNS 名をサービスに関連付ける | 
| プライベート DNS 名 |  AWS リージョンで一意のプライベート DNS 名を入力します。プライベート DNS 名は、上位のパブリックドメインのサブドメインである必要があります。例えば、プライベート DNS 名が `myproxy-private.xks.example.com` の場合、`xks.example.com` または `example.com` などのパブリックドメインのサブドメインである必要があります。このプライベート DNS 名は、外部キーストアプロキシに設定されている TLS 証明書のサブジェクト共通名 (CN) と一致する必要があります。例えば、プライベート DNS 名が `myproxy-private.xks.example.com` の場合、TLS 証明書の CN は、`myproxy-private.xks.example.com` または `*.xks.example.com` である必要があります。証明書とプライベート DNS 名が一致しない場合、外部キーストアを外部キーストアプロキシに接続しようとすると、`XKS_PROXY_INVALID_TLS_CONFIGURATION` の接続エラーコードが発生して失敗します。詳細については、「[一般的な設定エラー](xks-troubleshooting.md#fix-xks-gen-configuration)」を参照してください。 | 
| サポートされている IP アドレスのタイプ | IPv4 | 

## ステップ 5: プライベート DNS 名ドメインを検証する
<a name="xks-private-dns"></a>

VPC エンドポイントサービスを作成すると、そのドメイン検証ステータスは `pendingVerification` になります。VPC エンドポイントサービスを使用して外部キーストアを作成する前に、このステータスが `verified` になっている必要があります。プライベート DNS 名に関連付けられたドメインを所有していることを検証するには、パブリック DNS サーバーに TXT レコードを作成する必要があります。

たとえば、VPC エンドポイントサービスのプライベート DNS 名が の場合`myproxy-private.xks.example.com`、 `xks.example.com`または などのパブリックドメインに TXT レコードを作成する必要があります。 は最初に で TXT レコードを探`xks.example.com`し`example.com`、次に で TXT レコード AWS PrivateLink を探します`example.com`。

**ヒント**  
TXT レコードを追加した後、**[Domain verification status]** (ドメイン検証ステータス) の値が `pendingVerification` から `verify` に変わるまでに数分かかる場合があります。

最初に、次のいずれかの方法でドメインの検証ステータスを確認します。有効な値は、`verified`、`pendingVerification`、`failed` です。
+ [Amazon VPC コンソール](https://console.aws.amazon.com/vpc)で、**[Endpoint services]** (エンドポイントサービス) を選択し、エンドポイントサービスを選択します。詳細ペインで、**[Domain verification status]** (ドメイン検証ステータス) を参照してください。
+ [DescribeVpcEndpointServiceConfigurations](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcEndpointServiceConfigurations.html) オペレーションを使用します。`State` 値は `ServiceConfigurations.PrivateDnsNameConfiguration.State` フィールドにあります。

検証ステータスが `verified` でない場合は、[ドメイン所有権の検証](https://docs.aws.amazon.com/vpc/latest/privatelink/manage-dns-names.html#verify-domain-ownership)トピックの手順に従ってドメインの DNS サーバーに TXT レコードを追加し、TXT レコードが公開されていることを検証します。次に、検証ステータスを再度チェックします。

プライベート DNS ドメイン名の A レコードを作成する必要はありません。が VPC エンドポイントサービスへのインターフェイスエンドポイント AWS KMS を作成すると、 AWS PrivateLink は AWS KMS VPC 内のプライベートドメイン名に必要な A レコードを持つホストゾーンを自動的に作成します。これは、VPC エンドポイントサービス接続を備える外部キーストアの場合、[外部キーストア](xks-connect-disconnect.md)を外部キーストアプロキシに接続したときに発生します。

## ステップ 6: AWS KMS に VPC エンドポイントサービスへの接続を許可する
<a name="xks-vpc-authorize-kms"></a>

Amazon VPC エンドポイントサービスのアクセス許可を管理するには、次の手順を参照してください。各ステップは、外部キーストア、VPC エンドポイントサービス、 AWS アカウントの間の接続と設定によって異なります。

------
#### [ Same AWS アカウント ]

VPC エンドポイントサービスが外部キーストア AWS アカウント と同じ によって所有されている場合、VPC エンドポイントサービスのプリン**シパルを許可する**リスト AWS KMS に を追加する必要があります。これにより、 AWS KMS は VPC エンドポイントサービスへのインターフェイスエンドポイントを作成できます。 AWS KMS が許可されたプリンシパルでない場合、外部キーストアの作成の試行は`XksProxyVpcEndpointServiceNotFoundException`例外で失敗します。

「AWS PrivateLink ガイド」の「[Manage permissions](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)」トピックの手順に従ってください。次の必須値を使用します。


| フィールド | 値 | 
| --- | --- | 
| AWS KMS ARN | cks.kms.<region>.amazonaws.com例: `cks.kms.us-east-1.amazonaws.com` | 

------
#### [ Cross AWS アカウント ]

VPC エンドポイントサービスが別の によって所有 AWS アカウント されている場合、プリン**シパルを許可**リストに AWS KMS と アカウントの両方を追加する必要があります。これにより、 AWS KMS と外部キーストアは VPC エンドポイントサービスへのインターフェイスエンドポイントを作成できます。 AWS KMS が許可されていないプリンシパルの場合、外部キーストアを作成しようとすると、`XksProxyVpcEndpointServiceNotFoundException` の例外が発生して失敗します。外部キーストアが存在する AWS アカウント ARN を指定する必要があります。

「AWS PrivateLink ガイド」の「[Manage permissions](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)」トピックの手順に従ってください。次の必須値を使用します。


| フィールド | 値 | 
| --- | --- | 
| AWS KMS ARN | cks.kms.<region>.amazonaws.com例: `cks.kms.us-east-1.amazonaws.com` | 
| AWS アカウント ARN | arn:aws:iam::111122223333:role/role\$1name例: `arn:aws:iam::123456789012:role/cks_role` | 

------

**Next**: [外部キーストアを作成する](create-xks-keystore.md)

# 外部キーストアを作成する
<a name="create-xks-keystore"></a>

各 AWS アカウント およびリージョンに 1 つまたは複数の外部キーストアを作成できます。各外部キーストアは AWS、 の外部キーマネージャー、および AWS KMS と外部キーマネージャー間の通信を仲介する外部キーストアプロキシ (XKS プロキシ) に関連付ける必要があります。詳細については、「[外部キーストアプロキシとの接続オプションを選択する](choose-xks-connectivity.md)」を参照してください。開始する前に、[外部キーストアが必要であることを確認してください](keystore-external.md#do-i-need-xks)。ほとんどのお客様は、キーマテリアルでバックアップされた KMS AWS KMS キーを使用できます。

**ヒント**  
外部キーマネージャーの中には、外部 キーを作成するための簡単な方法が用意されているものもあります。詳細については外部キーマネージャーのドキュメントを参照してください。

外部キーストアを作成するときは、事前に[前提条件を構成する](#xks-requirements)必要があります。作成中に、外部キーストアのプロパティを指定します。最も重要なのは、 の外部キーストアが[パブリックエンドポイント](choose-xks-connectivity.md#xks-connectivity-public-endpoint)を使用するか[、VPC エンドポイントサービス](choose-xks-connectivity.md#xks-vpc-connectivity) AWS KMS を使用して外部キーストアプロキシに接続するかを示します。また、プロキシの URI エンドポイントや、 が API リクエストをプロキシ AWS KMS に送信するプロキシエンドポイント内のパスなど、接続の詳細も指定します。

**考慮事項**
+ KMS は IPv6 経由で外部キーストアと通信することはできません。
+  パブリックエンドポイント接続を使用する場合は、 AWS KMS が HTTPS 接続を使用してインターネット経由でプロキシと通信できることを確認してください。これには、外部キーストアプロキシで TLS を設定し、 AWS KMS とプロキシ間のファイアウォールが、プロキシのポート 443 との間の IPv4 トラフィックを許可することが含まれます。パブリックエンドポイント接続を使用して外部キーストアを作成するときに、 は外部キーストアプロキシにステータスリクエストを送信して接続を AWS KMS テストします。このテストでは、エンドポイントが到達可能であることと、外部キーストアプロキシが[外部キーストアプロキシ認証の認証情報](keystore-external.md#concept-xks-credential)で署名されたリクエストを受け入れることを、確認します。このテストリクエストに失敗すると、外部キーストアを作成するオペレーションは失敗します。
+ VPC エンドポイントサービス接続を使用する場合は、Network Load Balancer、プライベート DNS 名、VPC エンドポイントサービスが正しく設定され動作していることを確認します。外部キーストアプロキシが VPC にない場合は、VPC エンドポイントサービスが外部キーストアプロキシと通信できることを確認する必要があります ([外部キーストアを外部キーストアプロキシに接続する](xks-connect-disconnect.md)と、VPC エンドポイントサービスの接続がAWS KMS テストされます）。
+ AWS KMS は、特に外部キーストアの [Amazon CloudWatch メトリクスとディメンション](monitoring-cloudwatch.md#kms-metrics)を記録します。これらのメトリクスの一部に基づくモニタリンググラフは、外部キーストアごとに AWS KMS コンソールに表示されます。これらのメトリクスを使用して外部キーストアをモニタリングするアラームを作成することが強く推奨されます。これらのアラームは、パフォーマンスやオペレーションに関する問題の初期兆候を、発生前にユーザーに警告します。手順については、「[外部キーストアをモニタリングする](xks-monitoring.md)」を参照してください。
+ 外部キーストアは[リソースクォータ](resource-limits.md#cks-resource-quota)の影響を受けます。外部キーストアで KMS キーを使用すると、[リクエストクォータ](requests-per-second.md#rps-key-stores)の影響を受けます。外部キーストアの実装を設計するときは、事前にこれらのクォータを確認します。

**注記**  
動作を妨げる可能性のある依存関係の循環がないか、設定を確認します。  
たとえば、 AWS リソースを使用して外部キーストアプロキシを作成する場合は、プロキシを操作する際に、そのプロキシを介してアクセスされる外部キーストアで KMS キーを使用できる必要がないことを確認してください。

すべての新しい外部キーストアは、切断された状態で作成されます。外部キーストアに KMS キーを作成するときは、外部キーストアを外部キーストアプロキシに[接続しておく](about-xks-connecting.md)必要があります。外部キーストアのプロパティを変更するには、[外部キーストアの設定を編集](update-xks-keystore.md)します。

**Topics**
+ [前提条件を構成する](#xks-requirements)
+ [新しい外部キーストアを作成する](#create-xks)

## 前提条件を構成する
<a name="xks-requirements"></a>

外部キーストアを作成する前に、外部キーストアのサポートに使用する[外部キーマネージャー](keystore-external.md#concept-ekm)や、 AWS KMS リクエストを[外部キーマネージャーが理解できる形式に変換する外部キーストアプロキシ](keystore-external.md#concept-xks-proxy)など、必要なコンポーネントをアセンブルする必要があります。

以下のコンポーネントは、すべての外部キーストアに必要です。これらのコンポーネントの他に、選択した[外部キーストアプロキシ接続オプション](choose-xks-connectivity.md)をサポートするコンポーネントを、指定する必要があります。

**ヒント**  
外部キーマネージャーにこれらのコンポーネントの一部が含まれているか、あるいはそれらが自動的に構成されている場合があります。詳細については外部キーマネージャーのドキュメントを参照してください。  
 AWS KMS コンソールで外部キーストアを作成する場合は、プロキシ [URI パスとプロキシ](#require-path)[認証情報](keystore-external.md#concept-xks-credential)を指定する JSON ベースの[プロキシ設定ファイル](#proxy-configuration-file)をアップロードできます。一部の外部キーストアプロキシでは、このファイルは自動的に生成されます。詳細については、外部キーストアプロキシか外部キーマネージャーのドキュメントを参照してください。

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

各外部キーストアには 1 つ以上の[外部キーマネージャー](keystore-external.md#concept-ekm)インスタンスが必要です。これには、物理的または仮想的なハードウェアセキュリティモジュール (HSM)、またはキー管理ソフトウェアを使用できます。

キーマネージャーは 1 つだけ使用できますが、冗長性を確保するために、暗号化キーを共有する、関連付けられたキーマネージャーインスタンスを 2 つ以上用意しておくことが推奨されます。外部キーストアでは、外部キーマネージャーを独占的に使用する必要はありません。ただし、外部キーマネージャーには、リソースを保護するために外部キーストアで KMS キーを使用する AWS サービスからの暗号化および復号リクエストの予想される頻度を処理する容量が必要です。外部キーマネージャーは、1 秒あたり最大 1,800 件のリクエストを処理し、各リクエストで 250 ミリ秒のタイムアウト内に応答するように設定する必要があります。ネットワーク往復時間 (RTT) が 35 ミリ秒以下 AWS リージョン になるように、外部キーマネージャーを の近くに配置することをお勧めします。

外部キーストアプロキシで許可されている場合は、外部キーストアプロキシに関連付ける外部キーマネージャーを変更できますが、新しい外部キーマネージャーは、同じキーマテリアルを持つバックアップまたはスナップショットでなければなりません。KMS キーに関連付ける外部キーが外部キーストアプロキシで使用できなくなった場合、 AWS KMS は KMS キーで暗号化された暗号文を復号できません。

外部キーマネージャーは、外部キーストアプロキシからアクセスできなければなりません。プロキシからの [GetHealthStatus](keystore-external.md#xks-concepts) レスポンスですべての外部キーマネージャーインスタンスが `Unavailable` であると報告された場合、外部キーストアを作成しようとすると [`XksProxyUriUnreachableException`](xks-troubleshooting.md#fix-xks-proxy) によりすべて失敗します。

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

ユーザーは、[AWS KMS 外部キーストアプロキシ API 仕様](https://github.com/aws/aws-kms-xksproxy-api-spec/)の設計要件に従う[外部キーストアプロキシ](keystore-external.md#concept-xks-proxy) (XKS プロキシ) を指定する必要があります。外部キーストアプロキシを開発または購入するか、 が提供する、または外部キーマネージャーに組み込まれている外部キーストアプロキシを使用できます。 AWS KMS では、外部キーストアプロキシを 1 秒あたり最大 1,800 件のリクエストを処理し、リクエストごとに 250 ミリ秒のタイムアウト内に応答するように設定することをお勧めします。ネットワーク往復時間 (RTT) が 35 ミリ秒以下 AWS リージョン になるように、外部キーマネージャーを の近くに配置することをお勧めします。

外部キーストアプロキシは複数の外部キーストアに使用できますが、各外部キーストアには、固有の URI エンドポイントと、リクエストに対応する外部キーストアプロキシ内のパスが必要です。

VPC エンドポイントサービス接続を使用している場合、Amazon VPC に外部キーストアプロキシを配置できますが必須ではありません。プライベートデータセンターなど AWS、 の外部にプロキシを配置し、VPC エンドポイントサービスはプロキシとの通信にのみ使用できます。

### プロキシ認証の認証情報
<a name="require-credential"></a>

外部キーストアを作成するときは、外部キーストアプロキシ認証の認証情報 (`XksProxyAuthenticationCredential`) を指定する必要があります。

外部キーストアプロキシ AWS KMS で の[認証情報](keystore-external.md#concept-xks-credential) (`XksProxyAuthenticationCredential`) を確立する必要があります。 AWS KMS は、外部キーストアプロキシ認証情報を使用して[署名バージョン 4 (SigV4) プロセス](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)を使用してリクエストに署名することで、プロキシを認証します。外部キーストアを作成するときに認証情報を指定します。これはいつでも[変更できます](update-xks-keystore.md)。プロキシが認証情報をローテーションする場合は、外部キーストアの認証情報値を更新する必要があります。

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

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

### プロキシ接続
<a name="require-connectivity"></a>

外部キーストアを作成するときは、外部キーストアプロキシ認証の接続オプション (`XksProxyConnectivity`) を指定する必要があります。

AWS KMS は、[パブリックエンドポイント](choose-xks-connectivity.md#xks-connectivity-public-endpoint)または [Amazon Virtual Private Cloud (Amazon VPC) エンドポイントサービス](choose-xks-connectivity.md#xks-vpc-connectivity)を使用して、外部キーストアプロキシと通信できます。パブリックエンドポイントは設定と保守が容易ですが、あらゆるインストールのセキュリティ要件を満たしているとは限りません。Amazon VPC エンドポイントサービスの接続オプションを選択する場合は、必要なコンポーネント (2 つの異なるアベイラビリティーゾーンに 2 つ以上のサブネットがある Amazon VPC、ネットワークロードバランサーとターゲットグループを含む VPC エンドポイントサービス、VPC エンドポイントサービスのプライベート DNS 名など) を作成し、管理する必要があります。

外部キーストアの[プロキシ接続オプションは変更できます](update-xks-keystore.md)。ただし、外部キーストアの、KMS キーに関連付けられたキーマテリアルが、引き続き利用可能であることを確認する必要があります。それ以外の場合、 AWS KMS はそれらの KMS キーで暗号化された暗号文を復号できません。

外部キーストアに最適なプロキシ接続オプションを決める方法については、[外部キーストアプロキシとの接続オプションを選択する](choose-xks-connectivity.md) を参照してください。VPC エンドポイントサービス接続の作成と設定に関するヘルプは、[VPC エンドポイントサービス接続を設定する](vpc-connectivity.md) を参照してください。

### プロキシ URI エンドポイント
<a name="require-endpoint"></a>

外部キーストアを作成するには、 AWS KMS が外部キーストアプロキシにリクエストを送信するために使用するエンドポイント (`XksProxyUriEndpoint`) を指定する必要があります。

プロトコルは、ポート 443 の IPv4 経由で HTTPS. AWS KMS communicates である必要があります。プロキシ URI エンドポイント値のポートを指定しないようにします。
+ [パブリックエンドポイント接続](choose-xks-connectivity.md#xks-connectivity-public-endpoint) — 外部キーストアプロキシ用に、公開されているエンドポイントを指定します。このエンドポイントには、外部キーストアを作成する前にアクセスできる必要があります。
+ [VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity) — 後に VPC エンドポイントサービスのプライベート DNS 名が続く `https://` を指定します。

外部キーストアプロキシに設定された TLS サーバ証明書は、外部キーストアプロキシ URI エンドポイントのドメイン名と一致し、外部キーストアでサポートされた認証局が発行している必要があります。リストについては、「[Trusted Certificate Authorities](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/TrustedCertificateAuthorities)」(信頼された証明機関) を参照してください。証明機関は、TLS 証明書を発行する前に、ドメイン所有権の証明を要求します。

TLS 証明書のサブジェクト共通名 (CN) は、プライベート DNS 名と一致している必要があります。例えば、プライベート DNS 名が `myproxy-private.xks.example.com` の場合、TLS 証明書の CN は、`myproxy-private.xks.example.com` または `*.xks.example.com` である必要があります。

[プロキシ URI エンドポイント](update-xks-keystore.md)は変更が可能ですが、必ず、外部キーストアプロキシが、外部キーストアの KMS キーに関連付けられたキーマテリアルにアクセスできることを確認します。それ以外の場合、 AWS KMS はそれらの KMS キーで暗号化された暗号文を復号できません。

**一意性の要件**
+ プロキシ URI エンドポイント (`XksProxyUriEndpoint`) とプロキシ URI パス (`XksProxyUriPath`) を組み合わせた値は、 AWS アカウント およびリージョン内で、一意でなければなりません。
+ パブリックエンドポイントに接続可能な外部キーストアは、プロキシ URI パス値が異なっている限り、同じプロキシ URI エンドポイントを共有できます。
+ パブリックエンドポイント接続を持つ外部キーストアは、キーストアが異なる場合でも AWS リージョン、同じ で VPC エンドポイントサービス接続を持つ外部キーストアと同じプロキシ URI エンドポイント値を使用することはできません AWS アカウント。
+  VPC エンドポイントに接続可能な各外部キーストアには、それぞれ独自のプライベート DNS 名が必要です。プロキシ URI エンドポイント (プライベート DNS 名) は、 AWS アカウント および リージョンで一意である必要があります。

### プロキシ URI パス
<a name="require-path"></a>

外部キーストアを作成するには、外部キーストアプロキシで、[必要なプロキシ API](keystore-external.md#concept-proxy-apis) へのベースパスを指定する必要があります。値は `/` から始まり、/kms/xks/v1 で終わる必要があります。`v1` は、外部キーストアプロキシの AWS KMS API のバージョンを表しています。このパスでは、必須の要素の間に、`/example-prefix/kms/xks/v1` のようなプレフィクスをオプションで含めることができます。この値は、外部キーストアプロキシのドキュメントでご確認いただけます。

AWS KMS は、プロキシ URI エンドポイントとプロキシ URI パスの連結で指定されたアドレスにプロキシリクエストを送信します。たとえば、プロキシ URI エンドポイントが `https://myproxy.xks.example.com`で、プロキシ URI パスが の場合`/kms/xks/v1`、 はプロキシ API リクエストを AWS KMS に送信します`https://myproxy.xks.example.com/kms/xks/v1`。

[プロキシ URI パス](update-xks-keystore.md)は変更が可能ですが、必ず、外部キーストアプロキシが、外部キーストアの KMS キーに関連付けられたキーマテリアルにアクセスできることを確認します。それ以外の場合、 AWS KMS はそれらの KMS キーで暗号化された暗号文を復号できません。

**一意性の要件**
+ プロキシ URI エンドポイント (`XksProxyUriEndpoint`) とプロキシ URI パス (`XksProxyUriPath`) を組み合わせた値は、 AWS アカウント およびリージョン内で、一意でなければなりません。

### VPC エンドポイントサービス
<a name="require-vpc-service-name"></a>

外部キーストアプロキシとの通信に使用する Amazon VPC エンドポイントサービスの名前を指定します。このコンポーネントが必要なのは、VPC エンドポイントサービス接続を使用する外部キーストアのみです。外部キーストア向け VPC エンドポイントサービスの、セットアップと設定方法のヘルプについては、[VPC エンドポイントサービス接続を設定する](vpc-connectivity.md) を参照してください。

VPC エンドポイントサービスは、以下のプロパティを持つ必要があります。
+ VPC エンドポイントサービスは、外部キーストアと同じまたは別の AWS アカウント にあること。
  + VPC エンドポイントサービスは、外部キーストア AWS リージョン と同じ に存在する必要があります。
  + 別の に存在する場合は、VPC エンドポイントサービスの AWS アカウント ID を指定する必要があります AWS アカウント。
+ Network Load Balancer (NLB) は、それぞれが異なるアベイラビリティーゾーンに存在する 2 つ以上のサブネットに接続されていること。
+ VPC エンドポイントサービスの*許可プリンシパルリスト*には`cks.kms.<region>.amazonaws.com`、 などのリージョン AWS KMS のサービスプリンシパル が含まれている必要があります`cks.kms.us-east-1.amazonaws.com`。
  + Amazon VPC エンドポイントサービスが外部キーストア (XKS) を所有している AWS アカウント 以外の によって AWS アカウント 所有されている場合は、VPC エンドポイントサービスへの XKS アクセスも許可する必要があります。これを行うには、Amazon VPC エンドポイントサービスの[プリンシパルとして XKS AWS アカウント ID を許可リストに登録します](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)。
+ 接続リクエストの承認を要求しないこと。
+ 上位レベルのパブリックドメインにプライベート DNS 名があること。例えば、パブリック `xks.example.com` ドメインに myproxy-private.xks.example.com というプライベート DNS 名を設定できる。

  VPC エンドポイントサービスに接続可能な、外部キーストアのプライベート DNS 名は、その AWS リージョンで一意であること。
+ プライベート DNS 名ドメインの[ドメイン検証ステータス](vpc-connectivity.md#xks-private-dns)は、`verified` であること。
+ 外部キーストアプロキシで設定された TLS サーバ証明書で、エンドポイントに到達可能なプライベート DNS ホスト名が指定されていること。

**一意性の要件**
+ VPC エンドポイントに接続可能な外部キーストアは `Amazon VPC` を共有することができますが、各外部キーストアには独自の VPC エンドポイントサービスとプライベート DNS 名が必要です。

### プロキシ設定ファイル
<a name="proxy-configuration-file"></a>

プロキシ設定ファイルは、外部キーストアの[プロキシ URI パス](#require-path)と[プロキシ認証の認証情報](#require-credential)プロパティの値を含むオプションの JSON ベースファイルです。 AWS KMS コンソールで外部キーストアを作成または[編集](update-xks-keystore.md)する場合は、プロキシ設定ファイルをアップロードすることで、外部キーストアの設定値を指定できます。このファイルを使用すれば入力や貼り付けのエラーを回避でき、外部キーストアの値を外部キーストアプロキシの値と確実に一致させることができます。

プロキシ設定ファイルは、外部キーストアプロキシによって生成されます。外部キーストアプロキシでプロキシ設定ファイルが提供されているかどうかは、外部キーストアプロキシのドキュメントでご確認いただけます。

以下は、正しい形式の Proxy 設定ファイルの例です。使用している値は架空のものです。

```
{
  "XksProxyUriPath": "/example-prefix/kms/xks/v1",
  "XksProxyAuthenticationCredential": {
    "AccessKeyId": "ABCDE12345670EXAMPLE",
    "RawSecretAccessKey": "0000EXAMPLEFA5FT0mCc3DrGUe2sti527BitkQ0Zr9MO9+vE="
  }
}
```

プロキシ設定ファイルは、 AWS KMS コンソールで外部キーストアを作成または編集する場合にのみアップロードできます。[CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html) または [UpdateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateCustomKeyStore.html) オペレーションでは使用できませんが、パラメータ値が正しいかどうかは、プロキシ設定ファイルの値を使用することで確認できます。

## 新しい外部キーストアを作成する
<a name="create-xks"></a>

必要な前提条件をアセンブルしたら、 AWS KMS コンソールで、または [CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html) オペレーションを使用して、新しい外部キーストアを作成できます。

### AWS KMS コンソールの使用
<a name="create-keystore-console"></a>

外部キーストアを作成する際には、[お使いのプロキシの接続タイプを選択](choose-xks-connectivity.md)し、すべての[必要なコンポーネント](#xks-requirements)が作成済み・設定済みであることをあらかじめ確認してください。必要な値を見つける際に不明なことがあれば、外部キーストアプロキシまたはキー管理ソフトウェアのドキュメントを参照してください。

**注記**  
で外部キーストアを作成すると AWS マネジメントコンソール、プロキシ [URI パスとプロキシ](#require-path)[認証情報](#require-credential)の値を含む JSON ベースの*プロキシ設定ファイル*をアップロードできます。一部のプロキシでは、このファイルは自動的に生成されます。この値は必須ではありません。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

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

1. ナビゲーションペインで、**[Custom key stores]** (カスタムキーストア)、**[External key stores]** (外部キーストア) の順に選択します。

1. **[Create external key store]** (外部キーストアの作成) を選択します。

1. カスタムキーストア用のフレンドリ名を入力します。名前は、アカウント内のすべての外部キーストアの中で、一意でなければなりません。
**重要**  
このフィールドには、機密情報や重要情報を含めないでください。このフィールドは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。

1. [プロキシの接続](#require-connectivity)タイプを選択します。

   選択した接続によって、外部キーストアプロキシに[必要なコンポーネント](#xks-requirements)が決まります。選択方法の詳細については、[外部キーストアプロキシとの接続オプションを選択する](choose-xks-connectivity.md) を参照してください。

   1. VPC エンドポイントサービスが別の AWS アカウントにある場合は、**[クロスアカウント VPC エンドポイントサービス]** を選択します。次に、VPC エンドポイントサービスの所有者アカウント AWS アカウント ID フィールドに VPC エンドポイント所有者の ID を入力します。 ****

   1. この外部キーストアの、[VPC エンドポイントサービス](#require-vpc-service-name)の名前を選択または入力します。このステップは、外部キーストアプロキシの接続タイプが **[VPC エンドポイントサービス]** である場合のみ表示されます。

      VPC エンドポイントサービスとその VPC は、外部キーストアの要件を満たしている必要があります。詳細については、「[前提条件を構成する](#xks-requirements)」を参照してください。

1. この外部キーストアの、[VPC エンドポイントサービス](#require-vpc-service-name)の名前を選択または入力します。このステップは、外部キーストアプロキシの接続タイプが **[VPC endpoint service]** (VPC エンドポイントサービス) である場合のみ表示されます。

   VPC エンドポイントサービスとその VPC は、外部キーストアの要件を満たしている必要があります。詳細については、「[前提条件を構成する](#xks-requirements)」を参照してください。

1. [プロキシ URI エンドポイント](#require-endpoint)を入力します。プロトコルは、ポート 443 の IPv4 経由で HTTPS. AWS KMS communicates である必要があります。プロキシ URI エンドポイント値のポートを指定しないようにします。

   が前のステップで指定した VPC エンドポイントサービス AWS KMS を認識すると、このフィールドが自動的に完了します。

   パブリックエンドポイント接続の場合は、公開されているエンドポイント URI を入力します。VPC エンドポイントサービス接続では、後ろに VPC エンドポイントサービスのプライベート DNS 名が続く `https://` を入力します。

1. [プロキシ URI パス](#require-path)プレフィクスと[プロキシ認証の認証情報](#require-credential)の値を入力するには、プロキシの設定ファイルをアップロードするか、値を手動で入力します。
   + [プロキシ URI パス](#require-path.title)と[プロキシ認証の認証情報](#require-credential)の値を含む、オプションの[プロキシ設定ファイル](#proxy-configuration-file)がある場合は、**[Upload configuration file]** (設定ファイルをアップロード) を選択します。ステップに従ってファイルをアップロードします。

     ファイルがアップロードされると、コンソールの編集可能なフィールドに、ファイルの値が表示されます。ここで値を変更できますが、外部キーストアを作成した後でも[これらの値を編集](update-xks-keystore.md)できます。

     シークレットアクセスキーの値を表示するには、**[Show secret access key]** (シークレットアクセスキーを表示) を選択します。
   + プロキシ設定ファイルがなければ、プロキシ URI パスとプロキシ認証の認証情報の値を手動で入力できます。

     1. プロキシ設定ファイルがなければ、プロキシ URI を手動で入力できます。コンソールに、必要な **[/kms/xks/v1]** 値が入力されます。

        [プロキシ URI パス](#require-path)に、`/example-prefix/kms/xks/v1` の `example-prefix` など、オプションのプレフィクスが含まれている場合は、そのプレフィクスを **[Proxy URI path prefix]** (プロキシ URI パスプレフィクス) フィールドに入力します。含まれていなければ、フィールドは空のままにします。

     1. プロキシ設定ファイルがなければ、[プロキシ認証の認証情報](keystore-external.md#concept-xks-credential)を手動で入力します。アクセスキー ID とシークレットアクセスキーの両方が必要です。
        + **[Proxy credential: Access key ID]** (プロキシ認証情報: アクセスキー ID) に、プロキシ認証の認証情報のアクセスキー ID を入力します。アクセスキー ID は、シークレットアクセスキーを識別します。
        + **[Proxy credential: Secret access key]** (プロキシ認証情報: シークレットアクセスキー) に、プロキシ認証の認証情報の、シークレットアクセスキーを入力します。

        シークレットアクセスキーの値を表示するには、**[Show secret access key]** (シークレットアクセスキーを表示) を選択します。

        この手順では、外部キーストアプロキシで作成した認証情報を、設定または変更することはできません。これらの値を、外部キーストアに関連付けるだけです。プロキシ認証の認証情報を設定、変更、ローテーションする方法については、外部キーストアプロキシまたはキー管理ソフトウェアのドキュメントを参照してください。

        プロキシ認証の認証情報が変更された場合は、外部キーストアの[認証情報の設定を編集](update-xks-keystore.md)します。

1. **[Create external key store]** (外部キーストアの作成) を選択します。

手順が完了すると、アカウントとリージョンの外部キーストアのリストに、新しい外部キーストアが表示されます。正常に完了しなかった場合は、問題を説明し、修正方法を示すエラーメッセージが表示されます。さらにヘルプが必要な場合は、「[外部キーの CreateKey エラー](xks-troubleshooting.md#fix-external-key-create)」を参照してください。

**次の手順**: 新しい外部キーストアが自動で接続されない。外部キーストア AWS KMS keys で を作成する前に、[外部キーストアを外部キーストアプロキシに接続](xks-connect-disconnect.md)する必要があります。

### AWS KMS API の使用
<a name="create-keystore-api"></a>

新しい外部キーストアを作成するには、[CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html) オペレーションを使用します。必要なパラメータの値を見つける際に不明なことがあれば、外部キーストアプロキシまたはキー管理ソフトウェアのドキュメントを参照してください。

**ヒント**  
`CreateCustomKeyStore` オペレーションを使用しているときは、[プロキシ設定ファイル](#proxy-configuration-file)はアップロードできません。ただし、プロキシ設定ファイルの値を使って、パラメータ値が正しいことを確認することは可能です。

外部キーストアを作成するには、`CreateCustomKeyStore` オペレーションでは以下のパラメータ値が必要になります。
+ `CustomKeyStoreName` — アカウント内で一意である外部キーストアのフレンドリ名。
**重要**  
このフィールドには、機密情報や重要情報を含めないでください。このフィールドは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。
+ `CustomKeyStoreType` - `EXTERNAL_KEY_STORE` を指定します。
+ [`XksProxyConnectivity`](#require-connectivity) - `PUBLIC_ENDPOINT` または `VPC_ENDPOINT_SERVICE` を指定します。
+ [`XksProxyAuthenticationCredential`](keystore-external.md#concept-xks-credential) — アクセスキー ID とシークレットアクセスキーの両方を指定します。
+ [`XksProxyUriEndpoint`](#require-endpoint) - AWS KMS が外部キーストアプロキシとの通信に使用するエンドポイントです。
+ [`XksProxyUriPath`](#require-path) — プロキシ内でのプロキシ API へのパスです。
+ [`XksProxyVpcEndpointServiceName`](#require-vpc-service-name) — `XksProxyConnectivity` 値が `VPC_ENDPOINT_SERVICE` の場合のみ必要です。

**注記**  
 AWS CLI バージョン 1.0 を使用する場合は、 パラメータなどの HTTP または HTTPS 値を持つ`XksProxyUriEndpoint`パラメータを指定する前に、次のコマンドを実行します。  

```
aws configure set cli_follow_urlparam false
```
それ以外の場合、 AWS CLI バージョン 1.0 はパラメータ値をその URI アドレスにあるコンテンツに置き換え、次のエラーが発生します。  

```
Error parsing parameter '--xks-proxy-uri-endpoint': Unable to retrieve 
https:// : received non 200 status code of 404
```

以下の例の値は架空の値です。コマンドを実行する前に、外部キーストアに有効な値に置き換えてください。

パブリックエンドポイント接続を使用して外部キーストアを作成します。

```
$ aws kms create-custom-key-store
        --custom-key-store-name ExampleExternalKeyStorePublic \
        --custom-key-store-type EXTERNAL_KEY_STORE \
        --xks-proxy-connectivity PUBLIC_ENDPOINT \
        --xks-proxy-uri-endpoint https://myproxy.xks.example.com \
        --xks-proxy-uri-path /kms/xks/v1 \
        --xks-proxy-authentication-credential AccessKeyId=<value>,RawSecretAccessKey=<value>
```

VPC エンドポイントサービス接続を使用して外部キーストアを作成します。

```
$ aws kms create-custom-key-store
        --custom-key-store-name ExampleExternalKeyStoreVPC \
        --custom-key-store-type EXTERNAL_KEY_STORE \
        --xks-proxy-connectivity VPC_ENDPOINT_SERVICE \
        --xks-proxy-vpc-endpoint-service-name com.amazonaws.vpce.us-east-1.vpce-svc-example \
        --xks-proxy-uri-endpoint https://myproxy-private.xks.example.com \
        --xks-proxy-uri-path /kms/xks/v1 \
        --xks-proxy-authentication-credential AccessKeyId=<value>,RawSecretAccessKey=<value>
```

オペレーションが正常に終了したら、次のレスポンス例に示すように、`CreateCustomKeyStore` はカスタムキーストア ID を返します。

```
{
    "CustomKeyStoreId": cks-1234567890abcdef0
}
```

オペレーションが失敗した場合は、例外で示されているエラーを修正して、もう一度試してください。その他のヘルプについては、「[外部キーストアのトラブルシューティング](xks-troubleshooting.md)」を参照してください。

**次の手順**: 外部キーストアを使用するには、[これを外部キーストアプロキシに接続します](xks-connect-disconnect.md)。

# 外部キーストアプロパティを編集する
<a name="update-xks-keystore"></a>

既存の外部キーストアの選択したプロパティは、編集が可能です。

一部のプロパティは、外部キーストアが接続または切断されている間、編集することができます。それ以外のプロパティでは、先に、外部キーストアプロキシから[外部キーストアを切断する](xks-connect-disconnect.md)必要があります。外部キーストアの[接続ステータス](xks-connect-disconnect.md#xks-connection-state)は `DISCONNECTED` でなければなりません。外部キーストアが切断されている間はキーストアとその KMS キーを管理することはできますが、外部キーストアで KMS キーを作成または使用することはできません。外部キーストアの[接続ステータス](xks-connect-disconnect.md#xks-connection-state)を見つけるには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用するか、外部キーストアの詳細ページで **[General configuration]** (一般設定) を表示します。

外部キーストアのプロパティを更新する前に、 は新しい値を使用して [GetHealthStatus](keystore-external.md#concept-proxy-apis) リクエストを外部キーストアプロキシ AWS KMS に送信します。リクエストが成功すると、更新されたプロパティ値を使って外部キーストアプロキシに接続し、これを認証できることが示されます。リクエストが失敗すると、編集オペレーションは失敗し、エラーを特定する例外が生じます。

編集オペレーションが完了すると、外部キーストアの更新されたプロパティ値が AWS KMS コンソールと`DescribeCustomKeyStores`レスポンスに表示されます。ただし、変更が完全に有効になるまでに最大で 5 分かかります。

 AWS KMS コンソールで外部キーストアを編集する場合は、プロキシ [URI パスとプロキシ](create-xks-keystore.md#require-path)[認証情報](keystore-external.md#concept-xks-credential)を指定する JSON ベースの[プロキシ設定ファイル](create-xks-keystore.md#proxy-configuration-file)をアップロードできます。一部の外部キーストアプロキシでは、このファイルは自動的に生成されます。詳細については、外部キーストアプロキシか外部キーマネージャーのドキュメントを参照してください。

**警告**  
更新されたプロパティ値により、外部キーストアは、以前の値と同じ外部キーマネージャーのプロキシに接続するか、同じ暗号化キーを持つ外部キーマネージャーのバックアップまたはスナップショットのプロキシに接続します。外部キーストアが KMS キーに関連付けられた外部キーへのアクセスを完全に失うと、それらの外部キーで暗号化された暗号文は回復不能になります。特に、外部キーストアのプロキシ接続を変更すると、 AWS KMS が外部キーにアクセスできなくなる可能性があります。

**ヒント**  
外部キーマネージャーの中には、外部キーストアプロパティを編集するための簡単な方法が用意されているものもあります。詳細については外部キーマネージャーのドキュメントを参照してください。

外部キーストアの次のプロパティは、変更が可能です。


| 編集可能な外部キーストアプロパティ | どの接続ステータスでも可 | 切断済み状態が必要 | 
| --- | --- | --- | 
| カスタムキーストア名 カスタムキーストアの必須フレンドリ名 このフィールドには、機密情報や重要情報を含めないでください。このフィールドは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/icon-successful.png) |  | 
| [プロキシ認証の認証情報](keystore-external.md#concept-xks-credential) (XksProxyAuthenticationCredential)(1 つの要素のみを変更する場合でも、アクセスキー ID とシークレットアクセスキーの両方を指定する必要がある)。 | ![\[Green checkmark icon indicating success or completion.\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/icon-successful.png) |  | 
| [プロキシ URI パス](create-xks-keystore.md#require-path) (XksProxyUriPath) | ![\[Green checkmark icon indicating success or completion.\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/icon-successful.png) |  | 
| [プロキシ接続](keystore-external.md#concept-xks-connectivity) (XksProxyConnectivity)(プロキシ URI エンドポイントも更新する必要がある。VPC エンドポイントサービス接続に変更する場合、プロキシ VPC エンドポイントサービス名を指定する)。 |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/icon-successful.png) | 
| [プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint) (XksProxyUriEndpoint)プロキシエンドポイント URI を変更する場合、関連付けられた TLS 証明書の変更も必要になる場合がある。 |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/icon-successful.png) | 
| [プロキシ VPC エンドポイントのサービス名](create-xks-keystore.md#require-vpc-service-name) (XksProxyVpcEndpointServiceName)(このフィールドは VPC エンドポイントサービスの接続に必要)。 |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/icon-successful.png) | 
| [VPC エンドポイントサービス所有者](create-xks-keystore.md#require-vpc-service-name) (XksProxyVpcEndpointServiceOwner)(このフィールドは VPC エンドポイントサービスの接続に必要)。 |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/icon-successful.png) | 

## 外部キーストアのプロパティを編集する
<a name="edit-xks-keystore"></a>

外部キーストアのプロパティは、 AWS KMS コンソールで編集するか、[UpdateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateCustomKeyStore.html) オペレーションを使用して編集できます。

### AWS KMS コンソールの使用
<a name="update-keystore-console"></a>

キーストアを編集するときは、編集可能な値のいずれかを変更できます。一部の変更では、外部キーストアを外部キーストアプロキシから切断することが必要になります。

プロキシ URI パスまたはプロキシ認証の認証情報を編集する場合は、新しい値を入力するか、新しい値を含む、外部キーストアの[プロキシ設定ファイル](create-xks-keystore.md#proxy-configuration-file)をアップロードします。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

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

1. ナビゲーションペインで、**[Custom key stores]** (カスタムキーストア)、**[External key stores]** (外部キーストア) の順に選択します。

1. 編集するキーストアを選択します。

   1. 必要に応じて、外部キーストアを外部キーストアプロキシから切断します。**[Key store actions]** (キーストアアクション) メニューから **[Disconnect]** (切断) を選択します。

1. **[Key store actions]** (キーストアアクション) メニューから **[Edit]** (編集) を選択します。

1. 1 つまたは複数の編集可能な外部キーストアプロパティを変更します。また、プロキシ URI パスとプロキシ認証の認証情報の値を含む、外部キーストア[プロキシ設定ファイル](create-xks-keystore.md#proxy-configuration-file)をアップロードすることもできます。プロキシ設定ファイルは、ファイル内の指定された値が変更されていなくても、使用できます。

1. **[Update external key store]** (外部キーストアの更新) を選択します。

1. 警告を確認し、続行する場合は警告を確定し、**[Update external key store]** (外部キーストアの更新) を選択します。

   手順が正常に完了すると、編集したプロパティについて説明するメッセージが表示されます。正常に行われなかった場合は、問題を説明し、修正方法を示すエラーメッセージが表示されます。

1. 必要に応じて、外部キーストアを再接続します。**[Key store actions]** (キーストアアクション) メニューから **[Connect]** (接続) を選択します。

   外部キーストアは切断された状態にしておくことができます。ただし、切断されている間は外部キーストアで KMS キーを作成したり、[暗号化オペレーション](manage-cmk-keystore.md#use-cmk-keystore)で外部キーストア内の KMS キーを使用したりすることはできません。

### AWS KMS API の使用
<a name="update-keystore-api"></a>

外部キーストアのプロパティを変更するには、[UpdateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateCustomKeyStore.html) オペレーションを使用します。同じオペレーションで外部キーストアの複数のプロパティを変更できます。オペレーションが成功すると、 は HTTP 200 レスポンスとプロパティのない JSON オブジェクト AWS KMS を返します。

外部キーストアを識別するには `CustomKeyStoreId` パラメータを使用します。プロパティを変更するには他のパラメータを使用します。`UpdateCustomKeyStore` オペレーションでは、[プロキシ設定ファイル](create-xks-keystore.md#proxy-configuration-file)を使用できません。プロキシ設定ファイルは、 AWS KMS コンソールでのみサポートされています。ただし、プロキシ設定ファイルは、外部キーストアプロキシの正しいパラメータ値を決める際に役立ちます。

このセクションの例では [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) を使用しますが、サポートされている任意のプログラミング言語を使用することができます。

始める前に、[必要に応じて](#update-xks-keystore)、外部キーストアプロキシから[外部キーストア](xks-connect-disconnect.md)を切断します。更新後、必要に応じて、外部キーストアプロキシに[外部キーストアを再接続](xks-connect-disconnect.md)できます。外部キーストアは切断された状態にしておくことができますが、キーストアに新しい KMS キーを作成したり、暗号化オペレーションのためにキーストアで既存の KMS キーを使用したりするときは、先に接続しておく必要があります。

**注記**  
 AWS CLI バージョン 1.0 を使用する場合は、 パラメータなどの HTTP または HTTPS 値を持つ`XksProxyUriEndpoint`パラメータを指定する前に、次のコマンドを実行します。  

```
aws configure set cli_follow_urlparam false
```
それ以外の場合、 AWS CLI バージョン 1.0 はパラメータ値をその URI アドレスにあるコンテンツに置き換え、次のエラーが発生します。  

```
Error parsing parameter '--xks-proxy-uri-endpoint': Unable to retrieve 
https:// : received non 200 status code of 404
```

#### 外部キーストアの名前を変更する
<a name="xks-edit-name"></a>

最初の例では、[UpdateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateCustomKeyStore.html) オペレーションを使用して、カスタムキーストアのフレンドリ名を `XksKeyStore` に変更します。このコマンドでは、`CustomKeyStoreId` パラメータを使用してカスタムキーストアを識別し、`CustomKeyStoreName` でカスタムキーストアの新しい名前を指定します。例にある値は、すべて外部キーストアの実際の値に置き換えます。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --new-custom-key-store-name XksKeyStore
```

#### プロキシ認証の認証情報を変更する
<a name="xks-edit-credential"></a>

次の例では、 AWS KMS が外部キーストアプロキシの認証に使用する、プロキシ認証の認証情報を更新します。認証情報を更新するとき、それがプロキシ上でローテーションされる場合は、このようなコマンドを使用できます。

まず、外部キーストアプロキシで認証情報を更新します。次に、この機能を使用して AWS KMSに変更を報告します。(プロキシは古い認証情報と新しい認証情報の両方を一時的にサポートするため、認証情報を更新する時間があります) AWS KMS。

変更する値が 1 つのみの場合でも、アクセスキー ID とシークレットアクセスキーの両方を認証情報で指定する必要があります。

最初の 2 つのコマンドは、認証情報値を保持する変数を設定します。`UpdateCustomKeyStore` オペレーションは `CustomKeyStoreId` パラメータを使って外部キーストアを識別します。`XksProxyAuthenticationCredential` パラメータをその `AccessKeyId` と `RawSecretAccessKey` フィールドで使用し、新しい認証情報を指定します。例にある値は、すべて外部キーストアの実際の値に置き換えます。

```
$ accessKeyID=access key id
$ secretAccessKey=secret access key

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
        --xks-proxy-authentication-credential \ 
            AccessKeyId=$accessKeyId,RawSecretAccessKey=$secretAccessKey
```

#### プロキシ URI パスを変更する
<a name="xks-edit-path"></a>

次の例では、プロキシ URI パス (`XksProxyUriPath`) を更新します。プロキシ URI エンドポイントとプロキシ URI パスの組み合わせは、 AWS アカウント および リージョンで一意である必要があります。例にある値は、すべて外部キーストアの実際の値に置き換えます。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
            --xks-proxy-uri-path /kms/xks/v1
```

#### VPC エンドポイントサービス接続を変更する
<a name="xks-edit-connectivity-vpc"></a>

次の例では、[UpdateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateCustomKeyStore.html) オペレーションを使用して、外部キーストアのプロキシ接続タイプを `VPC_ENDPOINT_SERVICE` に変更します。この変更を行うには、VPC エンドポイントサービスの接続に必要な値 (VPC エンドポイントサービス名 (`XksProxyVpcEndpointServiceName`)、VPC エンドポイントサービスのプライベート DNS 名を含むプロキシ URI エンドポイント (`XksProxyUriEndpoint`) 値など) を指定する必要があります。例にある値は、すべて外部キーストアの実際の値に置き換えます。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
            --xks-proxy-connectivity "VPC_ENDPOINT_SERVICE" \
            --xks-proxy-uri-endpoint https://myproxy-private.xks.example.com \
            --xks-proxy-vpc-endpoint-service-name com.amazonaws.vpce.us-east-1.vpce-svc-example
```

#### パブリックエンドポイント接続の変更
<a name="xks-edit-connectivity-public"></a>

次の例では、外部キーストアプロキシの接続タイプを `PUBLIC_ENDPOINT` に変更します。この変更を行うときは、プロキシ URI エンドポイント (`XksProxyUriEndpoint`) の値を更新する必要があります。例にある値は、すべて外部キーストアの実際の値に置き換えます。

**注記**  
VPC エンドポイント接続は、パブリックエンドポイント接続に比べてセキュリティが優れています。パブリックエンドポイント接続に変更するときは、外部キーストアプロキシのオンプレミスでの配置や、通信のみに VPC を使用するといった他の選択肢を先に検討します。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
            --xks-proxy-connectivity "PUBLIC_ENDPOINT" \
            --xks-proxy-uri-endpoint https://myproxy.xks.example.com
```

# 外部キーストアを表示する
<a name="view-xks-keystore"></a>

各アカウントとリージョンの外部キーストアを表示するには、 AWS KMS コンソールを使用するか、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用します。

外部キーストアを表示すると、以下を確認できます。
+ フレンドリ名、ID、キーストアタイプ、作成日など、キーストアに関する基本情報。
+ [接続タイプ](keystore-external.md#concept-xks-connectivity)、[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)と[パス](create-xks-keystore.md#require-path)、現在の[プロキシ認証情報](keystore-external.md#concept-xks-credential)の[アクセスキー ID](keystore-external.md#concept-xks-credential) など、[外部キーストアプロキシ](keystore-external.md#concept-xks-proxy)の設定情報。
+ 外部キーストアプロキシが [VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を使用する場合、コンソールには VPC エンドポイントサービス名が表示されます。
+ 現在の[接続状態](xks-connect-disconnect.md#xks-connection-state)。
**注記**  
**[Disconnected]** (切断) の接続状態は、外部キーストアが一度も接続されたことがないこと、または意図的に外部キーストアプロキシから切断されたことを示します。ただし、接続されている外部キーストアで KMS キーの使用が失敗する場合は、外部キーストアまたはそのプロキシに問題がある可能性があります。ヘルプについては、「[外部キーストア接続エラー](xks-troubleshooting.md#fix-xks-connection)」を参照してください。
+ 外部キーストアに関する問題の検出と解決に役立つよう設計された、[Amazon CloudWatch メトリクス](monitoring-cloudwatch.md#kms-metrics)のグラフを含む[モニタリング](xks-monitoring.md)セクション。グラフの解釈、計画やトラブルシューティングでの使用、グラフのメトリクスに基づく CloudWatch アラームの作成については、「[外部キーストアをモニタリングする](xks-monitoring.md)」を参照してください。

## 外部キーストアのプロパティ
<a name="view-xks-properties"></a>

外部キーストアの次のプロパティは、 AWS KMS コンソールと [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) レスポンスに表示されます。

### カスタムキーストアのプロパティ
<a name="view-xks-custom-key-store"></a>

次の値は、各カスタムキーストアの詳細ページの**全般設定**セクションに表示されます。これらのプロパティは、キーストアや外部 AWS CloudHSM キーストアを含むすべてのカスタムキーストアに適用されます。

**カスタムキーストア ID**  
がカスタムキーストア AWS KMS に割り当てる一意の ID。

**カスタムキーストア名**  
カスタムキーストア作成時にカスタムキーストアに割り当てるフレンドリ名です。この値はいつでも変更できます。

**カスタムキーストアのタイプ**  
カスタムキーストアのタイプです。有効な値は AWS CloudHSM (`AWS_CLOUDHSM`) または外部キーストア (`EXTERNAL_KEY_STORE`) です。カスタムキーストア作成後、タイプを変更することはできません。

**作成日**  
カスタムキーストアが作成された日付です。この日付は、 AWS リージョンの現地時間で表示されます。

**接続状態**  
カスタムキーストアがバッキングキーストアに接続されているかどうかを示します。カスタムキーストアがバッキングキーストアに一度も接続されていないか、意図的に切断されていない限り、接続状態は `DISCONNECTED` です。詳細については、「[接続状態](xks-connect-disconnect.md#xks-connection-state)」を参照してください。

### 外部キーストア設定プロパティ
<a name="view-xks-configuration"></a>

以下の値は、各外部キーストアの詳細ページの **[External key store proxy configuration]** (外部キーストアプロキシ設定) セクションと [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) レスポンスの `XksProxyConfiguration` 要素に表示されます。一意性要件や、各フィールドの正しい値を決定する際のヘルプなど、各フィールドの詳細な説明については、「外部キーストアの作成」トピックの「[前提条件を構成する](create-xks-keystore.md#xks-requirements)」を参照してください。

**プロキシ接続**  
外部キーストアが[パブリックエンドポイント接続](choose-xks-connectivity.md#xks-connectivity-public-endpoint)を使用しているか、[VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を使用しているかを示します。

**プロキシ URI エンドポイント**  
が[外部キーストアプロキシ](keystore-external.md#concept-xks-proxy)への接続 AWS KMS に使用するエンドポイント。

**プロキシ URI パス**  
がプロキシ API リクエスト AWS KMS を送信するプロキシ URI エンドポイントからのパス。 [プロキシ API](keystore-external.md#concept-proxy-apis)

**プロキシ認証情報: アクセスキー ID**  
外部キーストアプロキシに設定する[プロキシ認証情報](keystore-external.md#concept-xks-credential)の一部です。アクセスキー ID は、認証情報のシークレットアクセスキーを識別します。  
AWS KMS は SigV4 署名プロセスとプロキシ認証情報を使用して、外部キーストアプロキシへのリクエストに署名します。署名の認証情報により、外部キーストアプロキシはユーザーに代わってリクエストを認証できます AWS KMS。

**VPC エンドポイントサービス名**  
外部キーストアをサポートする Amazon VPC エンドポイントサービスの名前です。この値は、外部キーストアが [VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を使用している場合にのみ表示されます。外部キーストアプロキシを VPC 内に配置するか、VPC エンドポイントサービスを使用して、外部キーストアプロキシと安全に通信できます。

**VPC エンドポイントサービスの所有者 ID**  
外部キーストアをサポートする Amazon VPC エンドポイントサービスの ID。この値は、外部キーストアが [VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を使用している場合にのみ表示されます。外部キーストアプロキシを VPC 内に配置するか、VPC エンドポイントサービスを使用して、外部キーストアプロキシと安全に通信できます。

## 外部キーストアのプロパティを表示する
<a name="view-xks"></a>

外部キーストアとそれに関連するプロパティは、 AWS KMS コンソールで、または [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用して表示できます。

### AWS KMS コンソールの使用
<a name="view-xks-keystore-console"></a>

任意のアカウントとリージョンで外部キーストアを表示するには、以下の手順に従います。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

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

1. ナビゲーションペインで、**[Custom key stores]** (カスタムキーストア)、**[External key stores]** (外部キーストア) の順に選択します。

1. 外部キーストアの詳細を表示するには、キーストア名を選択します。

### AWS KMS API の使用
<a name="view-xks-keystore-api"></a>

外部キーストアを表示するには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用します。デフォルトでは、このオペレーションは、アカウントとリージョンのすべてのカスタムキーストアを返します。ただし、`CustomKeyStoreId` または `CustomKeyStoreName` パラメータのどちらかを使用して (両方は使用できません) 出力を特定のカスタムキーストアに制限できます。

カスタムキーストアでは、出力は、カスタムキーストア ID、名前、タイプ、およびキーストアの[接続状態](xks-connect-disconnect.md#xks-connection-state)で構成されています。接続状態が `FAILED` の場合、出力にはエラーの理由を説明する `ConnectionErrorCode` も含まれています。外部キーストアの `ConnectionErrorCode` を解釈する方法については、「[外部キーストアの接続エラーコード](xks-troubleshooting.md#xks-connection-error-codes)」を参照してください。

外部キーストアでは、出力に `XksProxyConfiguration` 要素も含まれています。この要素には、[接続タイプ](create-xks-keystore.md#require-connectivity)、[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)、[プロキシ URI パス](create-xks-keystore.md#require-path)、および[プロキシ認証情報](keystore-external.md#concept-xks-credential)のアクセスキー ID が含まれています。

このセクションの例では [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) を使用しますが、サポートされている任意のプログラミング言語を使用することができます。

たとえば、次のコマンドは、アカウントとリージョンのすべてのカスタムキーストアを返します。`Limit` パラメータと `Marker` パラメータを使用して、出力のカスタムキーストアをページ分割できます。

```
$ aws kms describe-custom-key-stores
```

次のコマンドは、`CustomKeyStoreName` パラメータを使用して、`ExampleXksPublic` というフレンドリ名のサンプル外部キーストアのみを取得します。このサンプルキーストアは、パブリックエンドポイント接続を使用しています。また、外部キーストアプロキシに接続されています。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksPublic
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-1234567890abcdef0",
      "CustomKeyStoreName": "ExampleXksPublic",
      "ConnectionState": "CONNECTED",    
      "CreationDate": "2022-12-14T20:17:36.419000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE12345670EXAMPLE",
        "Connectivity": "PUBLIC_ENDPOINT",
        "UriEndpoint": "https://xks.example.com:6443",
        "UriPath": "/example/prefix/kms/xks/v1"
      }
    }
  ]
}
```

次のコマンドは、VPC エンドポイントサービス接続を備えたサンプル外部キーストアを取得します。この例では、外部キーストアがその外部キーストアプロキシに接続されています。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "CONNECTED",
      "CreationDate": "2022-12-13T18:34:10.675000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE98765432EXAMPLE",
        "Connectivity": "VPC_ENDPOINT_SERVICE",
        "UriEndpoint": "https://example-proxy-uri-endpoint-vpc",
        "UriPath": "/example/prefix/kms/xks/v1",
        "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example"
      }
    }
  ]
}
```

`Disconnected` の [`ConnectionState`](xks-connect-disconnect.md#xks-connection-state) は、外部キーストアが一度も接続されたことがないこと、または意図的に外部キーストアプロキシから切断されたことを示します。ただし、接続されている外部キーストアで KMS キーの使用が失敗する場合は、外部キーストアプロキシまたは他の外部コンポーネントに問題がある可能性があります。

外部キーストアの `ConnectionState` が `FAILED` の場合、`DescribeCustomKeyStores` レスポンスには、エラーの理由を説明する `ConnectionErrorCode` 要素が含まれています。

たとえば、次の出力では、 `XKS_PROXY_TIMED_OUT`値が が外部キーストアプロキシに接続 AWS KMS できることを示していますが、外部キーストアプロキシが割り当てられた AWS KMS 時間に に応答しなかったため、接続に失敗しました。この接続エラーコードが繰り返し表示される場合は、外部キーストアプロキシベンダーに通知してください。このエラーやその他の接続エラーに関するヘルプについては、「」を参照してください [外部キーストアのトラブルシューティング](xks-troubleshooting.md)。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "FAILED",
      "ConnectionErrorCode": "XKS_PROXY_TIMED_OUT",
      "CreationDate": "2022-12-13T18:34:10.675000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE98765432EXAMPLE",
        "Connectivity": "VPC_ENDPOINT_SERVICE",
        "UriEndpoint": "https://example-proxy-uri-endpoint-vpc",
        "UriPath": "/example/prefix/kms/xks/v1",
        "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example"
      }
    }
  ]
}
```

# 外部キーストアをモニタリングする
<a name="xks-monitoring"></a>

AWS KMS は、外部キーストアとのやり取りごとにメトリクスを収集し、CloudWatch アカウントに公開します。これらのメトリクスは、各外部キーストアの詳細ページのモニタリングセクションで、グラフを生成するために使用されます。次のトピックでは、グラフを使用して、外部キーストアに影響する運用上および設定上の問題を特定し、トラブルシューティングする方法の詳細を説明します。CloudWatch メトリクスを使用して、外部キーストアが想定どおりに動作しない場合に通知するアラームを設定することをおすすめします。詳細については、「[Amazon CloudWatch によるモニタリング](monitoring-cloudwatch.md)」を参照してください。

**Topics**
+ [グラフを表示する](#xks-monitoring-navigate)
+ [グラフの解釈](#interpreting-graphs)

## グラフを表示する
<a name="xks-monitoring-navigate"></a>

さまざまな詳細レベルでグラフを表示できます。デフォルトでは、各グラフは 3 時間の時間範囲と 5 分の[集計期間](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#CloudWatchPeriods)を使用します。コンソール内でグラフビューを調整できますが、外部キーストアの詳細ページを閉じるかブラウザを更新すると、変更はデフォルト設定に戻ります。Amazon CloudWatch の用語のヘルプについては、「[Amazon CloudWatch の概念](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html)」を参照してください。

### データポイントの詳細を表示する
<a name="graph-data-point"></a>

各グラフのデータは、[AWS KMS メトリクス](https://docs.aws.amazon.com/kms/latest/developerguide/monitoring-cloudwatch.html#kms-metrics)によって収集されます。特定のデータポイントに関する詳細を表示するには、折れ線グラフ上のデータポイントにマウスカーソルを合わせます。これにより、グラフの生成元であるメトリクスに関する詳細情報のポップアップが表示されます。各リスト項目には、そのデータポイントで記録された[ディメンション](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension)値が表示されます。そのデータポイントのディメンション値に使用できるメトリクスデータがない場合、ポップアップには NULL 値 (**—**) が表示されます。一部のグラフでは、1 つのデータポイントに対して複数のディメンションと値が記録されます。[信頼性グラフ](#reliability-graph)などの他のグラフでは、メトリクスによって収集されたデータを使用して固有の値が計算されます。各リスト項目は、各折れ線グラフの色に関連付けられています。

### 時間範囲を変更する
<a name="graph-time-range"></a>

グラフの[時間範囲](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/modify_graph_date_time.html)を変更するには、モニタリングセクションの右上隅にある事前定義済みの時間範囲の 1 つを選択します。事前定義済みの時間範囲は、1 時間から 1 週間です (**1 時間**、**3 時間**、**12 時間**、**1 日**、**3 日**、**1 週間**)。これにより、すべてのグラフの時間範囲が調整されます。特定のグラフを別の時間範囲で表示したい場合、またはカスタムの時間範囲を設定したい場合は、グラフを拡大するか、Amazon CloudWatch コンソールに表示します。

### グラフを拡大する
<a name="graph-zoom"></a>

[ミニマップズーム機能](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/zoom-graph.html)を使用すると、ズームインビューとズームアウトビュー間を変更することなく、折れ線グラフと積み上げ面グラフのセクションに焦点を合わせることができます。例えば、ミニマップズーム機能を使用して折れ線グラフのピークに焦点を合わせると、同じタイムラインのモニタリングセクション内の他のグラフに対してスパイクを比較できます。

1. 焦点を合わせるグラフの領域を選択してドラッグし、マウスボタンを放します。

1. ズームをリセットするには、**[Reset zoom]** (ズームのリセット) アイコンを選択します。これは、内側にマイナス (-) 記号が付いた虫眼鏡のような見た目です。

### グラフを拡大する
<a name="graph-enlarge"></a>

グラフを拡大するには、個々のグラフの右上隅にあるメニューアイコンを選択してから、**[Enlarge]** (拡大) を選択します。グラフにカーソルを合わせるとメニューアイコンの横に表示される、拡大アイコンを選択することもできます。

グラフを拡大すると、別の期間、カスタム時間範囲、更新間隔を指定して、グラフの表示をさらに変更できます。これらの変更は、拡大表示を閉じるとデフォルト設定に戻ります。

期間を変更する  

1. **[Period options]** (期間オプション) メニューを選択します。デフォルトでは、このメニューには **[5 minutes]** (5 分) の値が表示されます。

1. 期間を選択します。事前定義された期間は 1 秒から 30 日です。

   たとえば、1 分間の表示を選択できます。これは、トラブルシューティング時に役立ちます。または、詳細度がより低い 1 時間表示を選択します。これは、時間の経過に伴う傾向を確認できるように、より広い期間 (3 日間など) を表示するときに便利です。詳細については、『Amazon CloudWatch ユーザーガイド』の「[期間](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#CloudWatchPeriods)」を参照してください。

時間範囲またはタイムゾーンを変更する  

1. 1 時間～1 週間の事前定義済み時間範囲 (**1 時間**、**3時間**、**12 時間**、**1 日**、**3 日**、**1 週間**) から 1 つを選択します。また、**[Custom]** (カスタム) を選択して独自の時間範囲を設定することもできます。

1. **[Custom]** (カスタム) を選択します。

   1. 時間範囲ボックスの左上隅にある **[Absolute]** (絶対値) タブを選択します。カレンダーのピッカーまたはテキストフィールドボックスを使用して、時間範囲を指定します。

   1. タイムゾーン: ボックスの右上隅にあるドロップダウンを選択します。タイムゾーンは **[UTC]** または **[Local time zone]** (ローカルタイムゾーン) に変更できます。

1. 時間範囲を指定したら、**[Apply]** (適用) を選択します。

グラフのデータ更新頻度を変更する  

1. 右上隅にある **[Refresh options]** (更新オプション) メニューを選択します。

1. 更新間隔 (**オフ**、**10 秒**、**1 分**、**2分**、**5 分**、**15 分**) を選択します。

### Amazon CloudWatch コンソールでグラフを表示する
<a name="graph-in-cloudwatch"></a>

モニタリングセクションのグラフは、 AWS KMS が Amazon CloudWatch に公開する事前定義済みのメトリクスから生成されます。グラフを CloudWatch コンソール内で開き、CloudWatch ダッシュボードに保存できます。外部キーストアが複数ある場合は、CloudWatch でそれぞれのグラフを開いて 1 つのダッシュボードに保存し、その状態と使用状況を比較できます。

**Amazon CloudWatch ダッシュボードに追加する**  
すべてのグラフを Amazon CloudWatch ダッシュボードに追加するには、右上隅にある **[Add to dashboard]** (ダッシュボードに追加) を選択します。既存のダッシュボードを選択するか、新しいロールを作成できます。このダッシュボードを使用して、グラフとアラームのカスタマイズされたビューを作成する方法については、『Amazon CloudWatch ユーザーガイド』の「[Amazon CloudWatch ダッシュボードの使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)」を参照してください。

**CloudWatch メトリクスで表示する**  
個々のグラフの右上隅にあるメニューアイコンを選択し、**[View in metrics]** (メトリクスで表示) を選択すると、このグラフが Amazon CloudWatch コンソールに表示されます。CloudWatch コンソールからこの 1 つのグラフをダッシュボードに追加して、時間範囲、期間、更新間隔を変更できます。詳細については、『Amazon CloudWatch ユーザーガイド』の「[メトリクスのグラフ化](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph_metrics.html)」を参照してください。

## グラフの解釈
<a name="interpreting-graphs"></a>

AWS KMS には、 AWS KMS コンソール内の外部キーストアの状態をモニタリングするためのグラフがいくつか用意されています。これらのグラフは自動的に設定され、[AWS KMS メトリクス](https://docs.aws.amazon.com/kms/latest/developerguide/monitoring-cloudwatch.html#kms-metrics)から生成されます。

グラフデータは、外部キーストアと外部キーへの呼び出しの一部として収集されます。呼び出しを行わなかった時間範囲内にデータ入力グラフが表示されることがあります。このデータは、外部キーストアプロキシと外部キーマネージャーのステータスをチェックするために がユーザーに代わって AWS KMS 行う定期的な`GetHealthStatus`呼び出しから取得されます。グラフに **[No data available]** (利用可能なデータなし) というメッセージが表示された場合は、その時間帯に呼び出しが記録されなかったか、外部キーストアが [`DISCONNECTED`](xks-connect-disconnect.md#xks-connection-state) 状態であったことを示します。[ビューをより広い時間範囲に調整する](#graph-time-range)ことで、外部キーストアが切断された時間を特定できる場合があります。

**Topics**
+ [Total requests](#total-requests-graph)
+ [信頼性](#reliability-graph)
+ [レイテンシー](#latency-graph)
+ [例外の上位 5 位](#top-5-exceptions-graph)
+ [証明書の有効期限日数](#cert-expire-graph)

### Total requests
<a name="total-requests-graph"></a>

特定の時間範囲内に特定の外部キーストアに対して受信された AWS KMS リクエストの合計数。このグラフを使用して、スロットリングのリスクがあるかどうかを判断します。

AWS KMS では、外部キーマネージャーが 1 秒あたり最大 1,800 件の暗号化オペレーションのリクエストを処理できることをお勧めします。5 分間で呼び出しが 54 万件近くになると、スロットリングのリスクが生じます。

[ExternalKeyStoreThrottle](monitoring-cloudwatch.md#metric-throttling) メトリクスで AWS KMS スロットリングする外部キーストアの KMS キーに対する暗号化オペレーションのリクエスト数をモニタリングできます。

「リクエスト率が極めて高いため」、リクエストが拒否されたことを説明するメッセージが表示され、`KMSInvalidStateException` エラーが頻発する場合は、外部キーマネージャーまたは外部キーストアプロキシが現在のリクエストレートに対応できていない可能性があります。可能な場合は、リクエスト率を下げます。また、カスタムキーストアのリクエストクォータ値の引き下げをリクエストすることも検討してください。このクォータ値を減らすとスロットリングが増加する可能性がありますが、 AWS KMS が余分なリクエストを外部キーストアプロキシまたは外部キーマネージャーに送信する前にすぐに拒否していることを示します。クォータの削減をリクエストするには、[AWS サポート センター](https://console.aws.amazon.com/support/home)にアクセスしてケースを作成してください。

リクエストの合計のグラフは、外部キーストアプロキシから AWS KMS が受信した成功と失敗の両方のレスポンスに関するデータを収集する、[XksProxyErrors](monitoring-cloudwatch.md#metric-xks-proxy-errors) メトリクスから生成されます。[特定のデータポイントを表示する](#graph-data-point)と、ポップアップに`CustomKeyStoreId`ディメンションの値と、そのデータポイントで記録された AWS KMS リクエストの合計数が表示されます。`CustomKeyStoreId` は常に同じになります。

### 信頼性
<a name="reliability-graph"></a>

外部キーストアプロキシが成功したレスポンスまたは再試行不可能なエラーを返した AWS KMS リクエストの割合。このグラフを使用して、外部キーストアプロキシのオペレーション状態を評価します。

グラフに 100% 未満の値が表示されている場合は、プロキシが応答しなかったか、再試行可能なエラーで応答したことを示します。これは、ネットワークの問題、外部キーストアプロキシまたは外部キーマネージャーの速度低下、または実装上のバグを示している可能性があります。

リクエストに不正な認証情報が含まれていてプロキシが `AuthenticationFailedException` で応答した場合でも、プロキシは[外部キーストアプロキシ API リクエスト](keystore-external.md#concept-proxy-apis)で誤った値を識別するため、グラフには 100% の信頼性が表示され、失敗することが予想されます。信頼性グラフのパーセンテージが 100% の場合、外部キーストアプロキシは想定どおりに応答しています。グラフに 100% 未満の値が表示されている場合、プロキシは再試行可能なエラーで応答したか、タイムアウトしています。例えば、リクエスト率が極めて高いためにプロキシが「`ThrottlingException`」を返した場合、プロキシはリクエスト失敗の原因となった特定の問題を識別できないため、信頼性の割合が低下します。これは、再試行可能なエラーは一時的な問題である可能性が高く、リクエストを再試行することで解決できるためです。

次のエラーレスポンスは、信頼性の割合を低下させます。[例外の上位 5 位](#top-5-exceptions-graph) グラフと [XksProxyErrors](monitoring-cloudwatch.md#metric-xks-proxy-errors) メトリクスを使用して、プロキシが再試行可能な各エラーを返す頻度をさらにモニタリングすることができます。
+ `InternalException`
+ `DependencyTimeoutException`
+ `ThrottlingException`
+ `XksProxyUnreachableException`

信頼性グラフは、 が外部キーストアプロキシから AWS KMS 受信した成功したレスポンスと失敗したレスポンスの両方に関するデータを収集する [XksProxyErrors](monitoring-cloudwatch.md#metric-xks-proxy-errors)メトリクスから算出されます。信頼性の割合は、レスポンスが `Retryable` の `ErrorType` 値をもつ場合にのみ低下します。[特定のデータポイントを表示する](#graph-data-point)と、ポップアップに`CustomKeyStoreId`ディメンションの値と、そのデータポイントで記録された AWS KMS リクエストの信頼性の割合が表示されます。`CustomKeyStoreId` は常に同じになります。

[XksProxyErrors](monitoring-cloudwatch.md#metric-xks-proxy-errors) メトリクスを使用して、1 分間に再試行可能なエラーが 5 回以上記録された場合に警告することで、潜在的なネットワーク上の問題を通知する CloudWatch アラームを作成することをお勧めします。詳細については、「[再試行可能なエラーのアラームを作成する](xks-alarms.md#retryable-errors-alarm)」を参照してください。

### レイテンシー
<a name="latency-graph"></a>

外部キーストアプロキシが AWS KMS リクエストに応答するのにかかるミリ秒数。このグラフを使用して、外部キーストアプロキシと外部キーマネージャーのパフォーマンスを評価します。

AWS KMS は、外部キーストアプロキシが 250 ミリ秒以内に各リクエストに応答することを期待します。ネットワークタイムアウトの場合、 AWS KMS はリクエストを 1 回再試行します。プロキシが 2 回失敗した場合、記録されるレイテンシーは、両方のリクエスト試行のタイムアウト制限を合わせたもので、グラフには約 500 ミリ秒が表示されます。それ以外の、プロキシが 250 ミリ秒のタイムアウト制限内に応答しないすべての場合、記録されるレイテンシーは 250 ミリ秒です。プロキシが暗号化と復号オペレーションで頻繁にタイムアウトする場合は、外部プロキシ管理者に相談してください。レイテンシー問題のトラブルシューティングについては、「[レイテンシーとタイムアウトエラー](xks-troubleshooting.md#fix-xks-latency)」を参照してください。

レスポンスが遅い場合は、外部キーマネージャーが現在のリクエストトラフィックを処理できないことを示している場合もあります。 AWS KMS では、外部キーマネージャーが 1 秒あたり最大 1,800 件の暗号化オペレーションのリクエストを処理できることをお勧めします。外部キーマネージャーが 1 秒あたり 1,800 件のリクエストを処理できない場合は、[カスタムキーストアの KMS キーリクエストクォータ](requests-per-second.md#rps-key-stores)の引き下げをリクエストすることを検討してください。外部キーストアの KMS キーを使用した暗号化オペレーションのリクエストは、外部キーストアプロキシまたは外部キーマネージャーによって処理され、後で拒否されるのではなく、[スロットリング](throttling.md)例外でフェイルファストします。

レイテンシーグラフは [XksProxyLatency](monitoring-cloudwatch.md#metric-xks-proxy-latency) メトリクスから生成されます。[特定のデータポイントを表示すると](#graph-data-point)、ポップアップには `KmsOperation` および `XksOperation` のディメンション値とともに、そのデータポイントで記録されたオペレーションの平均レイテンシーが表示されます。リスト項目は、最大レイテンシーから最低レイテンシーの順に並べられます。

[XksProxyLatency](monitoring-cloudwatch.md#metric-xks-proxy-latency) メトリクスを使用して、レイテンシーがタイムアウト制限に近づいたときに通知する CloudWatch アラームを作成することをお勧めします。詳細については、「[レスポンスタイムアウトのアラームを作成する](xks-alarms.md#latency-alarm)」を参照してください。

### 例外の上位 5 位
<a name="top-5-exceptions-graph"></a>

任意の時間範囲で暗号化オペレーションと管理オペレーションが失敗した場合の、例外の上位 5 位です。このグラフを使用して、最も頻発するエラーを追跡することで、エンジニアリング作業に優先順位を付けることができます。

この数には、外部キーストアプロキシから AWS KMS 受信した例外と`XksProxyUnreachableException`、外部キーストアプロキシとの通信を確立できない場合に内部で AWS KMS 返される例外が含まれます。

再試行可能なエラーの発生率が高い場合はネットワークエラーの可能性、再試行できないエラーの発生率が高い場合は、外部キーストアの設定に関する問題である可能性があります。たとえば、 のスパイクは、 で設定された認証情報 AWS KMS と外部キーストアプロキシの間に不一致がある`AuthenticationFailedExceptions`ことを示します。外部キーストア設定を確認するには、「[外部キーストアを表示する](view-xks-keystore.md)」を参照してください。外部キーストア設定を編集するには、「[外部キーストアプロパティを編集する](update-xks-keystore.md)」を参照してください。

が外部キーストアプロキシから AWS KMS 受け取る例外は、オペレーションが失敗した場合に が AWS KMS 返す例外とは異なります。 AWS KMS 暗号化オペレーションは、外部キーストアの外部設定または接続状態に関連するすべての障害`KMSInvalidStateException`に対して を返します。問題を特定するには、添付のエラーメッセージテキストを使用します。

次の表は、上位 5 つの例外グラフに表示される可能性のある例外と、 から AWS KMS 返される対応する例外を示しています。


| エラータイプ | グラフに表示される例外 | から AWS KMS 返された例外 | 
| --- | --- | --- | 
| 再試行不可 | AccessDeniedException   トラブルシューティングのヘルプについては、[プロキシの承認に関する問題](xks-troubleshooting.md#fix-xks-authorization) を参照してください。 | `CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | AuthenticationFailedException   トラブルシューティングのヘルプについては、[認証情報エラー](xks-troubleshooting.md#fix-xks-credentials) を参照してください。 | `CreateCustomKeyStore` および `UpdateCustomKeyStore` オペレーションに対応する **`XksProxyIncorrectAuthenticationCredentialException`**`CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行可能 | **`DependencyTimeoutException`** トラブルシューティングのヘルプについては、[レイテンシーとタイムアウトエラー](xks-troubleshooting.md#fix-xks-latency) を参照してください。 | `CreateCustomKeyStore` および `UpdateCustomKeyStore` オペレーションに対応する **`XksProxyUriUnreachableException`** `CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行可能 | **`InternalException`** 外部キーマネージャーと通信できないため、外部キーストアプロキシがリクエストを拒否しました。外部キーストアプロキシ設定が正しく、外部キーマネージャーが使用可能であることを検証します。 | `CreateCustomKeyStore` および `UpdateCustomKeyStore` オペレーションに対応する **`XksProxyInvalidResponseException`** `CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | **`InvalidCiphertextException`** トラブルシューティングのヘルプについては、[復号エラー](xks-troubleshooting.md#fix-xks-decrypt) を参照してください。 | 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | **`InvalidKeyUsageException`** トラブルシューティングのヘルプについては、[外部キーの暗号化オペレーションエラー](xks-troubleshooting.md#fix-external-key-crypto) を参照してください。 | `CreateKey` オペレーションに対応する **`XksKeyInvalidConfigurationException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | **`InvalidStateException`** トラブルシューティングのヘルプについては、[外部キーの暗号化オペレーションエラー](xks-troubleshooting.md#fix-external-key-crypto) を参照してください。 | `CreateKey` オペレーションに対応する **`XksKeyInvalidConfigurationException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | **`InvalidUriPathException`** トラブルシューティングのヘルプについては、[一般的な設定エラー](xks-troubleshooting.md#fix-xks-gen-configuration) を参照してください。 | `CreateCustomKeyStore` および `UpdateCustomKeyStore` オペレーションに対応する **`XksProxyInvalidConfigurationException`** `CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | **`KeyNotFoundException`** トラブルシューティングのヘルプについては、[外部キーエラー](xks-troubleshooting.md#fix-external-key) を参照してください。 | `CreateKey` オペレーションに対応する **`XksKeyNotFoundException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行可能 | **`ThrottlingException`** リクエスト率が極めて高いため、外部キーストアプロキシがリクエストを拒否しました。この外部キーストアの KMS キーを使用して、呼び出しの頻度を減らします。 | `CreateCustomKeyStore` および `UpdateCustomKeyStore` オペレーションに対応する **`XksProxyUriUnreachableException`** `CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | **`UnsupportedOperationException`** トラブルシューティングのヘルプについては、[外部キーの暗号化オペレーションエラー](xks-troubleshooting.md#fix-external-key-crypto) を参照してください。 | `CreateKey` オペレーションに対応する **`XksKeyInvalidResponseException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行不可 | **`ValidationException`** トラブルシューティングのヘルプについては、[プロキシの問題](xks-troubleshooting.md#fix-xks-proxy) を参照してください。 | `CreateCustomKeyStore` および `UpdateCustomKeyStore` オペレーションに対応する **`XksProxyInvalidResponseException`** `CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 
| 再試行可能 | **`XksProxyUnreachableException`** このエラーが繰り返し表示される場合は、外部キーストアプロキシがアクティブでネットワークに接続されていること、および外部キーストアの URI パスとエンドポイント URI または VPC サービス名が正しいことを確認します。 | `CreateCustomKeyStore` および `UpdateCustomKeyStore` オペレーションに対応する **`XksProxyUriUnreachableException`** `CreateKey` オペレーションに対応する **`CustomKeyStoreInvalidStateException`**。 暗号化オペレーションに対応する **`KMSInvalidStateException`**。 | 

上位 5 位の例外グラフは、[XksProxyErrors](monitoring-cloudwatch.md#metric-xks-proxy-errors) メトリクスから生成されます。[任意のデータポイントを表示する](#graph-data-point)と、ポップアップに `ExceptionName` ディメンションの値と、そのデータポイントで例外が記録された回数が表示されます。5 つのリスト項目は、最高頻度から最低頻度の例外の順に並べられます。

[XksProxyErrors](monitoring-cloudwatch.md#metric-xks-proxy-errors) メトリクスを使用して、1 分間に再試行不可能なエラーが 5 回以上記録された場合に警告することで、潜在的な設定問題を通知する CloudWatch アラームを作成することをお勧めします。詳細については、「[再試行不可能なエラーのアラームを作成する](xks-alarms.md#nonretryable-errors-alarm)」を参照してください。

### 証明書の有効期限日数
<a name="cert-expire-graph"></a>

外部キーストアプロキシエンドポイント (`XksProxyUriEndpoint`) の TLS 証明書の有効期限が切れるまでの日数です。このグラフを使用して、TLS 証明書の有効期限をモニタリングします。

証明書の有効期限が切れると、 AWS KMS は外部キーストアプロキシと通信できません。証明書が更新されるまで、外部キーストアの KMS キーで保護されているすべてのデータにアクセスできなくなります。

証明書の有効期限までの日数のグラフは、[XksProxyCertificateDaysToExpire](monitoring-cloudwatch.md#metric-xks-proxy-certificate-days-to-expire) メトリクスから生成されます。このメトリクスを使用して、有効期限切れの接近を通知する CloudWatch アラームを作成することを強くお勧めします。証明書の有効期限が切れると、暗号化されたリソースにアクセスできなくなる可能性があります。アラームを設定することで、組織は有効期限が切れる前に証明書を更新する時間をもつことができます。詳細については、「[証明書の有効期限切れアラームを作成する](xks-alarms.md#cert-expire-alarm)」を参照してください。

# 外部キーストアを接続および切断する
<a name="xks-connect-disconnect"></a>

新しい外部キーストアが接続されていません。外部キーストア AWS KMS keys で を作成して使用するには、外部キーストアを[外部キーストアプロキシ](keystore-external.md#concept-xks-proxy)に接続する必要があります。外部キーストアはいつでも接続と切断ができ、[その接続ステータスを表示できます](view-xks-keystore.md)。

外部キーストアが切断されている間、 AWS KMS は外部キーストアプロキシと通信できません。それにより、外部キーストアと既存の KMS キーの表示と管理が行えます。ただし、外部キーストアに KMS キーを作成したり、その KMS キーを暗号化オペレーションに使用したりすることはできません。プロパティを編集するときなど外部キーストアの切断が必要になる場合があります。状況に応じて適切に計画を立てます。キーストアを切断すると、その KMS キーを使用する AWS サービスのオペレーションが中断される可能性があります。

外部キーストアを自分で接続する必要はありません。外部キーストアは、無期限に切断状態のままにし、使用の必要がある場合のみ接続することができます。ただし、定期的に接続をテストして、接続が正しく接続できることを確認するとよいでしょう。

カスタムキーストアを切断すると、そのキーストアの KMS キーはただちに使用できなくなります (結果整合性の影響を受ける)。ただし、KMS キーで保護された[データキー](data-keys.md)により暗号化されたリソースは、KMS キーがデータキーの復号化などで再び使用されるまでは影響を受けません。この問題は AWS のサービスに影響します。その多くが、リソースを保護するためにデータキーを使用しています。詳細については、「[使用できない KMS キーがデータキーに及ぼす影響](unusable-kms-keys.md)」を参照してください。

**注記**  
外部キーストアは、一度も接続されたことがないか明示的に切断した場合のみ `DISCONNECTED` ステータスになります。`CONNECTED` ステータスは、外部キーストアやそのサポートコンポーネントが効率的に機能していることを示すものではありません。外部キーストアコンポーネントのパフォーマンスについては、各外部キーストアの詳細ページにある **[Monitoring]** (モニタリング) セクションのグラフを参照してください。詳細については、「[外部キーストアをモニタリングする](xks-monitoring.md)」を参照してください。  
外部キーマネージャーは、外部キーストアと AWS KMS 外部キーストアプロキシ間、または外部キーストアプロキシと外部キーマネージャー間の通信を停止および再開する追加の方法を提供する場合があります。詳細については外部キーマネージャーのドキュメントを参照してください。

**Topics**
+ [接続状態](#xks-connection-state)
+ [外部キーストアを接続する](about-xks-connecting.md)
+ [外部キーストアを切断する](about-xks-disconnecting.md)

## 接続状態
<a name="xks-connection-state"></a>

接続と切断により、カスタムキーストアの接続ステータスが変更されます。接続状態値は、 AWS CloudHSM キーストアと外部キーストアで同じです。

カスタムキーストアの接続状態を表示するには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/DescribeCustomKeyStores.html) オペレーションまたは AWS KMS コンソールを使用します。**[Connection state]** (接続ステータス) は、各カスタムキーストアテーブルに表示され、各カスタムキーストアの詳細ページ内の **[General configuration]** (一般設定) のセクション、およびカスタムキーストアの KMS キーの **[Cryptographic configuration]** (暗号化設定) タブに表示されます。詳細については、「[AWS CloudHSM キーストアを表示する](view-keystore.md)」および「[外部キーストアを表示する](view-xks-keystore.md)」を参照してください。

カスタムキーストアの接続ステータスは、次のいずれかになります。
+ `CONNECTED`: カスタムキーストアはバッキングキーストアに接続された状態です。ユーザーは、カスタムキーストアで KMS キーを作成し使用することができます。

  *キーストアのバッキング* AWS CloudHSM キーストアは、関連付けられた AWS CloudHSM クラスターです。外部キーストアのバッキングキーストアは、外部キーストアプロキシと、それがサポートしている外部キーマネージャーです。

  CONNECTED ステータスは、接続に成功し、カスタムキーストアが意図的に切断されていない状態を示します。接続が正常に機能していることを示すものではありません。 AWS CloudHSM キーストアに関連付けられた AWS CloudHSM クラスターのステータスについては、「 AWS CloudHSM ユーザーガイド」の[「 の CloudWatch メトリクスの取得 AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/hsm-metrics-cw.html)」を参照してください。外部キーストアのステータスとオペレーションについては、各外部キーストアの詳細ページにある **[Monitoring]** (モニタリング) セクションのグラフを参照してください。詳細については、「[外部キーストアをモニタリングする](xks-monitoring.md)」を参照してください。
+ `CONNECTING`: カスタムキーストアの接続処理が進行している状態です。これは過渡的な状態です。
+ `DISCONNECTED`: カスタムキーストアがバッキングに接続されていないか、 AWS KMS コンソールまたは [DisconnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/DisconnectCustomKeyStores.html) オペレーションを使用して意図的に切断されました。
+ `DISCONNECTING`: カスタムキーストアを接続する処理が進行中です。これは過渡的な状態です。
+ `FAILED`: カスタムキーストアを接続しようとして失敗した状態です。[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/DescribeCustomKeyStores.html) レスポンスの `ConnectionErrorCode` は問題を示します。

カスタムキーストアを接続するには、接続ステータスが `DISCONNECTED` 担っていなければなりません。接続ステータスが `FAILED` である場合、`ConnectionErrorCode` を使用して問題を特定し、解決します。カスタムキーストアを切断し、再度接続を試みます。接続障害については、[外部キーストア接続エラー](xks-troubleshooting.md#fix-xks-connection) を参照してください。接続エラーコードの対処方法については「[外部キーストアの接続エラーコード](xks-troubleshooting.md#xks-connection-error-codes)」を参照してください。

接続エラーコードを表示するには:
+ [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) レスポンスで、`ConnectionErrorCode` 要素の値を表示します。この要素は、`ConnectionState` が `FAILED` の場合にのみ、`DescribeCustomKeyStores` レスポンスに表示されます。
+  AWS KMS コンソールで接続エラーコードを表示するには、外部キーストアの詳細ページで **Failed **値にカーソルを合わせます。  
![\[カスタムキーストアの詳細ページの接続エラーコード\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/connection-error-code.png)

# 外部キーストアを接続する
<a name="about-xks-connecting"></a>

外部カスタムキーストアを外部キーストアプロキシに接続しているときは、[外部キーストアに KMS キーを作成](create-cmk-keystore.md)し、その既存の KMS キーをを[暗号化オペレーション](manage-cmk-keystore.md#use-cmk-keystore)に使用できます。

外部キーストアを外部キーストアプロキシに接続するプロセスは、外部キーストアの接続性に応じて異なります。
+ 外部キーストアを[パブリックエンドポイント接続](keystore-external.md#concept-xks-connectivity)で接続すると、 AWS KMS は、[GetHealthStatus リクエスト](keystore-external.md#concept-proxy-apis)を外部キーストアプロキシに送信して、[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)、[プロキシ URI パス](create-xks-keystore.md#require-path)、[プロキシ認証の認証情報](keystore-external.md#concept-xks-credential)を検証します。プロキシからのレスポンスにより、[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)と[プロキシ URI パス](create-xks-keystore.md#require-path)が正確かつアクセス可能であること、および、外部キーストアの[プロキシ認証の認証情報](keystore-external.md#concept-xks-credential)で署名されたリクエストをプロキシが認証したことが確定します。
+ 外部キーストアを [VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)で外部キーストアプロキシに接続すると、 は次の AWS KMS 操作を行います。
  + [プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)で指定されたプライベート DNS 名のドメインが[検証済み](vpc-connectivity.md#xks-private-dns)であることを確認する。
  +  AWS KMS VPC から VPC エンドポイントサービスへのインターフェイスエンドポイントを作成します。
  + プロキシ URI エンドポイントで指定された、プライベート DNS 名のプライベートホストゾーンを作成する。
  + [GetHealthStatus リクエスト](keystore-external.md#concept-proxy-apis)を外部キーストアプロキシに送信する。プロキシからのレスポンスにより、[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)と[プロキシ URI パス](create-xks-keystore.md#require-path)が正確かつアクセス可能であること、および、外部キーストアの[プロキシ認証の認証情報](keystore-external.md#concept-xks-credential)で署名されたリクエストをプロキシが認証したことが確定します。

接続オペレーションによりカスタムキーストアを接続するプロセスが開始しますが、外部キーストアが外部プロキシに接続されるまでに約 5 分かかります。接続オペレーションからのレスポンスは、外部キーストアが接続されたことを示すものではありません。接続が成功したことを確認するには、 AWS KMS コンソールまたは [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/DescribeCustomKeyStores.html) オペレーションを使用して、外部キーストア[の接続状態](xks-connect-disconnect.md#xks-connection-state)を表示します。

接続状態が の場合`FAILED`、接続エラーコードが AWS KMS コンソールに表示され、`DescribeCustomKeyStore`レスポンスに追加されます。接続エラーコードの解釈については、「[外部キーストアの接続エラーコード](xks-troubleshooting.md#xks-connection-error-codes)」を参照してください。

## 外部キーストアに接続および再接続する
<a name="connect-xks"></a>

 AWS KMS コンソールで、または [ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) オペレーションを使用して、外部キーストアに接続または再接続できます。

### AWS KMS コンソールの使用
<a name="connect-xks-console"></a>

 AWS KMS コンソールを使用して、外部キーストアを外部キーストアプロキシに接続できます。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

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

1. ナビゲーションペインで、**[Custom key stores]** (カスタムキーストア)、**[External key stores]** (外部キーストア) の順に選択します。

1. 接続する外部キーストアの行を選択します。

   外部キーストアの[接続ステータス](xks-connect-disconnect.md#xks-connection-state)が **FAILED** である場合、[外部キーストアを切断](disconnect-keystore.md#disconnect-keystore-console)してから接続します。

1. **[Key store actions]** (キーストアアクション) メニューから **[Connect]** (接続) を選択します。

通常、接続プロセスが完了するまでに約 5 分かかります。オペレーションが完了すると、[接続ステータス](xks-connect-disconnect.md#xks-connection-state)は **CONNECTED** に変わります。

接続状態が **Failed** になった場合は、接続ステータスにカーソルを合わせると、エラーの原因を示す接続エラーコードが表示されます。接続エラーコードの対処方法については「[外部キーストアの接続エラーコード](xks-troubleshooting.md#xks-connection-error-codes)」を参照してください。接続ステータスが **Failed** である外部キーストアに接続するには、先に[カスタムキーストアを切断](disconnect-keystore.md#disconnect-keystore-console)します。

### AWS KMS API の使用
<a name="connect-xks-api"></a>

切断された外部キーストアを接続するには、[ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) オペレーションを使用します。

接続する前、外部キーストアの[接続ステータス](xks-connect-disconnect.md#xks-connection-state)は `DISCONNECTED` になっているはずです。接続ステータスが `FAILED` である場合は、[外部キーストアを切断](about-xks-disconnecting.md#disconnect-xks-api)してから接続します。

この接続処理は、約 5 分で完了します。すぐに失敗しない限り、`ConnectCustomKeyStore` は、HTTP 200 レスポンスと、プロパティを含まない JSON オブジェクトを返します。ただし、この初期レスポンスは接続に成功したことを示していません。外部キーストアが接続されているかどうかを確認するには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) のレスポンスの接続ステータスを確認します。

このセクションの例では [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) を使用しますが、サポートされている任意のプログラミング言語を使用することができます。

外部キーストアを識別するには、カスタムキーストア ID を使用します。ID はコンソールの [**カスタムキーストア**] ページまたは [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用して見つけることができます。この例を実行する前に、例の ID を有効な ID に置き換えます。

```
$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
```

`ConnectCustomKeyStore` オペレーションは、そのレスポンスで `ConnectionState` を返しません。外部キーストアが接続されていることを確認するには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用します。デフォルトでは、このオペレーションは、アカウントとリージョンのすべてのカスタムキーストアを返します。ただし、`CustomKeyStoreId` または `CustomKeyStoreName` パラメータのどちらかを使用して (両方は使用できません) レスポンスを特定のカスタムキーストアに制限できます。`CONNECTED` の `ConnectionState` 値は、外部キーストアが外部キーストアプロキシに接続されていることを示します。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "CONNECTED",
      "CreationDate": "2022-12-13T18:34:10.675000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE98765432EXAMPLE",
        "Connectivity": "VPC_ENDPOINT_SERVICE",
        "UriEndpoint": "https://example-proxy-uri-endpoint-vpc",
        "UriPath": "/example/prefix/kms/xks/v1",
        "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example"
      }
    }
  ]
}
```

`DescribeCustomKeyStores` の `ConnectionState` 値が `FAILED` である場合、`ConnectionErrorCode` 要素に失敗した原因が示されます。

次の例では、 の`XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND`値は、 が外部キーストアプロキシとの通信に使用する VPC エンドポイントサービスを見つけ AWS KMS られない`ConnectionErrorCode`ことを示します。`XksProxyVpcEndpointServiceName` が正しいこと、 AWS KMS サービスプリンシパルが Amazon VPC エンドポイントサービスで許可されたプリンシパルであること、および VPC エンドポイントサービスが接続リクエストを受け入れる必要がないことを確認します。接続エラーコードの対処方法については「[外部キーストアの接続エラーコード](xks-troubleshooting.md#xks-connection-error-codes)」を参照してください。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "FAILED",
      "ConnectionErrorCode": "XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND",
      "CreationDate": "2022-12-13T18:34:10.675000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE98765432EXAMPLE",
        "Connectivity": "VPC_ENDPOINT_SERVICE",
        "UriEndpoint": "https://example-proxy-uri-endpoint-vpc",
        "UriPath": "/example/prefix/kms/xks/v1",
        "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example"
      }
    }
  ]
}
```

# 外部キーストアを切断する
<a name="about-xks-disconnecting"></a>

[VPC エンドポイントサービスに接続している](choose-xks-connectivity.md#xks-vpc-connectivity)外部キーストアを、外部キーストアプロキシから切断すると、 AWS KMS は、VPC エンドポイントサービスとのインターフェイスエンドポイントを削除し、接続をサポートするために作成されたネットワークインフラストラクチャを削除します。パブリックエンドポイントに接続している外部キーストアには、同等のプロセスは必要ありません。このアクションは、VPC エンドポイントサービスやそのサポートコンポーネントには影響せず、外部キーストアプロキシや外部コンポーネントにも影響しません。

外部キーストアが切断されている間、 AWS KMS は外部キーストアプロキシにリクエストを送信しません。外部キーストアの接続状ステータスは `DISCONNECTED` です。切断された外部キーストアの KMS キーは、([削除が保留されている](deleting-keys.md)場合を除き) [`UNAVAILABLE` のキーステータス](key-state.md)になります。つまり、暗号化オペレーションには使用できません。しかし、外部キーストアと既存の KMS キーの表示および管理は引き続き行えます。

切断状態は一時的なものとして、また元に戻せるように設計されています。外部キーストアはいつでも再接続できます。通常、再度設定する必要はありません。ただし、関連付けられた外部キーストアプロキシのプロパティが、[プロキシ認証の認証情報](keystore-external.md#concept-xks-credential)のローテーションなどにより変更されている場合は、再度接続する前に、[外部キーストアの設定を編集する](update-xks-keystore.md)必要があります。

**注記**  
カスタムキーストアが切断されている間は、カスタムキーストアで KMS キーを作成したり、暗号化オペレーションで既存の KMS キーを使用したりする試みはすべて失敗します。このオペレーションにより、ユーザーが機密データを保存したりアクセスしたりすることを防ぐことができます。

外部キーストアの切断による影響を、より正確に予測するには、外部キーストアで KMS キーを識別して[過去の使用状況を特定](deleting-keys-determining-usage.md)します。

外部キーストアを切断する理由としては、次のようなものが挙げられます。
+ **プロパティを編集するには。**外部キーストアが接続されている間は、カスタムキーストア名、プロキシ URI パス、プロキシ認証の認証情報の編集が行えます。ただし、プロキシの接続タイプ、プロキシ URI エンドポイント、VPC エンドポイントのサービス名を編集するには、先に外部キーストアを切断しておく必要があります。詳細については、「[外部キーストアプロパティを編集する](update-xks-keystore.md)」を参照してください。
+  AWS KMS と外部キーストアプロキシ間の**すべての通信を停止するには**。エンドポイントまたは VPC エンドポイントサービスを無効にすることで、 AWS KMS とプロキシ間の通信を停止することもできます。さらに、外部キーストアプロキシまたはキー管理ソフトウェアは、 がプロキシと通信 AWS KMS できないようにする、またはプロキシが外部キーマネージャーにアクセスできないようにする追加のメカニズムを提供する場合があります。
+ 外部キーストアで**すべての KMS キーを無効にするには**。 AWS KMS コンソールまたは [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html) オペレーションを使用して、外部キーストアで [KMS キーを無効化および再有効化](enabling-keys.md)できます。これらのオペレーションはすぐに完了します (結果整合性の影響を受ける) が、一度に 1 つの KMS キーしか処理されません。外部キーストアを切断すると外部キーストアのすべての KMS キーのキーステータスが `Unavailable` に変更され、暗号化オペレーションに使用できなくなります。
+ **失敗した接続試行を修復するには**。外部キーストアを接続する試みに失敗した場合 (カスタムキーストアの接続ステータスが `FAILED` になる) は、再度接続を試みる前に外部キーストアを切断する必要があります。

## 外部キーストアを切断する
<a name="disconnect-xks"></a>

 AWS KMS コンソールで、または [DisconnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisconnectCustomKeyStore.html) オペレーションを使用して、外部キーストアを切断できます。

### AWS KMS コンソールの使用
<a name="disconnect-xks-console"></a>

 AWS KMS コンソールを使用して、外部キーストアを外部キーストアプロキシに接続できます。この処理は約 5 分で完了します。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

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

1. ナビゲーションペインで、**[Custom key stores]** (カスタムキーストア)、**[External key stores]** (外部キーストア) の順に選択します。

1. 切断する外部キーストアの行を選択します。

1. **[Key store actions]** (キーストアアクション) メニューから **[Disconnect]** (切断) を選択します。

オペレーションが完了すると、接続状態が [**DISCONNECTING**] から [**DISCONNECTED**] に変わります。オペレーションが失敗した場合は、問題を説明し、修正方法を示すエラーメッセージが表示されます。さらにヘルプが必要な場合は、「[外部キーストア接続エラー](xks-troubleshooting.md#fix-xks-connection)」を参照してください。

### AWS KMS API の使用
<a name="disconnect-xks-api"></a>

接続している外部キーストアを切断するには、[DisconnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisconnectCustomKeyStore.html) オペレーションを使用します。オペレーションが成功すると、 は HTTP 200 レスポンスとプロパティのない JSON オブジェクト AWS KMS を返します。この処理は約 5 分で完了します。外部キーストアの接続ステータスを確認するときは、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用します。

このセクションの例では [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) を使用しますが、サポートされている任意のプログラミング言語を使用することができます。

こちらの例では、VPC エンドポイントサービスに接続した外部キーストアを切断します。このコマンドを実行する前に、例にあるカスタムキーストア ID を有効な ID に置き換えます。

```
$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
```

外部キーストアが切断されていることを確認するには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用します。デフォルトでは、このオペレーションは、アカウントとリージョンのすべてのカスタムキーストアを返します。ただし、`CustomKeyStoreId` または `CustomKeyStoreName` パラメータ のどちらかを使用して (両方は使用できません) レスポンスを特定のカスタムキーストアに制限できます。`DISCONNECTED` の `ConnectionState` 値は、例にある外部キーストアが、外部キーストアプロキシに接続されていないことを示します。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "DISCONNECTED",
      "CreationDate": "2022-12-13T18:34:10.675000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE98765432EXAMPLE",
        "Connectivity": "VPC_ENDPOINT_SERVICE",
        "UriEndpoint": "https://example-proxy-uri-endpoint-vpc",
        "UriPath": "/example/prefix/kms/xks/v1",
        "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example"
      }
    }
  ]
}
```

# 外部キーストアを削除する
<a name="delete-xks"></a>

外部キーストアを削除すると、 は外部キーストアプロキシに関する情報など AWS KMS、外部キーストアに関するすべてのメタデータ AWS KMS を から削除します。このオペレーションは、[外部キーストアプロキシ](keystore-external.md#concept-xks-proxy)、[外部キーマネージャー](keystore-external.md#concept-ekm)、[外部キー](keystore-external.md#concept-external-key)、または Amazon VPC や VPC エンドポイントサービスなどの外部キーストアをサポートするために作成した AWS リソースには影響しません。

外部キーストアを削除するときは、先に、キーストアから[すべての KMS キーを削除](deleting-keys.md)し、外部キーストアプロキシから[キーストアを切断](xks-connect-disconnect.md)しておきます。さもないと、キーストアを削除することができません。

外部キーストアを削除すると元には戻せませんが、新しい外部キーストアを作成し、同じ外部キーストアプロキシと外部キーマネージャーに関連付けることができます。ただし、同じ外部キーマテリアルにアクセスできる場合でも、外部キーストアで対称暗号化 KMS キーを再作成することはできません。 は、各 KMS キーに固有の対称暗号文にメタデータ AWS KMS を含めます。このセキュリティ機能により、データを暗号化した KMS キーのみが、そのデータを復号することができます。

外部キーストアを削除するのではなく、切断することを検討します。外部キーストアが切断されている間は、外部キーストアとその を管理できます AWS KMS keys が、外部キーストアで KMS キーを作成または使用することはできません。外部キーストアはいつでも再接続でき、KMS キーを使用して、データの暗号化と復号化を再開できます。切断された外部キーストアプロキシや使用できない KMS キーには、コストは発生しません。

外部キーストアは、 AWS KMS コンソールで、または [DeleteCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteCustomKeyStore.html) オペレーションを使用して削除できます。

## AWS KMS コンソールの使用
<a name="delete-xks-console"></a>

 AWS KMS コンソールを使用して、外部キーストアを削除できます。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

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

1. ナビゲーションペインで、**[Custom key stores]** (カスタムキーストア)、**[External key stores]** (外部キーストア) の順に選択します。

1. 削除する外部キーストアが表示されている行を探します。外部キーストアの **[Connection state]** (接続ステータス) が **DISCONNECTED** になっていなければ、先に[カスタムキーストアを切断](about-xks-disconnecting.md#disconnect-xks-console)し、その後に削除します。

1. **[Key store actions]** (キーストアアクション) メニューから **[Delete]** (削除) を選択します。

オペレーションが完了すると成功メッセージが表示され、この外部 キーストアはカスタムキーストアリストに表示されなくなります。オペレーションが正常に行われなかった場合、問題を説明し、修正方法を示すエラーメッセージが表示されます。さらにヘルプが必要な場合は、「[外部キーストアのトラブルシューティング](xks-troubleshooting.md)」を参照してください。

## AWS KMS API の使用
<a name="delete-xks-api"></a>

外部キーストアを削除するときは、[DeleteCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteCustomKeyStore.html) オペレーションを使用します。オペレーションが成功すると、 は HTTP 200 レスポンスとプロパティのない JSON オブジェクト AWS KMS を返します。

まず、外部キーストアを切断します。このコマンドを実行する前に、例のカスタムキーストア ID を有効な ID に置き換えます。

```
$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
```

外部キーストアを切断すると、[DeleteCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteCustomKeyStore.html) オペレーションでこれを削除することができます。

```
$ aws kms delete-custom-key-store --custom-key-store-id cks-1234567890abcdef0
```

外部キーストアが削除されていることを確認するには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用します。

```
$ aws kms describe-custom-key-stores
            
{
    "CustomKeyStores": []
}
```

存在しないカスタムキーストア名または ID を指定すると、 は`CustomKeyStoreNotFoundException`例外 AWS KMS を返します。

```
$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0

An error occurred (CustomKeyStoreNotFoundException) when calling the DescribeCustomKeyStore operation:
```

# 外部キーストアのトラブルシューティング
<a name="xks-troubleshooting"></a>

外部キーストアのほとんどの問題の解決は、各例外とともに AWS KMS 表示されるエラーメッセージ、または[外部キーストアを外部キー](xks-connect-disconnect.md)ストアプロキシに接続しようとしたときに が AWS KMS 返す[接続エラーコード](#fix-xks-connection)によって示されます。ただし、一部の問題はもう少し複雑です。

外部キーストアの問題を診断する際は、最初に原因を特定します。これにより、対処法の範囲が狭まり、トラブルシューティングがより効率的になります。
+ AWS KMS — [外部キーストア設定](create-xks-keystore.md#xks-requirements)の値が正しくないなど AWS KMS、問題が 内にある可能性があります。
+ 外部 — この問題は AWS KMS、外部キーストアプロキシ、外部キーマネージャー、外部キー、または VPC エンドポイントサービスの設定または操作に関する問題など、 の外部で発生する可能性があります。
+ ネットワーク — 接続またはネットワーク (プロキシエンドポイント、ポート、IP スタック、プライベート DNS、ドメインの問題など) に問題がある可能性があります。

**注記**  
外部キーストアで管理オペレーションが失敗すると、複数の異なる例外が生成されます。ただし、 AWS KMS 暗号化オペレーションは、外部キーストアの外部設定または接続状態に関連するすべての障害`KMSInvalidStateException`に対して返されます。問題を特定するには、添付のエラーメッセージテキストを使用します。  
[ConnectCustomKeyStore](xks-connect-disconnect.md) オペレーションは、接続プロセスが完了する前に、直ちに成功します。接続プロセスが成功したかどうかを判断するには、外部キーストアの[接続状態](xks-connect-disconnect.md#xks-connection-state)を表示します。接続プロセスが失敗した場合、 AWS KMS は原因を説明し、対処方法を提案する[接続エラーコード](#xks-connection-error-codes)を返します。

**Topics**
+ [外部キーストアのトラブルシューティングツール](#xks-troubleshooting-tools)
+ [設定エラー](#fix-xks-configuration)
+ [外部キーストア接続エラー](#fix-xks-connection)
+ [レイテンシーとタイムアウトエラー](#fix-xks-latency)
+ [認証情報エラー](#fix-xks-credentials)
+ [キーステータスエラー](#fix-unavailable-xks-keys)
+ [復号エラー](#fix-xks-decrypt)
+ [外部キーエラー](#fix-external-key)
+ [プロキシの問題](#fix-xks-proxy)
+ [プロキシの承認に関する問題](#fix-xks-authorization)

## 外部キーストアのトラブルシューティングツール
<a name="xks-troubleshooting-tools"></a>

AWS KMS には、外部キーストアとそのキーに関する問題を特定して解決するためのツールがいくつか用意されています。これらのツールは、外部キーストアプロキシおよび外部キーマネージャーに付属するツールと組み合わせて使用します。

**注記**  
外部キーストアプロキシと外部キーマネージャーを使用すると、外部キーストアとその KMS キーを簡単に作成し、維持できます。詳細については、外部ツールのドキュメントを参照してください。

**AWS KMS 例外とエラーメッセージ**  
AWS KMS は、発生した問題に関する詳細なエラーメッセージを提供します。 AWS KMS 例外の詳細については、 [https://docs.aws.amazon.com/kms/latest/APIReference/](https://docs.aws.amazon.com/kms/latest/APIReference/)および AWS SDKsを参照してください。 AWS KMS コンソールを使用している場合でも、これらのリファレンスが役立つ場合があります。例えば、`CreateCustomKeyStores` オペレーションの場合は、[エラー](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html#API_CreateCustomKeyStore_Errors)リストを参照してください。  
外部キーストアプロキシのパフォーマンスを最適化するため、 AWS KMS は、5 分間の集約時間内に、お使いのプロキシの信頼性に基づく例外を返します。500 Internal Server Error、503 Service Unavailable、または接続タイムアウトが発生した場合、信頼性の高いプロキシであれば `KMSInternalException` を返し、自動再試行をトリガーして、リクエストが最終的に成功するようにします。一方で、信頼性の低いプロキシは `KMSInvalidStateException` を返します。詳細については、「[外部キーストアのモニタリング](https://docs.aws.amazon.com/kms/latest/developerguide/xks-monitoring.html)」を参照してください。  
外部キーストアの KMS キーを使用して別の AWS サービスのリソースを保護するなど、別の AWS サービスで問題が発生した場合、 AWS そのサービスは問題の特定に役立つ追加情報を提供することがあります。 AWS サービスがメッセージを提供していない場合は、KMS キーの使用を記録する [CloudTrail ログ](logging-using-cloudtrail.md)にエラーメッセージを表示できます。

**[CloudTrail ログ](logging-using-cloudtrail.md)**  
 AWS KMS コンソールのアクションを含むすべての AWS KMS API オペレーションは、 AWS CloudTrail logs に記録されます。 は、成功したオペレーションと失敗したオペレーションのログエントリ AWS KMS を記録します。オペレーションが失敗した場合、ログエントリには AWS KMS の例外名 (`errorCode`) とエラーメッセージ (`errorMessage`) が含まれます。この情報を使用してエラーを特定し、解決できます。例については、[外部キーストアの KMS キーを使用した復号の失敗](ct-decrypt.md#ct-decrypt-xks-fail)を参照してください。  
ログエントリにはリクエスト ID も含まれます。リクエストが外部キーストアプロキシに到達した場合は、ログエントリのリクエスト ID を使用して、プロキシログで対応するリクエストを検索できます (プロキシが提供している場合)。

**[CloudWatch メトリクス](monitoring-cloudwatch.md#kms-metrics)**  
AWS KMS は、レイテンシー、スロットリング、プロキシエラー、外部キーマネージャーのステータス、TLS 証明書の有効期限が切れるまでの日数、プロキシ認証情報の報告された経過時間など、外部キーストアのオペレーションとパフォーマンスに関する詳細な Amazon CloudWatch メトリクスを記録します。これらのメトリクスを使用して、外部キーストアのオペレーションに関するデータモデルや、差し迫った問題が発生する前に警告する CloudWatch アラームを開発できます。  
AWS KMS では、CloudWatch アラームを作成して外部キーストアメトリクスをモニタリングすることをお勧めします。これらのアラームは、問題が発生する前に問題の初期兆候を警告します。

**[モニタリンググラフ](xks-monitoring.md)**  
AWS KMS は、 AWS KMS コンソールの各外部キーストアの詳細ページに外部キーストア CloudWatch メトリクスのグラフを表示します。グラフのデータは、エラー原因の特定、差し迫った問題の検出、ベースラインの確立、CloudWatch アラームのしきい値の調整に役立ちます。モニタリンググラフの解釈とデータ使用方法の詳細については、「[外部キーストアをモニタリングする](xks-monitoring.md)」を参照してください。

**外部キーストアと KMS キーの表示**  
AWS KMS は、 AWS KMS コンソールの外部キーストアと [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) および DescribeKey オペレーションへのレスポンスで、外部キーストアと [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)KMS キーに関する詳細情報を表示します。これらの表示には、外部キーストアの[接続状態](xks-connect-disconnect.md#xks-connection-state)や KMS キーに関連付けられている外部キーの ID など、トラブルシューティングに使用できる情報を含む、外部キーストアと KMS キーの特別なフィールドが含まれています。詳細については、「[外部キーストアを表示する](view-xks-keystore.md)」を参照してください。

**[XKS プロキシテストクライアント](https://github.com/aws-samples/aws-kms-xksproxy-test-client)**  
AWS KMS は、外部キーストアプロキシが[AWS KMS 外部キーストアプロキシ API 仕様](https://github.com/aws/aws-kms-xksproxy-api-spec/)に準拠していることを検証するオープンソースのテストクライアントを提供します。このテストクライアントを使用して、外部キーストアプロキシの問題を特定し、解決できます。

## 設定エラー
<a name="fix-xks-configuration"></a>

外部キーストアを作成するときは、外部キーストアの設定を構成するプロパティ値 ([プロキシ認証情報](create-xks-keystore.md#require-credential)、[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)、[プロキシ URI パス](create-xks-keystore.md#require-path)、[VPC エンドポイントサービス名](create-xks-keystore.md#require-vpc-service-name)など) を指定します。がプロパティ値のエラー AWS KMS を検出すると、オペレーションは失敗し、障害値を示すエラーを返します。

設定に関する問題の多くは、誤った値を修正することで解決できます。無効なプロキシ URI パスやプロキシ認証情報は、外部キーストアを切断せずに修正できます。一意性の要件を含む、これらの値の定義については「[前提条件を構成する](create-xks-keystore.md#xks-requirements)」を参照してください。これらの値を更新する手順については、「[外部キーストアプロパティを編集する](update-xks-keystore.md)」を参照してください。

プロキシ URI パスとプロキシ認証情報値のエラーを避けるために、外部キーストアを作成または更新するときは、[プロキシ設定ファイル](create-xks-keystore.md#proxy-configuration-file)を AWS KMS コンソールにアップロードします。これは、外部キーストアプロキシまたは外部キーマネージャーから提供される、プロキシ URI パスとプロキシ認証情報値を含む JSON ベースのファイルです。 AWS KMS API オペレーションでプロキシ設定ファイルは使用できませんが、 ファイルの値を使用して、プロキシの値と一致する API リクエストのパラメータ値を指定することができます。

### 一般的な設定エラー
<a name="fix-xks-gen-configuration"></a>

**例外**: `CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (暗号化オペレーション)、`XksProxyInvalidConfigurationException` (管理オペレーション、`CreateKey` を除く)

[**接続エラーコード**](#xks-connection-error-codes): `XKS_PROXY_INVALID_CONFIGURATION`、`XKS_PROXY_INVALID_TLS_CONFIGURATION`

[パブリックエンドポイント接続](choose-xks-connectivity.md#xks-connectivity-public-endpoint)を持つ外部キーストアの場合、 は外部キーストアを作成および更新するときにプロパティ値を AWS KMS テストします。[VPC エンドポイントサービス接続](choose-xks-connectivity.md#xks-vpc-connectivity)を備えた外部キーストアの場合、 AWS KMS は、外部キーストアの接続および更新時にプロパティ値をテストします。

**注記**  
外部キーストアをその外部キーストアのプロキシに接続する試みが失敗しても、非同期の `ConnectCustomKeyStore` オペレーションは成功する場合があります。この場合、例外はありませんが、外部キーストアの接続状態は「失敗」で、エラーメッセージを説明する接続エラーコードが表示されます。詳細については、「[外部キーストア接続エラー](#fix-xks-connection)」を参照してください。

がプロパティ値のエラー AWS KMS を検出すると、オペレーションは失敗し、次のいずれかのエラーメッセージ`XksProxyInvalidConfigurationException`とともに を返します。


|  | 
| --- |
| URI パスが無効なため、外部キーストアプロキシがリクエストを拒否しました。外部キーストアの URI パスを検証し、必要に応じて更新します。 | 
+ [プロキシ URI パス](create-xks-keystore.md#require-path)は、プロキシ API への AWS KMS リクエストの基本パスです。 APIs このパスが間違っていると、プロキシへのリクエストはすべて失敗します。外部キーストアの[現在のプロキシ URI パスを表示する](view-xks-keystore.md)には、 AWS KMS コンソールまたは `DescribeCustomKeyStores` オペレーションを使用します。正しいプロキシ URI パスを検出するには、外部キーストアプロキシのドキュメントを参照してください。プロキシ URI パス値の修正については、「[外部キーストアプロパティを編集する](update-xks-keystore.md)」を参照してください。
+ 外部キーストアプロキシのプロキシ URI パスは、外部キーストアプロキシまたは外部キーマネージャーの更新によって変更される可能性があります。これらの変更については、外部キーストアプロキシまたは外部キーマネージャーのドキュメントを参照してください。


|  | 
| --- |
| `XKS_PROXY_INVALID_TLS_CONFIGURATION`AWS KMS が、外部キーストアプロキシへの TLS 接続を確立できません。証明書を含む、TLS 設定を検証します。 | 
+ すべての外部キーストアプロキシには TLS 証明書が必要です。TLS 証明書は、外部キーストアでサポートされている公開認証機関 (CA) によって発行される必要があります。サポートされている CA のリストについては、「 AWS KMS 外部キーストアプロキシ API 仕様」の、「[信頼できる認証機関](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/TrustedCertificateAuthorities)」を参照してください。
+ パブリックエンドポイント接続の場合、TLS 証明書のサブジェクト共通名 (CN) が、外部キーストアプロキシの[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)のドメイン名と一致する必要があります。例えば、パブリックエンドポイントが https://myproxy.xks.example.com の場合、TLS、TLS 証明書の CN は、`myproxy.xks.example.com` または `*.xks.example.com` である必要があります。
+ VPC エンドポイントサービス接続の場合、TLS 証明書のサブジェクト共通名 (CN) が、[VPC エンドポイントサービス](create-xks-keystore.md#require-vpc-service-name)のプライベート DNS 名と一致する必要があります。例えば、プライベート DNS 名が myproxy-private.xks.example.com の場合、TLS 証明書の CN は、`myproxy-private.xks.example.com` または `*.xks.example.com` である必要があります。
+ TLS 証明書を有効期限切れにすることはできません。TLS 証明書の有効期限を取得するには、[OpenSSL](https://www.openssl.org/) などの SSL ツールを使用します。外部キーストアに関連付けられた TLS 証明書の有効期限をモニタリングするには、[XksProxyCertificateDaysToExpire](monitoring-cloudwatch.md#metric-xks-proxy-certificate-days-to-expire) CloudWatch メトリクスを使用します。TLS 証明書の有効期限が切れるまでの日数は、 AWS KMS コンソール[**のモニタリング**セクション](xks-monitoring.md)にも表示されます。
+ [パブリックエンドポイント接続](choose-xks-connectivity.md#xks-connectivity-public-endpoint)を使用している場合は、SSL テストツールを使用して SSL 設定をテストします。TLS 接続エラーは、証明書チェーンが間違っていることが原因である可能性があります。

### VPC エンドポイントサービス接続設定のエラー
<a name="fix-xks-vpc-configuration"></a>

**例外**: `XksProxyVpcEndpointServiceNotFoundException`、`XksProxyVpcEndpointServiceInvalidConfigurationException`

一般的な接続の問題に加えて、VPC エンドポイントサービス接続を使用して外部キーストアを作成、接続、または更新するときに、次の問題が発生することがあります。 は、外部キーストア[を作成](create-xks-keystore.md)、[接続](xks-connect-disconnect.md)、および[更新](update-xks-keystore.md)するときに、VPC エンドポイントサービス接続を使用して外部キーストアのプロパティ値を AWS KMS テストします。設定エラーが原因で管理オペレーションが失敗すると、次の例外が生成されます。


|  | 
| --- |
| XksProxyVpcEndpointServiceNotFoundException | 

原因は、次のいずれかである可能性があります。
+ VPC エンドポイントのサービス名が間違っています。外部キーストアの VPC エンドポイントサービス名が正しく、外部キーストアのプロキシ URI エンドポイント値と一致していることを検証します。VPC エンドポイントサービス名を検出するには、[Amazon VPC コンソール](https://console.aws.amazon.com/vpc)または [DescribeVpcEndpointServices](https://docs.aws.amazon.com/AmazonVPC/latest/APIReference/DescribeVpcEndpointServices.html) オペレーションを使用します。既存の外部キーストアの VPC エンドポイントサービス名とプロキシ URI エンドポイントを検索するには、 AWS KMS コンソールまたは [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用します。詳細については、「[外部キーストアを表示する](view-xks-keystore.md)」を参照してください。
+ VPC エンドポイントサービスは、外部キーストア AWS リージョン とは異なる にある可能性があります。VPC エンドポイントサービスと外部キーストアが同じリージョンにあることを検証します。(リージョン名の外部名 (`us-east-1` など) は、com.amazonaws.vpce.us-east-1.vpce-svc-example などの VPC エンドポイントサービス名の一部です)。外部キーストアの VPC エンドポイントサービス要件のリストについては、「[VPC エンドポイントサービス](create-xks-keystore.md#require-vpc-service-name)」を参照してください。VPC エンドポイントサービスまたは外部キーストアを別のリージョンに移動することはできません。ただし、VPC エンドポイントサービスと同じリージョンに新しい外部キーストアを作成できます。詳細については、「[VPC エンドポイントサービス接続を設定する](vpc-connectivity.md)」および「[外部キーストアを作成する](create-xks-keystore.md)」を参照してください。
+ AWS KMS は、VPC エンドポイントサービスの許可されたプリンシパルではありません。VPC エンドポイントサービスの **[Allow principals]** (許可プリンシパル) リストには、`cks.kms.eu-west-3.amazonaws.com` のような `cks.kms.<region>.amazonaws.com` 値を含める必要があります。この値を追加する手順については、「AWS PrivateLink ガイド」の「[Manage permissions](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)」を参照してください。


|  | 
| --- |
| XksProxyVpcEndpointServiceInvalidConfigurationException | 

このエラーは、VPC エンドポイントサービスが次の要件のいずれかを満たしていない場合に発生します。
+ VPC には、それぞれが異なるアベイラビリティーゾーンに存在する 2 つ以上のプライベートサブネットが必要です。VPC へのサブネットの追加の詳細については、「Amazon VPC ユーザーガイド」の「[Create a subnet in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-subnets.html#create-subnets)」を参照してください。
+ [VPC エンドポイントのサービスタイプ](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html)には、ゲートウェイロードバランサーではなく、Network Load Balancer を使用する必要があります。
+ VPC エンドポイントサービスに承認は不要です (**承認が必要**は誤りです)。各接続リクエストの手動承認が必要な場合は、VPC エンドポイントサービスを使用して外部キーストアプロキシに接続 AWS KMS することはできません。詳細については、「AWS PrivateLink ガイド」の「[Accept or reject connection requests](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#accept-reject-connection-requests)」を参照してください。
+ VPC エンドポイントサービスには、パブリックドメインのサブドメインであるプライベート DNS 名が必要です。例えば、プライベート DNS 名が `https://myproxy-private.xks.example.com` の場合、`xks.example.com` または `example.com` ドメインにはパブリック DNS サーバーが必要です。VPC エンドポイントサービスのプライベート DNS 名を表示または変更するには、「AWS PrivateLink ガイド」の「[Manage DNS names for VPC endpoint services](https://docs.aws.amazon.com/vpc/latest/privatelink/manage-dns-names.html)」を参照してください。
+ プライベート DNS 名ドメインの**ドメイン検証ステータス**は、`verified` である必要があります プライベート DNS 名ドメインの検証ステータスを表示、更新するには、「[ステップ 5: プライベート DNS 名ドメインを検証する](vpc-connectivity.md#xks-private-dns)」を参照して下さい。必要なテキストレコードを追加した後、更新された検証ステータが表示されるまでに数分かかる場合があります。
**注記**  
プライベート DNS ドメインは、パブリックドメインのサブドメインである場合にのみ検証できます。サブドメインでない場合は、必要な TXT レコードを追加後も、プライベート DNS ドメインの検証ステータスは変わりません。
+  AWS KMS と外部キーストアプロキシ間のファイアウォールで、プロキシのポート 443 との間のトラフィックが許可されていることを確認します。IPv4 経由でポート 443 で AWS KMS 通信します。この値は設定できません。
+ VPC エンドポイントサービスのプライベート DNS 名は、外部キーストアの[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)値と一致する必要があります。VPC エンドポイントサービス接続を備えた外部キーストアの場合、プロキシ URI エンドポイントは `https://` で、その後に VPC エンドポイントサービスのプライベート DNS 名が続く必要があります。プロキシ URI エンドポイント値を表示するには、「[外部キーストアを表示する](view-xks-keystore.md)」を参照してください。プロキシ URI エンドポイント値を変更するには、「[外部キーストアプロパティを編集する](update-xks-keystore.md)」を参照してください。

## 外部キーストア接続エラー
<a name="fix-xks-connection"></a>

[外部キーストアを外部キーストアプロキシに接続するプロセス](about-xks-connecting.md)は、完了までに約 5 分かかります。すぐに失敗しない限り、`ConnectCustomKeyStore` オペレーションは HTTP 200 レスポンスと、プロパティを含まない JSON オブジェクトを返します。ただし、この初期レスポンスは接続に成功したことを示していません。外部キーストアが接続されているかどうかを判断するには、その[接続状態](xks-connect-disconnect.md#xks-connection-state)を参照してください。接続が失敗した場合、外部キーストアの接続状態は に変わり、失敗の原因を説明する[接続エラーコード](#xks-connection-error-codes)`FAILED` AWS KMS を返します。

**注記**  
カスタムキーストアの接続状態が `FAILED` の場合は、再接続を試みる前にカスタムキーストアを切断する必要があります。`FAILED` 接続ステータスでカスタムキーストアに接続することはできません。

外部キーストアの接続状態を表示するには:
+ [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) レスポンスで、`ConnectionState` 要素の値を表示します。
+  AWS KMS コンソールでは、**接続状態**が外部キーストアテーブルに表示されます。また、各外部キーストアの詳細ページの **[General configuration]** (一般設定) セクションに、**[Connection state]** (接続状態) が表示されます。

接続状態が `FAILED` の場合、接続エラーコードがエラーを説明します。

接続エラーコードを表示するには:
+ [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) レスポンスで、`ConnectionErrorCode` 要素の値を表示します。この要素は、`ConnectionState` が `FAILED` の場合にのみ、`DescribeCustomKeyStores` レスポンスに表示されます。
+  AWS KMS コンソールで接続エラーコードを表示するには、外部キーストアの詳細ページで **Failed **値にカーソルを合わせます。  
![\[カスタムキーストアの詳細ページの接続エラーコード\]](http://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/images/connection-error-code.png)

### 外部キーストアの接続エラーコード
<a name="xks-connection-error-codes"></a>

次の接続エラーコードは、外部キーストアに適用されます

`INTERNAL_ERROR`  
AWS KMS は内部エラーのためリクエストを完了できませんでした。リクエストを再試行します。`ConnectCustomKeyStore` リクエストの場合、カスタムキーストアの接続を切断してから接続を再実行します。

`INVALID_CREDENTIALS`  
指定された外部キーストアプロキシでは、`XksProxyAuthenticationCredential` 値の一方または両方が無効です。

`NETWORK_ERRORS`  
ネットワークエラーにより、 はカスタムキーストアをバッキングキーストアに接続 AWS KMS できません。

`XKS_PROXY_ACCESS_DENIED`  
AWS KMS リクエストは、外部キーストアプロキシへのアクセスを拒否されます。外部キーストアプロキシに承認ルールがある場合は、そのルールがユーザーに代わって、 AWS KMS とプロキシの通信を許可していることを検証します。

`XKS_PROXY_INVALID_CONFIGURATION`  
設定エラーにより、外部キーストアはプロキシに接続できません。`XksProxyUriPath` の値を検証します。

`XKS_PROXY_INVALID_RESPONSE`  
AWS KMS は、外部キーストアプロキシからのレスポンスを解釈できません。この接続エラーコードが繰り返し表示される場合は、外部キーストアプロキシベンダーに通知してください。

`XKS_PROXY_INVALID_TLS_CONFIGURATION`  
AWS KMS TLS 設定が無効であるため、 は外部キーストアプロキシに接続できません。外部キーストアプロキシが TLS 1.2 または 1.3 をサポートしていることを検証します。また、TLS 証明書の有効期限が切れていないこと、`XksProxyUriEndpoint` 値のホスト名と一致していること、[信頼できる認証機関](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/TrustedCertificateAuthorities)リストに含まれる信頼できる認証機関によって署名されていることを検証します。

`XKS_PROXY_NOT_REACHABLE`  
AWS KMS は外部キーストアプロキシと通信できません。`XksProxyUriEndpoint` と `XksProxyUriPath` が正しいことを検証します。外部キーストアプロキシのツールを使用して、プロキシがアクティブで、ネットワーク上で使用可能であることを検証します。また、外部キーマネージャーインスタンスが正しく動作していることを検証します。外部キーマネージャーインスタンスがすべて使用できないとプロキシが報告した場合、接続試行はこの接続エラーコードで失敗します。

`XKS_PROXY_TIMED_OUT`  
AWS KMS は外部キーストアプロキシに接続できますが、プロキシは割り当てられた時間 AWS KMS 内に に応答しません。この接続エラーコードが繰り返し表示される場合は、外部キーストアプロキシベンダーに通知してください。

`XKS_VPC_ENDPOINT_SERVICE_INVALID_CONFIGURATION`  
Amazon VPC エンドポイントサービス設定が、 AWS KMS 外部キーストアの要件に準拠していません。  
+ VPC エンドポイントサービスは、呼び出し元の AWS アカウントのインターフェイスエンドポイント用のエンドポイントサービスである必要があります。
+ Network Load Balancer (NLB) は、それぞれが異なるアベイラビリティーゾーンに存在する 2 つ以上のサブネットに接続されていること。
+ `Allow principals` リストには、 `cks.kms.<region>.amazonaws.com`などのリージョン AWS KMS のサービスプリンシパルが含まれている必要があります`cks.kms.us-east-1.amazonaws.com`。
+ 接続リクエストの[承認](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html)を要求しないこと。
+ プライベート DNS 名を付ける必要があります。`VPC_ENDPOINT_SERVICE` 接続の外部キーストアのプライベート DNS 名は、その AWS リージョン内で一意である必要があります。
+ プライベート DNS 名のドメインの[検証ステータス](https://docs.aws.amazon.com/vpc/latest/privatelink/verify-domains.html)は、`verified` である必要があります。
+ [TLS 証明書](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html)は、エンドポイントにアクセス可能なプライベート DNS ホスト名を指定します。

`XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND`  
AWS KMS は、外部キーストアプロキシとの通信に使用する VPC エンドポイントサービスを見つけることができません。`XksProxyVpcEndpointServiceName` が正しく、 AWS KMS サービスプリンシパルに、Amazon VPC エンドポイントサービスに対するサービスコンシューマー許可があることを検証します。

## レイテンシーとタイムアウトエラー
<a name="fix-xks-latency"></a>

**例外**: `CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (暗号化オペレーション)、`XksProxyUriUnreachableException` (管理オペレーション)

[**接続エラーコード**](#xks-connection-error-codes): `XKS_PROXY_NOT_REACHABLE`、`XKS_PROXY_TIMED_OUT`

 AWS KMS が 250 ミリ秒のタイムアウト期間内にプロキシに接続できない場合、 例外が返されます。 `CreateCustomKeyStore`と `UpdateCustomKeyStore`が返されます`XksProxyUriUnreachableException`。暗号化オペレーションは、問題を説明するエラーメッセージとともに標準 `KMSInvalidStateException` を返します。失敗`ConnectCustomKeyStore`した場合、 は問題を記述する[接続エラーコード](#fix-xks-connection) AWS KMS を返します。

タイムアウトエラーは一時的な問題のため、リクエストを再試行することで解決できる場合があります。問題が解決しない場合は、外部キーストアプロキシがアクティブでネットワークに接続されていること、そのプロキシ URI エンドポイント、プロキシ URI パス、 VPC エンドポイントのサービス名 (存在する場合) が外部キーストアで正しいことを検証します。また、外部キーマネージャーが外部キーストア AWS リージョン の に近いことを確認します。これらの値のいずれかを更新する必要がある場合は、「[外部キーストアプロパティを編集する](update-xks-keystore.md)」を参照して下さい。

レイテンシーパターンを追跡するには、 AWS KMS コンソールの [**[Monitoring]** (モニタリング) セクション](xks-monitoring.md)にある [`XksProxyLatency`](monitoring-cloudwatch.md#metric-xks-proxy-latency) CloudWatch メトリクスと (そのメトリクスに基づく) **[Average latency]** (平均レイテンシー) グラフを使用します。外部キーストアプロキシは、レイテンシーとタイムアウトを追跡するログやメトリクスも生成する場合があります。


|  | 
| --- |
| `XksProxyUriUnreachableException`AWS KMS は外部キーストアプロキシと通信できません。これは一時的なネットワークの問題である可能性があります。このエラーが繰り返し表示される場合は、外部キーストアプロキシがアクティブでネットワークに接続されていること、エンドポイント URI が外部キーストアで正しいことを検証します。 | 
+ 外部キーストアプロキシは、250 ミリ秒のタイムアウト期間内に AWS KMS プロキシ API リクエストに応答しませんでした。これは、一時的なネットワークの問題か、プロキシのオペレーションまたはパフォーマンスの問題である可能性があります。再試行しても問題が解決しない場合は、外部キーストアプロキシ管理者に通知してください。

多くの場合、レイテンシーやタイムアウトエラーは接続障害として表示されます。[ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) オペレーションが失敗すると、外部キーストア*の接続状態*が に変わり、エラーを説明する*接続エラーコード*`FAILED` AWS KMS が返されます。接続エラーコードのリストとエラー解決方法については、「[外部キーストアの接続エラーコード](#xks-connection-error-codes)」を参照してください。**[All custom key stores]** (すべてのカスタムキーストア) と **[External key stores]** (外部キーストア) の接続コードリストは、外部キーストアに適用されます。次の接続エラーは、レイテンシーとタイムアウトに関連しています。


|  | 
| --- |
| `XKS_PROXY_NOT_REACHABLE`-または-`CustomKeyStoreInvalidStateException`, `KMSInvalidStateException`, `XksProxyUriUnreachableException`AWS KMS は外部キーストアプロキシと通信できません。外部キーストアプロキシがアクティブでネットワークに接続されていること、外部キーストアの URI パスとエンドポイント URI または VPC サービス名が正しいことを検証します。 | 

このエラーは、次の原因によって発生する可能性があります。
+ 外部キーストアプロキシがアクティブでないか、ネットワークに接続されていない。
+ 外部キーストア設定の[プロキシ URI エンドポイント](create-xks-keystore.md#require-endpoint)、[プロキシ URI パス](create-xks-keystore.md#require-path)、または [VPC エンドポイントのサービス名](create-xks-keystore.md#require-vpc-service-name) (該当する場合) の値にエラーがある。外部キーストアの設定を表示するには、[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) オペレーションを使用するか[、コンソールで外部キーストアの詳細ページを表示します](view-xks-keystore.md)。 AWS KMS 
+  AWS KMS と外部キーストアプロキシとの間のネットワークパスに、ポートエラーなどのネットワーク設定エラーが発生する可能性があります。 はIPv4 経由でポート 443 の外部キーストアプロキシと AWS KMS 通信します。この値は設定できません。
+ ([GetHealthStatus](keystore-external.md#concept-proxy-apis) レスポンスで) 外部キーストアプロキシが、すべての外部キーマネージャーインスタンスが `UNAVAILABLE` であると報告すると、[ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) オペレーションは `XKS_PROXY_NOT_REACHABLE` の`ConnectionErrorCode` で失敗します。ヘルプについては、外部キーマネージャーのドキュメントを参照してください。
+ このエラーは、外部キーマネージャーと外部キーストア AWS リージョン を持つ との物理的な距離が長いことが原因で発生する可能性があります。 AWS リージョン と外部キーマネージャー間の ping レイテンシー (ネットワークラウンドトリップタイム (RTT)) は 35 ミリ秒以下にする必要があります。外部キーマネージャー AWS リージョン に近い に外部キーストアを作成するか、外部キーマネージャーを に近いデータセンターに移動する必要があります AWS リージョン。


|  | 
| --- |
| `XKS_PROXY_TIMED_OUT`-または-`CustomKeyStoreInvalidStateException`, `KMSInvalidStateException`, `XksProxyUriUnreachableException`外部キーストアプロキシが時間内に応答しなかったため、AWS KMS はリクエストを拒否しました。リクエストを再試行します。このエラーが繰り返し表示される場合は、外部キーストアプロキシ管理者に報告してください。 | 

このエラーは、次の原因によって発生する可能性があります。
+ このエラーは、外部キーマネージャーと外部キーストアプロキシ間の物理的な距離が長いために発生する可能性があります。可能な場合は、外部キーストアプロキシを外部キーマネージャーの近くに移動します。
+ タイムアウトエラーは、プロキシがリクエストのボリュームと頻度を処理するように設計されていない場合に発生する可能性があります AWS KMS。CloudWatch メトリクスが持続的な問題を示している場合は、外部キーストアプロキシ管理者に通知してください。
+ タイムアウトエラーは、外部キーマネージャーと外部キーストアの Amazon VPC 間の接続が正しく機能していない場合に発生する可能性があります。を使用している場合は AWS Direct Connect、VPC と外部キーマネージャーが効果的に通信できることを確認します。問題の解決方法については、「 Direct Connect ユーザーガイド」の[「トラブルシューティング AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Troubleshooting.html)」を参照してください。


|  | 
| --- |
| `XKS_PROXY_TIMED_OUT`-または-`CustomKeyStoreInvalidStateException`, `KMSInvalidStateException`, `XksProxyUriUnreachableException` 外部キーストアプロキシが割り当てられた時間内にリクエストに応答しません。リクエストを再試行します。このエラーが繰り返し表示される場合は、外部キーストアプロキシ管理者に報告してください。 | 
+ このエラーは、外部キーマネージャーと外部キーストアプロキシ間の物理的な距離が長いために発生する可能性があります。可能な場合は、外部キーストアプロキシを外部キーマネージャーの近くに移動します。

## 認証情報エラー
<a name="fix-xks-credentials"></a>

**例外**: `CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (暗号化オペレーション)、`XksProxyIncorrectAuthenticationCredentialException` (`CreateKey` 以外の管理オペレーション)

外部キーストアプロキシ AWS KMS で の認証情報を確立して維持します。次に AWS KMS 、外部キーストアを作成するときに認証情報値を指定します。認証情報を変更する場合は、外部キーストアプロキシで変更します。次に、外部キーストアの[認証情報を更新します](update-xks-keystore.md#xks-edit-name)。プロキシが認証情報をローテーションする場合は、外部キーストアの[認証情報を更新する](update-xks-keystore.md#xks-edit-name)必要があります。

外部キーストアプロキシが、外部キーストアの[プロキシ認証情報](keystore-external.md#concept-xks-credential)で署名されたリクエストを認証しない場合、その影響はリクエストによって異なります。
+ `CreateCustomKeyStore` および `UpdateCustomKeyStore` は `XksProxyIncorrectAuthenticationCredentialException` で失敗します。
+ `ConnectCustomKeyStore` は成功するが接続は失敗します。接続状態は `FAILED` で、接続エラーコードは `INVALID_CREDENTIALS` です。詳細については、「[外部キーストア接続エラー](#fix-xks-connection)」を参照してください。
+ 外部キーストアのすべての外部設定エラーと接続状態エラーに対して、暗号化オペレーションは `KMSInvalidStateException` を返します。添付のエラーメッセージは問題を説明しています。


|  | 
| --- |
| 外部キーストアプロキシは AWS KMSを認証できなかったため、リクエストを拒否しました。外部キーストアの認証情報を検証し、必要に応じて更新します。 | 

このエラーは、次の原因によって発生する可能性があります。
+ 外部キーストアのアクセスキー ID またはシークレットアクセスキーが、外部キーストアプロキシに設定された値と一致しない。

  このエラーを修正するには、外部キーストアの[プロキシ認証情報を更新します](update-xks-keystore.md#xks-edit-name)。この変更は、外部キーストアを切断せずに行うことができます。
+  AWS KMS と外部キーストアプロキシ間のリバースプロキシは、SigV4 署名を無効にする方法で HTTP ヘッダーを操作する可能性があります。このエラーを修正するには、プロキシ管理者に通知してください。

## キーステータスエラー
<a name="fix-unavailable-xks-keys"></a>

**例外**: `KMSInvalidStateException`

`KMSInvalidStateException` は、カスタムキーストアの KMS キーに、2 つの異なる目的で使用されます。
+ `CancelKeyDeletion` などの管理オペレーションが失敗してこの例外が返された場合は、KMS キーの[キーステータス](key-state.md)にオペレーションとの互換性がないことを示します。
+ カスタムキーストアの KMS キーに対する[暗号化オペレーション](kms-cryptography.md#cryptographic-operations)が `KMSInvalidStateException` で失敗した場合、KMS キーのキーステータスに問題がある可能性があります。ただし、 AWS KMS 暗号化オペレーション`KMSInvalidStateException`は、外部キーストアのすべての外部設定エラーと接続状態エラーに対して を返します。問題を特定するには、例外に付随するエラーメッセージを使用します。

 AWS KMS API オペレーションに必要なキーの状態を確認するには、「」を参照してください[キーの AWS KMS キーステータス](key-state.md)。KMS キーのキーステータスを確認するには、[**Customer managed keys**] (カスタマーマネージドキー) ページで、KMS キーの [**Status**] (ステータス) フィールドを表示します。または、 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) オペレーションを使用して、レスポンスの `KeyState` 要素を表示します。詳細については、「[キーの特定と表示](viewing-keys.md)」を参照してください。

**注記**  
外部キーストアの KMS キーのキーステータスは、関連付けられている[外部キー](keystore-external.md#concept-external-key)のステータスを示すものではありません。外部キーステータスに関する情報は、外部キーマネージャーと外部キーストアプロキシツールを参照してください。  
`CustomKeyStoreInvalidStateException` は、KMS キーの[キーステータス](key-state.md)ではなく、外部キーストアの[接続状態](xks-connect-disconnect.md#xks-connection-state)を参照します。

KMS キーのキーステータスが `Unavailable` または `PendingDeletion` の場合、カスタムストアの KMS キーの暗号化オペレーションは失敗する可能性があります。(無効化されたキーは `DisabledException` を返します)。
+ KMS キーは、 AWS KMS コンソールで意図的に KMS キーを無効にするか、[DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html) オペレーションを使用する場合にのみキー`Disabled`状態になります。KMS キーが無効になっている間、キーを表示および管理することはできますが、暗号化オペレーションで使用することはできません。この問題を解決するには、キーを有効にします。詳細については、「[キーの有効化と無効化](enabling-keys.md)」を参照してください。
+ KMS キーは、外部キーストアが外部キーストアプロキシから切断されたときに `Unavailable` キーステータスになります。使用できない KMS キーを修正するには、[外部キーストアを再接続します](xks-connect-disconnect.md)。外部キーストアを再接続すると、外部キーストア内の KMS キーのキーステータスは、`Enabled` や `Disabled` などの以前のステータスに自動的に復元されます。

  KMS キーは、削除予定の待機期間中、`PendingDeletion` キーステータスになります。削除保留中の KMS キーのキーステータスエラーは、そのキーが暗号化に使用されているか、復号に必要であるため、キーを削除するべきではないことを示します。KMS キーを再度有効にするには、スケジュールされた削除をキャンセルしてから、[キーを有効にします](enabling-keys.md)。詳細については、「[キー削除をスケジュールする](deleting-keys-scheduling-key-deletion.md)」を参照してください。

## 復号エラー
<a name="fix-xks-decrypt"></a>

**例外**: `KMSInvalidStateException`

外部キーストアの KMS キーを使用した[復号](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)オペレーションが失敗すると、 は、外部キーストアのすべての外部設定エラーと接続状態エラーに暗号化オペレーション`KMSInvalidStateException`が使用する標準 AWS KMS を返します。問題を示すエラーメッセージ。

外部キーマネージャーは、[二重暗号化](keystore-external.md#concept-double-encryption)を使用して暗号化された暗号文を復号するために、最初に外部キーを使用して暗号文の外側のレイヤーを復号します。次に AWS KMS 、KMS AWS KMS キーのキーマテリアルを使用して暗号文の内部レイヤーを復号します。無効、または破損した暗号文は、外部キーマネージャーまたは AWS KMSによって拒否される可能性があります。

復号に失敗すると、次のエラーメッセージが `KMSInvalidStateException` に付随します。このエラーメッセージは、リクエスト内の暗号文またはオプションの暗号化コンテキストに問題があることを示します。


|  | 
| --- |
| 指定された暗号文または追加の認証データが破損している、欠損している、または無効であるため、外部キーストアプロキシはリクエストを拒否しました。 | 
+ 外部キーストアプロキシまたは外部キーマネージャーが暗号文またはその暗号化コンテキストが無効であると報告する場合、通常、送信された`Decrypt`リクエストの暗号文または暗号化コンテキストに問題があることを示します AWS KMS。`Decrypt` オペレーションの場合、 は`Decrypt`リクエストで受信したのと同じ暗号文と暗号化コンテキストをプロキシ AWS KMS に送信します。

  このエラーは、ビットの反転など、転送中のネットワークの問題が原因である可能性があります。`Decrypt` リクエストを再試行します。問題が解決しない場合は、暗号文が変更されていないこと、または破損していないことを検証します。また、 `Decrypt`リクエストの暗号化コンテキストが、データを暗号化したリクエストの暗号化コンテキスト AWS KMS と一致することを確認します。


|  | 
| --- |
| 外部キーストアプロキシが復号のために送信した暗号文、または暗号化コンテキストが、破損しているか、欠損しているか、無効になっています。 | 
+ がプロキシから受信した暗号文 AWS KMS を拒否すると、外部キーマネージャーまたはプロキシが無効な暗号文または破損した暗号文を返したことを示します AWS KMS。

  このエラーは、ビットの反転など、転送中のネットワークの問題が原因である可能性があります。`Decrypt` リクエストを再試行します。問題が解決しない場合は、外部キーマネージャーが正常に動作していること、および外部キーストアプロキシが外部キーマネージャーから受信した暗号化テキストを返す前に変更しないことを確認します AWS KMS。

## 外部キーエラー
<a name="fix-external-key"></a>

[外部キー](keystore-external.md#concept-external-key)は、KMS キーの外部キーマテリアルとして機能する外部キーマネージャーの暗号化キーです。 AWS KMS は外部キーには直接アクセスできません。外部キーマネージャーに、(外部キーストアプロキシ経由で) 外部キーを使用してデータを暗号化するか、暗号文を復号するように要求する必要があります。

外部キーストアで KMS キーを作成する際に、外部キーマネージャーで外部キーの ID を指定します。KMS キー作成後に外部キー ID を変更することはできません。KMS キーに関する問題を防ぐために、`CreateKey` オペレーションは外部キーストアプロキシに、外部キーの ID と設定の検証を要求します。外部キーが KMS キーでの使用[要件を満たしていない](create-xks-keys.md#xks-key-requirements)場合、`CreateKey` オペレーションは失敗し、問題を特定する例外とエラーメッセージが表示されます。

ただし、KMS キー作成後に問題が発生する可能性があります。外部キーの問題によって暗号化オペレーションが失敗すると、オペレーションは失敗し、問題を示すエラーメッセージとともに `KMSInvalidStateException` が返されます。

### 外部キーの CreateKey エラー
<a name="fix-external-key-create"></a>

**例外**: `XksKeyAlreadyInUseException`、`XksKeyNotFoundException`、`XksKeyInvalidConfigurationException`

[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションは、**[External key ID]** (外部キー ID) (コンソール) または `XksKeyId` (API) パラメータで指定した外部キーの ID とプロパティを検証しようとします。このプラクティスは、KMS キーで外部キーを使用する前にエラーを早期に検出することを目的としています。

**外部キー使用中** 

外部キーストアの各 KMS キーは、異なる外部キーを使用する必要があります。`CreateKey` は、KMS キーの外部キー ID (XksKeyId) が外部キーストアで一意ではないことを認識すると、`XksKeyAlreadyInUseException` により失敗します。

同じ外部キーに複数の ID を使用する場合、`CreateKey` は重複しているものを認識しません。ただし、同じ外部キーを持つ KMS キーは、 AWS KMS キーマテリアルとメタデータが異なるため、相互運用できません。

**外部キーを検出できない** 

外部キーストアプロキシが、KMS キーの外部キー ID (XksKeyId) を使用して外部キーを検出できないことを報告すると、`CreateKey` オペレーションは失敗し、次のエラーメッセージを含む `XksKeyNotFoundException` が返されます。


|  | 
| --- |
| 外部キーを検出できなかったため、外部キーストアプロキシはリクエストを拒否しました。 | 

このエラーは、次の原因によって発生する可能性があります。
+ KMS キーの外部キー (`XksKeyId`) ID が無効である可能性があります。外部キープロキシが外部キーを識別するために使用する ID を検出するには、外部キーストアプロキシまたは外部キーマネージャーのドキュメントを参照してください。
+ 外部キーが外部キーマネージャーから削除された可能性があります。調査するには、外部キーマネージャーツールを使用します。外部キーが完全に削除された場合は、KMS キーで別の外部キーを使用します。外部キーのリストまたは要件については、「[外部キーストアの KMS キーの要件](create-xks-keys.md#xks-key-requirements)」を参照してください。

**外部キー要件が満たされていない**

外部キーストアプロキシが、外部キーが KMS キーでの使用[要件を満たしていない](create-xks-keys.md#xks-key-requirements)ことを報告すると、`CreateKey` オペレーションは失敗し、次のいずれかのエラーメッセージを含む `XksKeyInvalidConfigurationException` が返されます。


|  | 
| --- |
| 外部キーのキースペックは AES\$1256 である必要があります。指定された外部キーのキースペックは <key-spec> です。 | 
+ 外部キーは、AES\$1256 のキースペックをもつ 256 ビット対称暗号化キーである必要があります。指定された外部キーが別のタイプである場合は、この要件を満たす外部キー ID を指定します。


|  | 
| --- |
| 外部キーのステータスは ENABLED である必要があります。指定された外部キーのステータスは <status> です。 | 
+ 外部キーは、外部キーマネージャーで有効にする必要があります。指定した外部キーが有効になっていない場合は、外部キーマネージャーツールを使用して有効にするか、有効な外部キーを指定します。


|  | 
| --- |
| 外部キーのキー用途には、[ENCRYPT] と [DECRYPT] を含める必要があります。指定された外部キーのキー用途は <key-usage> です。 | 
+ 外部キーは、外部キーマネージャーで暗号化と復号を行うように設定する必要があります。指定された外部キーにこれらのオペレーションが含まれていない場合は、外部キーマネージャーツールを使用してオペレーションを変更するか、別の外部キーを指定します。

### 外部キーの暗号化オペレーションエラー
<a name="fix-external-key-crypto"></a>

**例外**: `KMSInvalidStateException`

外部キーストアプロキシが KMS キーに関連付けられた外部キーを検出できない場合、または外部キーが KMS キーでの使用[要件を満たしていない](create-xks-keys.md#xks-key-requirements)場合、暗号化オペレーションは失敗します。

暗号化オペレーション中に検出された外部キーの問題は、KMS キー作成前に検出された外部キーの問題よりも解決が困難です。KMS キー作成後に外部キー ID を変更することはできません。KMS キーでまだデータが暗号化されていない場合は、KMS キーを削除し、別の外部キー ID を使用して新しい KMS キーを作成できます。ただし、KMS キーで生成された暗号文は、キーのメタデータとキー AWS KMS マテリアルが異なるため、外部キーが同じであっても、他の KMS キーで復号することはできません。代わりに、外部キーマネージャーツールを使用して、可能な限り外部キーの問題を解決してください。

外部キーストアプロキシが外部キーに関する問題を報告すると、暗号化オペレーションは、問題を特定するエラーメッセージとともに `KMSInvalidStateException` を返します。

**外部キーを検出できない**

外部キーストアプロキシが、KMS キーの外部キー ID (XksKeyId) を使用して外部キーを検出できないことを報告すると、暗号化オペレーションは次のエラーメッセージを含む `KMSInvalidStateException` を返します。


|  | 
| --- |
| 外部キーを検出できなかったため、外部キーストアプロキシはリクエストを拒否しました。 | 

このエラーは、次の原因によって発生する可能性があります。
+ KMS キーの外部キー (`XksKeyId`) ID が無効になりました。

  KMS キーに関連付けられている外部キー ID を検出するには、[KMS キーの詳細を参照してください](identify-key-types.md#view-xks-key)。外部キープロキシが外部キーを識別するために使用する ID を検出するには、外部キーストアプロキシまたは外部キーマネージャーのドキュメントを参照してください。

  AWS KMS は、外部キーストアに KMS キーを作成するときに、外部キー ID を検証します。ただし、特に外部キー ID 値がエイリアスまたは可変名の場合は、ID が無効になる可能性があります。既存の KMS キーに関連付けられている外部キー ID を変更することはできません。KMS キーで暗号化された暗号文を復号するには、外部キーを既存の外部キー ID に再度、関連付ける必要があります。

  KMS キーを使用してデータを暗号化していない場合は、有効な外部キー ID を使用して新しい KMS キーを作成できます。ただし、KMS キーを使用して暗号文を生成した場合は、同じ外部キーを使用しても、他の KMS キーを使用して暗号文を復号することはできません。
+ 外部キーが外部キーマネージャーから削除された可能性があります。調査するには、外部キーマネージャーツールを使用します。可能な場合は、外部キーマネージャーのコピーまたはバックアップから、[キーマテリアルの復元](fix-keystore.md#fix-keystore-recover-backing-key)を試みてください。外部キーが完全に削除された場合、関連する KMS キーで暗号化された暗号文は回復できません。

**外部キー設定エラー**

外部キーストアプロキシが、外部キーが KMS キーでの使用[要件を満たしていない](create-xks-keys.md#xks-key-requirements)ことを報告すると、暗号化オペレーションは、次のいずれかのエラーメッセージを含む `KMSInvalidStateException` を返します。


|  | 
| --- |
| 外部キーがリクエストされたオペレーションをサポートしていないため、外部キーストアプロキシは要求を拒否しました。 | 
+ 外部キーは、暗号化と復号の両方をサポートしている必要があります。キーの用途に暗号化と復号が含まれていない場合は、外部キーマネージャーツールを使用して、キーの用途を変更します。


|  | 
| --- |
| 外部キーが外部キーマネージャーで有効になっていないため、外部キーストアプロキシはリクエストを拒否しました。 | 
+ 外部キーは、外部キーマネージャーで使用するために、有効にして使用可能にする必要があります。外部キーのステータスが [`Enabled`] でない場合は、外部キーマネージャーツールを使用して有効にします。

## プロキシの問題
<a name="fix-xks-proxy"></a>

**例外:** 

 `CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (暗号化オペレーション)、`UnsupportedOperationException`、`XksProxyUriUnreachableException`、`XksProxyInvalidResponseException` (`CreateKey` 以外の管理オペレーション)

外部キーストアプロキシは、 AWS KMS と外部キーマネージャー間のすべての通信を仲介します。一般的な AWS KMS リクエストを、外部キーマネージャーが理解できる形式に変換します。外部キーストアプロキシが[AWS KMS 外部キーストアプロキシ API 仕様](https://github.com/aws/aws-kms-xksproxy-api-spec/)に準拠していない場合、または が正しく動作していない場合、または と通信できない場合 AWS KMS、外部キーストアで KMS キーを作成または使用することはできません。

外部キーストアプロキシは外部キーストアアーキテクチャで重要な役割を果たすため、多くのエラーに外部キーストアプロキシが記載されますが、これらの問題は、外部キーマネージャーまたは外部キーに起因する可能性があります。

このセクションの問題は、外部キーストアプロキシの設計または運用に関する問題と関連しています。これらの問題を解決するには、プロキシソフトウェアを変更する必要がある場合があります。プロキシ管理者に相談してください。 AWS KMS は、プロキシの問題の診断に役立つように、外部キーストアプロキシが [AWS KMS 外部キーストアプロキシ API 仕様](https://github.com/aws/aws-kms-xksproxy-api-spec/)に準拠していることを検証する、オープンソースのテストクライアントである [XKS プロキシテキストクライアント](https://github.com/aws-samples/aws-kms-xksproxy-test-client)を提供しています。


|  | 
| --- |
| `CustomKeyStoreInvalidStateException`、`KMSInvalidStateException`、または `XksProxyUriUnreachableException`外部キーストアプロキシが異常な状態です。このメッセージが繰り返し表示される場合は、外部キーストアプロキシ管理者に通知してください。 | 
+ このエラーは、外部キーストアプロキシの運用上の問題またはソフトウェアエラーを示している可能性があります。各エラーを生成した AWS KMS API オペレーションの CloudTrail ログエントリを見つけることができます。このエラーは、オペレーションを再試行することで解決する場合があります。ただし、それでも解決しない場合は、外部キーストアプロキシ管理者に通知してください。
+ 外部キーストアプロキシが、([GetHealthStatus](keystore-external.md#concept-proxy-apis) 応答で) すべての外部キーマネージャーインスタンスが `UNAVAILABLE` であると報告した場合、外部キーストアを作成または更新しようとすると、この例外が発生して失敗します。このエラーが解決されない場合は、外部キーマネージャーのドキュメントを参照してください。


|  | 
| --- |
| `CustomKeyStoreInvalidStateException`、`KMSInvalidStateException`、または `XksProxyInvalidResponseException`AWS KMS は、外部キーストアプロキシからのレスポンスを解釈できません。このエラーが繰り返し表示される場合は、外部キーストアプロキシ管理者に相談してください。 | 
+ AWS KMS オペレーションは、プロキシが解析または解釈 AWS KMS できない未定義のレスポンスを返すと、この例外を生成します。このエラーは、一時的な外部の問題や散発的なネットワークエラーが原因で発生することがあります。ただし、問題が解決しない場合は、外部キーストアプロキシが、[AWS KMS 外部キーストアプロキシ API 仕様](https://github.com/aws/aws-kms-xksproxy-api-spec/)に準拠していない可能性があります。外部キーストア管理者またはベンダーに通知してください。


|  | 
| --- |
|  `CustomKeyStoreInvalidStateException`、`KMSInvalidStateException`、または `UnsupportedOperationException` リクエストされた暗号化オペレーションをサポートしていないため、外部キーストアプロキシはリクエストを拒否しました。 | 
+ 外部キーストアプロキシは、[AWS KMS 外部キーストアプロキシ API 仕様](https://github.com/aws/aws-kms-xksproxy-api-spec/)で定義されているすべての[プロキシ API](keystore-external.md#concept-proxy-apis) をサポートしている必要があります。このエラーは、プロキシがリクエストに関連するオペレーションをサポートしていないことを示します。外部キーストア管理者またはベンダーに通知してください。

## プロキシの承認に関する問題
<a name="fix-xks-authorization"></a>

**例外**: `CustomKeyStoreInvalidStateException`、`KMSInvalidStateException`

外部キーストアプロキシの中には、外部キーを使用するための認可要件を実装しているものがあります。外部キーストアプロキシーは、特定のユーザーが任意の条件下で任意のオペレーションをリクエストすることを許可する承認スキームを設計および実装することを許可されていますが、必須ではありません。例えば、プロキシでは、ユーザーに任意の外部キーによる暗号化を許可しても、その外部キーによる復号は許可しない場合があります。詳細については、「[外部キーストアプロキシ認可 (オプション)](authorize-xks-key-store.md#xks-proxy-authorization)」を参照してください。

プロキシ認可は、プロキシへのリクエストに AWS KMS を含むメタデータに基づいています。`awsSourceVpc` および `awsSourceVpce` フィールドは、リクエストが VPC エンドポイントからのものである場合と、呼び出し側が KMS キーと同じアカウントにある場合にのみ、メタデータに含まれます。

```
"requestMetadata": {
    "awsPrincipalArn": string,
    "awsSourceVpc": string, // optional
    "awsSourceVpce": string, // optional
    "kmsKeyArn": string,
    "kmsOperation": string,
    "kmsRequestId": string,
    "kmsViaService": string // optional
}
```

認可の失敗によりプロキシがリクエストを拒否すると、関連する AWS KMS オペレーションは失敗します。 は `CreateKey`を返します`CustomKeyStoreInvalidStateException`。 AWS KMS 暗号化オペレーションは を返します`KMSInvalidStateException`。どちらも以下のエラーメッセージを使用します。


|  | 
| --- |
| 外部キーストアプロキシはオペレーションへのアクセスを拒否しました。ユーザーと外部キーの両方がこのオペレーションを承認していることを検証し、リクエストを再試行します。 | 
+ エラーを解決するには、外部キーマネージャーまたは外部キーストアプロキシツールを使用して、承認が失敗した理由を特定します。次に、未承認リクエストの原因となった手順を更新するか、外部キーストアプロキシツールを使用して、承認ポリシーを更新します。 AWS KMSではこのエラーを解決できません。