AWS CloudHSM キーストアでの KMS キーの作成 - AWS Key Management Service

AWS CloudHSM キーストアでの KMS キーの作成

AWS CloudHSM キーストアを作成すると、キーストアで AWS KMS keys を作成できます。これらは、AWS KMS が生成するキーマテリアルを持つ対称暗号化 KMS キーである必要があります。カスタムキーストアで非対称 KMS キーHMAC KMS キー、またはインポートされたキーマテリアルを持つ KMS キーを作成することはできません。カスタムキーストア内の対称暗号化 KMS キーを使用して、非対称データキーペアを生成することもできません。

AWS CloudHSM キーストアで KMS キーを作成するには、AWS CloudHSM キーストアが、関連付けられた AWS CloudHSM クラスターに接続され、このクラスターに、アベイラビリティーゾーンの異なる 2 つ以上のアクティブな HSM が含まれている必要があります。接続ステータスと HSM の数を確認するには、AWS CloudHSM キーストアのページを AWS Management Console に表示します。API オペレーションを使用するときは、DescribeCustomKeyStores オペレーションを実行して AWS CloudHSM キーストアが接続されていることを確かめます。クラスターに含まれるアクティブな HSM の数と、それらのアベイラビリティゾーンを確認するには、AWS CloudHSMDescribeClusters オペレーションを使用します。

AWS CloudHSM キーストアで KMS キーを作成すると、AWS KMS が AWS KMS で KMS キーを作成します。ただし、関連付けられた AWS CloudHSM クラスターで KMS キーのキーマテリアルが作成されます。具体的には、AWS KMS が作成した kmsuser CU としてクラスターにサインインします。次に、クラスター内に永続的で抽出不可能な 256 ビットの Advanced Encryption Standard (AES) 対称キーが作成され、AWS KMS がキーラベルの属性値を設定します。これはクラスター内で、KMS キーの Amazon リソースネーム (ARN) にのみ表示されます。 

コマンドが成功すると、新しいKMS キーのキーステータスEnabled になり、そのオリジンは AWS_CLOUDHSM になります。作成後に KMS キーのオリジンを変更することはできません。AWS KMS コンソールで AWS CloudHSM キーストア内の KMS キーを表示するか、DescribeKey オペレーションを使用すると、キー ID、キーステータス、作成日などの一般的なプロパティを表示できます。カスタムキーストア ID と AWS CloudHSM クラスター ID (オプション) を確認することもできます。詳細については、「AWS CloudHSM キーストアでの KMS キーの表示」を参照してください。

AWS CloudHSM キーストアで KMS キーを作成しようとして失敗した場合は、エラーメッセージを使えばその原因を特定できます。メッセージには、AWS CloudHSM キーストアが接続されていない (CustomKeyStoreInvalidStateException)、または、関連付けられた AWS CloudHSM クラスターにオペレーションに必要な 2 つのアクティブな HSM がない (CloudHsmClusterInvalidConfigurationException)、との原因が記されている可能性があります。ヘルプについては、を参照してください カスタムキーストアのトラブルシューティング

AWS CloudHSM キーストアで KMS キーを作成するオペレーションの、AWS CloudTrail ログの例については、「CreateKey」を参照してください。

AWS CloudHSM キーストアで KMS キーを作成する (コンソール)

AWS CloudHSM キーストアで対称暗号化 KMS キーを作成するときは、次の手順に従います。

注記

