在 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 叢集,且叢集必須在不同的可用區域包含至少兩個作用中 HSM。若要尋找 HSM 的連接狀態和數目,請檢視 AWS Management Console 中的 AWS CloudHSM 金鑰存放區頁面。使用 API 作業時,請使用DescribeCustomKeyStores作業驗證AWS CloudHSM金鑰存放區是否已連線。若要驗證叢集中作用中 HSM 的數目及其可用區域,請使用此AWS CloudHSMDescribeClusters作業。

當您在 AWS CloudHSM 金鑰存放區建立 KMS 金鑰時,AWS KMS 會在 AWS KMS 中建立 KMS 金鑰。但是,它會在相關聯的 AWS CloudHSM 叢集內建立 KMS 金鑰的金鑰材料。特別的是,AWS KMS 會以您建立的 kmsuser CU 登入叢集。然後,它會在叢集建立持久性、不可擷取的 256 位元進階加密標準 (AES) 對稱金鑰。AWS KMS 會將只在叢集內可見的金鑰標籤屬性的值,設定為 KMS 金鑰的 Amazon Resource Name (ARN)。

當命令成功時,新 KMS 金鑰的金鑰狀態Enabled,而其來源是 AWS_CLOUDHSM。建立任何 KMS 金鑰之後就無法變更其來源。當您在AWS KMS主控台的金AWS CloudHSM鑰存放區中檢視 KMS 金鑰或使用DescribeKey作業時,您可以看到一般屬性,例如其金鑰識別碼、金鑰狀態和建立日期。但是,您也可以查看自訂金鑰存放區 ID 和 (選擇性) AWS CloudHSM 叢集 ID。如需詳細資訊,請參閱 檢視 AWS CloudHSM 金鑰存放區中的 KMS 金鑰

如果您嘗試在 AWS CloudHSM 金鑰存放區建立 KMS 金鑰失敗,請使用錯誤訊息來協助您判斷原因。它可能指出 AWS CloudHSM 金鑰存放區未連接 (CustomKeyStoreInvalidStateException),或相關聯的 AWS CloudHSM 叢集沒有此操作所需的兩個作用中 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. 選擇建立金鑰

  5. 選擇 Symmetric (對稱)

  6. Key usage (金鑰用途) 欄位中,系統會自動選取 Encrypt and decrypt (加密和解密) 選項。請勿變更該欄位。

  7. 選擇 Advanced options (進階選項)

  8. 對於金鑰資料來源,選擇 AWS CloudHSM 金鑰存放區

    您無法在 AWS CloudHSM 金鑰存放區建立多區域金鑰。

  9. 選擇下一步

  10. 為新的 KMS 金鑰選取 AWS CloudHSM 金鑰存放區。若要建立新的 AWS CloudHSM 金鑰存放區,請選擇 Create custom key store (建立自訂金鑰存放區)。

    您選取的 AWS CloudHSM 金鑰存放區必須為 CONNECTED (已連接) 狀態。其相關聯的 AWS CloudHSM 叢集必須處於作用中,且在不同的可用區域至少包含兩個作用中 HSM。

    如需有關連接 AWS CloudHSM 金鑰存放區的說明,請參閱 連接和中斷連接 AWS CloudHSM 金鑰存放區。如需新增 HSM 的說明,請參閱《AWS CloudHSM 使用者指南》中的新增 HSM

  11. 選擇下一步

  12. 輸入 KMS 金鑰的別名和選用描述。

  13. (選用)。在 Add Tags (新增標籤) 頁面,新增標籤來識別或分類 KMS 金鑰。

    將標籤新增到 AWS 資源時,AWS 會產生成本配置報告,內含按標籤彙總的用量與成本。標籤也可以用來控制 KMS 金鑰的存取。如需標記 KMS 金鑰的詳細資訊,請參閱 標記金鑰AWS KMS 的 ABAC

  14. 選擇下一步

  15. Key Administrators (金鑰管理員) 區段中,選取可管理 KMS 金鑰的 IAM 使用者和角色。如需詳細資訊,請參閱允許金鑰管理員來管理 KMS 金鑰

    注意

    IAM 政策可授權其他 IAM 使用者和角色來使用 KMS 金鑰。

    IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 中的安全性最佳實務

  16. (選用) 若要防止這些金鑰管理員刪除此 KMS 金鑰,請清除頁面底部的 Allow key administrators to delete this key (允許金鑰管理員刪除此金鑰) 方塊。

  17. 選擇下一步

  18. This account (這個帳戶) 區段中,選取此 AWS 帳戶 中可在密碼編譯操作中使用 KMS 金鑰的 IAM 使用者和角色。如需詳細資訊,請參閱允許金鑰使用者使用 KMS 金鑰

    注意

    IAM 政策可授權其他 IAM 使用者和角色來使用 KMS 金鑰。

    IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 中的安全性最佳實務

  19. (選用) 您可以允許其他 AWS 帳戶 將此 KMS 金鑰用於密碼編譯操作。若要這樣做,請在頁面底部的其他 AWS 帳戶 區段中,選擇新增另一個 AWS 帳戶,然後輸入外部帳戶的 AWS 帳戶 ID。若要新增多個外部帳戶,請重複此步驟。

    注意

    其他 AWS 帳戶 的管理員也必須透過為其使用者建立 IAM 政策,來允許存取 KMS 金鑰。如需詳細資訊,請參閱 允許其他帳戶中的使用者使用 KMS 金鑰

  20. 選擇下一步

  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 KMS key(KMS 金AWS CloudHSM鑰),請使用此CreateKey作業。使用 CustomKeyStoreId 參數來識別您的自訂金鑰存放區,並指定 Origin 值為 AWS_CLOUDHSM

您可能還想要使用 Policy 參數來指定金鑰政策。您可以隨時變更金鑰原則 (PutKeyPolicy) 並新增選擇性元素,例如說明標籤

本節中的範例使用 AWS Command Line Interface (AWS CLI),但您可以使用任何支援的程式設計語言。

下列範例會從呼叫DescribeCustomKeyStores作業開始,以驗證AWS CloudHSM金鑰存放區是否已連線至其關聯的AWS CloudHSM叢集。在預設情況下,此操作會傳回您帳戶和區域中的所有自訂金鑰存放區。若要只描述特定的 AWS CloudHSM 金鑰存放區,請使用 CustomKeyStoreIdCustomKeyStoreName 參數 (但不是都使用)。

執行此命令之前,請將範例自訂金鑰存放區 ID 換成有效的 ID。

注意

請勿在 DescriptionTags 欄位包含機密或敏感資訊。在 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作業來確認與 (AWS CloudHSM叢集 1a23b4cdefgExampleKeyStore) 相關聯的叢集至少有兩個作用中的 HSM。如果叢集的 HSM 少於兩個,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作業在金鑰存放區中建立 KMS 金AWS CloudHSM鑰。若要在 AWS CloudHSM 金鑰存放區建立 KMS 金鑰,您必須提供 AWS CloudHSM 金鑰存放區的自訂金鑰存放區 ID,並指定 Origin 值為 AWS_CLOUDHSM

回應包含自訂金鑰存放區和 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" ] } }