カスタムキーストアの作成 - AWS Key Management Service

カスタムキーストアの作成

アカウントに 1 つまたは複数のカスタムキーストアを作成できます。各カスタムキーストアは、同じ AWS リージョン で 1 つの AWS CloudHSM クラスターに関連付けられます。カスタムキーストアを作成する前に、前提条件を構成する必要があります。次に、カスタムキーストアを使用する前に、そのキーストアを AWS CloudHSM クラスターに接続する必要があります。

注記

既存の接続解除されたカスタムキーストアと同じプロパティ値のすべてを使用してカスタムキーストアを作成しようとすると、AWS KMS は新しいカスタムキーストアを作成せず、例外のスロー、またはエラーの表示を行いません。AWS KMS はその代わりに、この重複は再試行の結果である可能性が高いと認識し、既存のカスタムキーストアの ID を返します。

ヒント

カスタムキーストアを直ちに接続する必要はありません。使用する準備ができるまで切断された状態にしておくことができます。ただし、正しく設定されていることを確認するために、接続して、接続ステータスを表示してから、切断するとよいかも知れません。

前提条件を構成する

各 AWS KMS カスタムキーストアは AWS CloudHSM クラスターにサポートされています。カスタムキーストアを作成するには、別のキーストアに関連付けられていない、アクティブな AWS CloudHSM クラスターを指定する必要があります。AWS KMS がユーザーの代わりにキーを作成して管理できる、クラスターの HSM に専用 Crypto User (CU) を作成する必要もあります。

カスタムキーストアを作成する前に、次の手順を実行します。

AWS CloudHSM クラスターを選択する

すべてのカスタムキーストアは、厳密に 1 個の AWS CloudHSM クラスターに関連付けられています。カスタムキーストアで AWS KMS keys を作成するとき、AWS KMS は AWS KMS で ID や Amazon リソースネーム (ARN) などの KMS キーメタデータを作成します。その後で、関連付けられたクラスターの HSM でキーマテリアルを作成します。新しい AWS CloudHSM クラスターを作成するか、既存のものを使用できます。AWS KMS ではクラスターへの排他的アクセスが要求されません。

選択した AWS CloudHSM クラスターは、完全にカスタムキーストアに関連付けられます。カスタムキーストアを作成した後、関連付け済みのクラスターのクラスター ID を変更することができますが、指定したクラスターは元のクラスターとバックアップ履歴を共有する必要があります。無関係のクラスターを使用するには、新しいカスタムキーストアを作成する必要があります。