エイリアス、説明、またはタグには、機密情報や重要情報を含めないでください。これらのフィールドは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。

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

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

  3. ナビゲーションペインで、[Customer managed keys] (カスタマーマネージドキー) を選択します。

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

  5. [対称] を選択します。

  6. [Key usage] (キーの使用) では、[Encrypt and decrypt] (暗号化および復号化) オプションがすでに選択されています。この設定は変更しないでください。

  7. [Advanced options (詳細オプション)] を選択します。

  8. [キーマテリアルのオリジン] で、[AWS CloudHSM キーストア] を選択します。

    マルチリージョンキーは、AWS CloudHSM キーストアでは作成できません。

  9. [Next] (次へ) を選択します。

  10. 新しい KMS キーの AWS CloudHSM キーストアを選択します。新しい AWS CloudHSM キーストアを作成するには、[Create custom key store] (カスタムキーストアの作成) を選択します。

    選択した AWS CloudHSM キーストアは、ステータスに CONNECTED が割り当てられている必要があります。関連付けられた AWS CloudHSM クラスターがアクティブで、異なるアベイラビリティーゾーンに少なくとも 2 つのアクティブな HSM が含まれている必要があります。

    AWS CloudHSM キーストアの接続に関するヘルプは、「AWS CloudHSM キーストアの接続と切断」を参照してください。HSM の追加については、AWS CloudHSM ユーザーガイドHSM の追加を参照してください。

  11. [Next] (次へ) を選択します。

  12. KMS キーのエイリアスおよびオプションの説明を入力します。

  13. (オプション)。[Add Tags] (タグの追加) ページで、KMS キーを識別または分類するタグを追加します。

    AWS リソースにタグを追加すると、使用量とコストがタグごとに集計されたコスト配分レポートが AWS によって生成されます。タグは、KMS キーへのアクセスの制御にも使用できます。KMS キーのタグ付けについては、キーのタグ付け および AWS KMS の ABAC を参照してください。

  14. [Next] (次へ) を選択します。

  15. [Key administrators] (キー管理者) セクションで、KMS キーを管理できる IAM ユーザーとロールを選択します。詳細については、「KMS キーの管理をキー管理者に許可する」を参照してください。

    注記

    IAM ポリシーでは、KMS キーを使用するアクセス許可を他の IAM ユーザーおよびロールに付与できます。

    IAM ベストプラクティスでは、長期の認証情報を持つ IAM ユーザーの使用は推奨されていません。可能な限り、一時的な認証情報を提供する IAM ロールを使用してください。詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

  16. (オプション) これらのキー管理者がこの KMS キーを削除できないようにするには、ページの下部にある [Allow key administrators to delete this key] (キー管理者がこのキーを削除できるようにする) チェックボックスをオフにします。

  17. [Next] (次へ) を選択します。

  18. [This account] (このアカウント) セクションで、KMS キーを暗号化オペレーションで使用できる、この AWS アカウント の IAM ユーザーとロールを選択します。詳細については、「KMS キーの使用をキーユーザーに許可する」を参照してください。

    注記

    IAM ポリシーでは、KMS キーを使用するアクセス許可を他の IAM ユーザーおよびロールに付与できます。

    IAM ベストプラクティスでは、長期の認証情報を持つ IAM ユーザーの使用は推奨されていません。可能な限り、一時的な認証情報を提供する IAM ロールを使用してください。詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

  19. (オプション) 他の AWS アカウント が暗号化オペレーションにこの KMS キーを使用できるようにします。これを行うには、ページの下部にある [Other AWS アカウント] セクションで、[Add another AWS アカウント] を選択し、外部アカウントの AWS アカウント ID を入力します。複数の外部アカウントを追加するには、この手順を繰り返します。

    注記

    ユーザーが IAM ポリシーを作成して KMS キーにアクセスすることを、他の AWS アカウント 管理者が許可する必要もあります。詳細については、「他のアカウントのユーザーに KMS キーの使用を許可する」を参照してください。

  20. [Next] (次へ) を選択します。

  21. 選択したキー設定を確認します。戻って、すべての設定を変更することもできます。

  22. 終了したら、[Finish] (完了) を選択し、キーを作成します。

この手順が完了すると、選択した AWS CloudHSM キーストアに新しい KMS キーが表示されます。新しい KMS キーの名前やエイリアスを選択すると、その詳細ページの [Cryptographic configuration] (暗号化設定) タブに、KMS キー (AWS CloudHSM) のオリジン、カスタムキーストアの名前、ID、タイプ、AWS CloudHSM クラスターの ID が表示されます。手順が失敗すると、失敗を説明するエラーメッセージが表示されます。