選択した AWS CloudHSM クラスターには次の特性が必要です。

  • クラスターがアクティブである必要があります

    クラスターを作成して初期化し、プラットフォームに AWS CloudHSM クライアントソフトウェアをインストールして、クラスターをアクティブ化する必要もあります。詳細な手順については、「AWS CloudHSM ユーザーガイド」の「開始方法」のセクションを参照してください。

  • クラスターは、AWS KMS カスタムキーストアと同じアカウントおよびリージョンに存在する必要があります。あるリージョンのカスタムキーストアを別のリージョンのクラスターに関連付けることはできません。マルチリージョンの主要なインフラストラクチャを作成するには、各リージョンにキーストアとクラスターを作成する必要があります。

  • クラスターを同じアカウントおよびリージョン内の別のカスタムキーストアに関連付けることはできません。アカウントおよびリージョン内のそれぞれのカスタムキーストアは、異なる AWS CloudHSM クラスターに関連付けられている必要があります。カスタムキーストアに関連付け済みのクラスターまたは関連付け済みのクラスターとバックアップ履歴を共有するクラスターを指定することはできません。バックアップ履歴を共有するクラスターには同じクラスター証明書があります。クラスターのクラスター証明書を表示するには、AWS CloudHSM コンソールまたは DescribeClusters オペレーションを使用します。

    AWS CloudHSM クラスターを別のリージョンにバックアップする場合、そのクラスターは別のクラスターと見なされ、そのリージョン内のカスタムキーストアにバックアップを関連付けることができます。ただし、2 つのカスタムキーストアの KMS キーは、同じバッキングキーを持っていても、相互運用できません。AWS KMS は、メタデータを暗号文にバインドし、暗号化した KMS キーによってのみ復号できるようにします。

  • クラスターは、リージョンの 2 つ以上のアベイラビリティーゾーンプライベートサブネットを使用して設定する必要があります。AWS CloudHSM はすべてのアベイラビリティーゾーンでサポートされていないため、リージョン内のすべてのアベイラビリティーゾーンでプライベートサブネットを作成することをお勧めします。既存のクラスターのサブネットを再構成することはできませんが、クラスター構成の異なるサブネットを持つバックアップからクラスターを作成することはできます。

    重要

    カスタムキーストアを作成した後は、AWS CloudHSM クラスター用に設定されたプライベートサブネットを削除しないでください。AWS KMS がクラスター構成内ですべてのサブネットを見つけることができない場合、カスタムキーストアへの接続 を試みると、SUBNET_NOT_FOUND 接続エラー状態で失敗します。詳細については、「接続障害の修復方法」を参照してください。

  • クラスターのプライベートサブネットはそれぞれ、カスタムキーストアへの接続するための使用可能な IP アドレスが 1 つ以上必要 (2 つが望ましい) です。クラスターに関連付けられているプライベートサブネットの IP アドレスが不足している場合、INSUFFICIENT_FREE_ADDRESSES_IN_SUBNET 接続エラーコードを表示して接続は失敗します。既存のサブネットには IP アドレスを追加できないため、アドレス領域を解放できない場合は、別のプライベートサブネットを持つバックアップからクラスターを作成する必要があります。

  • クラスターのセキュリティグループ (cloudhsm-cluster-<cluster-id>-sg) には、ポート 2223~2225 で TCP トラフィックを許可するインバウンドルールとアウトバウンドルールを含める必要があります。インバウンドルールの Source とアウトバウンドルールの Destination は、セキュリティグループ ID と一致している必要があります。これらのルールは、クラスターの作成時にデフォルトで設定されます。変更または削除しないでください。

  • クラスターは、異なるアベイラビリティーゾーンの少なくとも 2 つのアクティブな HSM を含む必要があります。HSM の数を確認するには、AWS CloudHSM コンソールか DescribeClusters オペレーションを使用します。必要に応じて、HSM を追加できます。

信頼アンカー証明書を見つける

カスタムキーストアを作成する場合、AWS CloudHSM クラスターの信頼アンカー証明書を AWS KMS にアップロードする必要があります。AWS KMS は、カスタムキーストアをクラスターに接続するために信頼アンカー証明書が必要です。

すべてのアクティブな AWS CloudHSM クラスターには信頼アンカー証明書があります。クラスターを初期化する際、この証明書を生成し、customerCA.crt ファイルに保存して、クラスターに接続するホストにコピーしてください。

AWS KMS 用の kmsuser Crypto User を作成する

カスタムキーストアを管理するために、AWS KMS は選択したクラスターで kmsuser Crypto User (CU) アカウントにログインします。カスタムキーストアを作成する前に kmsuser CU を作成する必要があります。カスタムキーストアを作成するとき、AWS KMS に kmsuser のパスワードを指定します。AWS KMS は、カスタムキーストアを関連付け済みの AWS CloudHSM クラスターに接続するたびに kmsuser パスワードをローテーションします。

重要

kmsuser CU を作成するとき、2FA オプションを指定しないでください。指定すると、AWS KMS はログインできず、カスタムキーストアはこの AWS CloudHSM クラスターに接続できません。2FA を指定すると、元に戻すことはできません。代わりに、CU を削除して再作成する必要があります。

kmsuser CU を作成するには、次の手順に従います。

  1. AWS CloudHSM ユーザーガイドPrepare to run cloudhsm_mgmt_util のセクションの説明に従って、cloudhsm_mgmt_util をスタートします。

  2. cloudhsm_mgmt_util で createUser コマンドを使用して、kmsuser という名前の CU を作成します。パスワードは 7〜32 の英数字で構成する必要があります。大文字と小文字が区別され、特殊文字を含めることはできません。

    たとえば、次のコマンド例では、パスワードが kmsPswdkmsuser CU を作成します。

    aws-cloudhsm> createUser CU kmsuser kmsPswd

カスタムキーストアを作成する (コンソール)

AWS Management Console でカスタムキーストアを作成する際、ワークフローの一部として前提条件を追加および作成できます。ただし、プロセスは事前に構成しておくとより迅速になります。

  1. AWS Management Console にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

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

  3. ナビゲーションペインで、[Custom key stores] (カスタムキーストア) を選択します。

  4. [Create key store] (キーストアの作成) を選択します。

  5. カスタムキーストアのわかりやすい名前を入力します。名前はアカウント内で一意である必要があります。

  6. カスタムキーストアに AWS CloudHSM クラスターを選択します。または、新しい AWS CloudHSM クラスターを作成するには、AWS CloudHSM クラスターの作成リンクを選択します。

    クラスターは、カスタムキーストアとの関連付けの要件を満たす必要があります。メニューに、カスタムキーストアにまだ関連付けられていないアカウントおよびリージョンのカスタムキーストアが表示されます。

  7. [Upload file] (ファイルのアップロード) を選択し、選択した AWS CloudHSM クラスターの信頼アンカー証明書をアップロードします。これは、クラスターを初期化する際に作成した customerCA.crt ファイルです。

  8. 選択したクラスターで作成した kmsuser Crypto User (CU) のパスワードを入力します。

  9. [Create] (作成) を選択します。

手順が正常に完了すると、新しいカスタムキーストアがアカウントとリージョンのカスタムキーストアのリストに表示されます。正常に完了しなかった場合は、問題を説明し、修正方法を示すエラーメッセージが表示されます。さらにヘルプが必要な場合は、「カスタムキーストアのトラブルシューティング」を参照してください。

既存の接続解除されたカスタムキーストアと同じプロパティ値のすべてを使用してカスタムキーストアを作成しようとすると、AWS KMS は新しいカスタムキーストアを作成せず、例外のスロー、またはエラーの表示を行いません。AWS KMS はその代わりに、この重複は再試行の結果である可能性が高いと認識し、既存のカスタムキーストアの ID を返します。

次の手順: 新しいカスタムキーストアが自動的に接続されません。カスタムキーストアで AWS KMS keys を作成する前に、カスタムキーストアを、関連付けられた AWS CloudHSM クラスターに接続する必要があります。

カスタムキーストアを作成する (API)

CreateCustomKeyStore オペレーションは、アカウントとリージョンの AWS CloudHSM クラスターに関連付けられる新しいカスタムキーストアを作成します。これらの例では AWS Command Line Interface (AWS CLI) を使用しますが、サポートされている任意のプログラミング言語を使用できます。

CreateCustomKeyStore オペレーションでは、次のパラメータ値が必要です。

  • CustomKeystorename — アカウント内で一意のカスタムキーストアのフレンドリ名。

  • CloudHsmClusterID — カスタムキーストアとの関連付けの要件を満たす クラスターのクラスター ID。

  • KeyStorePassword — 指定したクラスター内の kmsuser CU アカウントのパスワード。

  • TrustAnchorCertificate — クラスターを初期化した際に作成した customerCA.crt ファイルの内容。

次の例では、架空のクラスター ID を使用します。コマンドを実行する前に、有効なクラスター ID と置き換えます。

$ aws kms create-custom-key-store --custom-key-store-name ExampleKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate <certificate-goes-here>

AWS CLI を使用している場合、その内容ではなく、信頼アンカー証明書ファイルを指定できます。次の例では、customerCA.crt ファイルはルートディレクトリにあります。

$ aws kms create-custom-key-store --custom-key-store-name ExampleKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate file://customerCA.crt

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

{ "CustomKeyStoreId": cks-1234567890abcdef0 }

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

既存の接続解除されたカスタムキーストアと同じプロパティ値のすべてを使用してカスタムキーストアを作成しようとすると、AWS KMS は新しいカスタムキーストアを作成せず、例外のスロー、またはエラーの表示を行いません。AWS KMS はその代わりに、この重複は再試行の結果である可能性が高いと認識し、既存のカスタムキーストアの ID を返します。

次に、カスタムキーストアを使用するには、カスタムキーストアを AWS CloudHSM クラスターに接続します