ヒント

カスタムキーストアで KMS キーをより簡単に識別できるようにするには、[Customer managed keys (カスタマーマネージドキー)] ページで、[Custom key store ID (カスタムキーストア ID)] 列を表示に追加します。右上隅にある歯車アイコンをクリックし、[Custom key store ID (カスタムキーストア ID)] を選択します。詳細については、「KMS キーテーブルをカスタマイズする」を参照してください。

AWS CloudHSM キーストアで KMS キーを作成する (API)

AWS CloudHSM キーストアで新しい AWS KMS key (KMS キー) を作成するときは、CreateKey オペレーションを使用します。CustomKeyStoreId パラメータを使用してカスタムキーストアを識別し、AWS_CLOUDHSMOrigin 値を指定します。

また、キーポリシーを指定するために Policy パラメータが必要になる場合もあります。キーポリシー (PutKeyPolicy) を変更したり、 説明タグ などのオプション要素をいつでも追加したりできます。

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

次の例では、DescribeCustomKeyStores オペレーションの呼び出しから始めて、AWS CloudHSM キーストアが、関連付けられた AWS CloudHSM クラスターに接続されていることを確認します。デフォルトでは、このオペレーションは、アカウントとリージョンのすべてのカスタムキーストアを返します。特定の AWS CloudHSM キーストアのみを記述するときは、CustomKeyStoreIdCustomKeyStoreName のパラメータ (一方のみ) を使用します。

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

注記

Description フィールドまたは Tags フィールドには、機密情報や重要情報を含めないでください。これらのフィールドは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0 { "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CustomKeyStoreType": "AWS CloudHSM key store", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ], }

次のコマンド例では、DescribeClusters オペレーションを使用して、ExampleKeyStore (cluster-1a23b4cdefg) に関連付けられている AWS CloudHSM クラスターに 2 つ以上のアクティブな HSM があることを確認します。クラスターにある HSM が 2 つに満たない場合、CreateKey オペレーションは失敗します。

$ aws cloudhsmv2 describe-clusters { "Clusters": [ { "SubnetMapping": { ... }, "CreateTimestamp": 1507133412.351, "ClusterId": "cluster-1a23b4cdefg", "SecurityGroup": "sg-865af2fb", "HsmType": "hsm1.medium", "VpcId": "vpc-1a2b3c4d", "BackupPolicy": "DEFAULT", "Certificates": { "ClusterCertificate": "-----BEGIN CERTIFICATE-----\...\n-----END CERTIFICATE-----\n" }, "Hsms": [ { "AvailabilityZone": "us-west-2a", "EniIp": "10.0.1.11", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-a6b10bd1", "HsmId": "hsm-abcdefghijk", "State": "ACTIVE" }, { "AvailabilityZone": "us-west-2b", "EniIp": "10.0.0.2", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-b6b10bd2", "HsmId": "hsm-zyxwvutsrqp", "State": "ACTIVE" }, ], "State": "ACTIVE" } ] }

この例では、CreateKey オペレーションを使用して AWS CloudHSM キーストアに KMS キーを作成します。AWS CloudHSM キーストアに KMS キーを作成するときは、AWS CloudHSM キーストアのカスタムキーストア ID を入力し、AWS_CLOUDHSMOrigin 値を指定する必要があります。

応答には、カスタムキーストアと AWS CloudHSM クラスターの ID が含まれています。

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

$ aws kms create-key --origin AWS_CLOUDHSM --custom-key-store-id cks-1234567890abcdef0 { "KeyMetadata": { "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1.499288695918E9, "Description": "Example key", "Enabled": true, "MultiRegion": false, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_CLOUDHSM" "CloudHsmClusterId": "cluster-1a23b4cdefg", "CustomKeyStoreId": "cks-1234567890abcdef0" "KeySpec": "SYMMETRIC_DEFAULT", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }