

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 金鑰存放區中建立 KMS AWS CloudHSM 金鑰
<a name="create-cmk-keystore"></a>

建立 AWS CloudHSM 金鑰存放區之後，您可以在金鑰存放區 AWS KMS keys 中建立 。它們必須是具有 AWS KMS 產生的金鑰材料的[對稱加密 KMS](symm-asymm-choose-key-spec.md#symmetric-cmks) 金鑰。您無法在自訂金鑰存放區中建立[非對稱 KMS 金鑰](symmetric-asymmetric.md)、[HMAC KMS 金鑰](hmac.md)，或是含有[匯入金鑰資料](importing-keys.md)的 KMS 金鑰。此外，您無法在自訂金鑰存放區中使用對稱加密 KMS 金鑰來產生非對稱資料金鑰對。KMS 無法透過 IPv6 與 AWS CloudHSM 金鑰存放區通訊。

若要在金鑰存放區中建立 KMS AWS CloudHSM 金鑰， AWS CloudHSM 金鑰存放區必須[連線至相關聯的 AWS CloudHSM 叢集](connect-keystore.md)，而且叢集必須在不同的可用區域中包含至少兩個作用中的 HSMs。若要尋找 HSM 的連接狀態和數目，請檢視 AWS 管理主控台中的 [AWS CloudHSM 金鑰存放區頁面](view-keystore.md#view-keystore-console)。使用 API 操作時，請使用 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 操作來驗證 AWS CloudHSM 金鑰存放區是否已連線。若要驗證叢集中的作用中 HSMs 數量及其可用區域，請使用 AWS CloudHSM [DescribeClusters](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html) 操作。

當您在 AWS CloudHSM 金鑰存放區中建立 KMS 金鑰時， 會在其中 AWS KMS 建立 KMS 金鑰 AWS KMS。但是，它會為相關聯 AWS CloudHSM 叢集中的 KMS 金鑰建立金鑰材料。具體而言， 會將 AWS KMS 登入叢集，做為[`kmsuser`您建立的 CU](create-keystore.md#before-keystore)。然後，它會在叢集建立持久性、不可擷取的 256 位元進階加密標準 (AES) 對稱金鑰。 AWS KMS 會將只在叢集內可見的[金鑰標籤屬性](https://docs.aws.amazon.com/cloudhsm/latest/userguide/cloudhsm_cli-key-attributes.html)的值，設定為 KMS 金鑰的 Amazon Resource Name (ARN)。

當命令成功時，新 KMS 金鑰的[金鑰狀態](key-state.md)是 `Enabled`，而其來源是 `AWS_CLOUDHSM`。建立任何 KMS 金鑰之後就無法變更其來源。當您在 AWS KMS 主控台的 AWS CloudHSM 金鑰存放區中或使用 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作檢視 KMS 金鑰時，您可以看到典型屬性，例如其金鑰 ID、金鑰狀態和建立日期。但是，您也可以查看自訂金鑰存放區 ID 和 (選擇性) AWS CloudHSM 叢集 ID。

如果您嘗試在金鑰存放區中建立 KMS AWS CloudHSM 金鑰失敗，請使用錯誤訊息來協助您判斷原因。這可能表示 AWS CloudHSM 金鑰存放區未連線 (`CustomKeyStoreInvalidStateException`)，或關聯的 AWS CloudHSM 叢集沒有此操作所需的兩個作用中 HSMs (`CloudHsmClusterInvalidConfigurationException`)。如需協助，請參閱[對自訂金鑰存放區進行故障診斷](fix-keystore.md)。

如需在 金鑰存放區中建立 KMS AWS CloudHSM 金鑰之 操作的 AWS CloudTrail 日誌範例，請參閱 [CreateKey](ct-createkey.md)。

## 在 CloudHSM 金鑰存放區中建立新的 KMS 金鑰
<a name="create-key-keystore"></a>

您可以在主控台的 AWS CloudHSM AWS KMS 金鑰存放區中或使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作來建立對稱加密 KMS 金鑰。

### 使用 AWS KMS 主控台
<a name="create-cmk-keystore-console"></a>

使用下列程序在 金鑰存放區中建立對稱加密 KMS AWS CloudHSM 金鑰。

**注意**  
請勿在別名、說明或標籤包含機密或敏感資訊。這些欄位可能在 CloudTrail 日誌與其他輸出中以純文字顯示。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 的 AWS Key Management Service (AWS KMS) 主控台。

1. 若要變更 AWS 區域，請使用頁面右上角的區域選擇器。

1. 在導覽窗格中，選擇 **Customer managed keys** (客戶受管金鑰)。

1. 選擇**建立金鑰**。

1. 選擇 **Symmetric (對稱)**。

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

1. 選擇 **Advanced options (進階選項)**。

1. 對於**金鑰資料來源**，選擇 **AWS CloudHSM 金鑰存放區**。

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

1. 選擇**下一步**。

1. 為您的新 KMS AWS CloudHSM 金鑰選取金鑰存放區。若要建立新的 AWS CloudHSM 金鑰存放區，請選擇**建立自訂金鑰存放區**。

   您選擇的 AWS CloudHSM 金鑰存放區必須具有**連線**狀態。其關聯的 AWS CloudHSM 叢集必須處於作用中狀態，並在不同的可用區域中包含至少兩個作用中的 HSMs。

   如需連接 AWS CloudHSM 金鑰存放區的協助，請參閱 [中斷連接 AWS CloudHSM 金鑰存放區](connect-keystore.md)。如需新增 HSM 的說明，請參閱《*AWS CloudHSM 使用者指南*》中的[新增 HSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/add-remove-hsm.html#add-hsm)。

1. 選擇**下一步**。

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

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

   當您將標籤新增至 AWS 資源時， AWS 會產生成本分配報告，其中包含依標籤彙總的用量和成本。標籤也可以用來控制 KMS 金鑰的存取。如需標記 KMS 金鑰的詳細資訊，請參閱 [中的標籤 AWS KMS](tagging-keys.md) 和 [適用於 的 ABAC AWS KMS](abac.md)。

1. 選擇**下一步**。

1. 在 **Key Administrators** (金鑰管理員) 區段中，選取可管理 KMS 金鑰的 IAM 使用者和角色。如需詳細資訊，請參閱[允許金鑰管理員來管理 KMS 金鑰](key-policy-default.md#key-policy-default-allow-administrators)。
**備註**  
IAM 政策可授權其他 IAM 使用者和角色來使用 KMS 金鑰。  
IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 中的安全性最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。  
 AWS KMS 主控台會將金鑰管理員新增至陳述式識別碼 下的金鑰政策`"Allow access for Key Administrators"`。修改此陳述式識別符可能會影響主控台顯示您對陳述式所做的更新。

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

1. 選擇**下一步**。

1. 在此**帳戶**區段中，選取可在[密碼編譯操作](kms-cryptography.md#cryptographic-operations)中使用 KMS 金鑰的 IAM AWS 帳戶 使用者和角色。如需詳細資訊，請參閱[允許金鑰使用者使用 KMS 金鑰](key-policy-default.md#key-policy-default-allow-users)。
**備註**  
IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 中的安全性最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。  
 AWS KMS 主控台會將金鑰使用者新增至陳述式識別碼 `"Allow use of the key"`和 下的金鑰政策`"Allow attachment of persistent resources"`。修改這些陳述式識別符可能會影響主控台顯示您對陳述式所做的更新的方式。

1. （選用） 您可以允許其他 AWS 帳戶 使用此 KMS 金鑰進行密碼編譯操作。若要這樣做，請在頁面底部的**其他 AWS 帳戶**區段中，選擇**新增另一個 AWS 帳戶**並輸入外部帳戶的 AWS 帳戶 ID。若要新增多個外部帳戶，請重複此步驟。
**注意**  
其他 的管理員 AWS 帳戶 也必須透過為其使用者建立 IAM 政策來允許存取 KMS 金鑰。如需詳細資訊，請參閱[允許其他帳戶中的使用者使用 KMS 金鑰](key-policy-modifying-external-accounts.md)。

1. 選擇**下一步**。

1. 檢閱金鑰的金鑰政策陳述式。若要變更金鑰政策，請選取**編輯**。

1. 選擇**下一步**。

1. 檢閱您選擇的金鑰設定。您仍然可以返回並變更所有設定。

1. 完成時，請選擇 **Finish** (完成) 以建立金鑰。

當程序成功時，顯示器會在您選擇的金鑰存放區中顯示新的 KMS AWS CloudHSM 金鑰。當您選擇新 KMS 金鑰的名稱或別名時，其詳細資訊頁面上**的密碼編譯組態**索引標籤會顯示 KMS 金鑰的來源 (**AWS CloudHSM**)、自訂金鑰存放區的名稱、ID 和類型，以及 AWS CloudHSM 叢集的 ID。如果程序失敗，則會出現錯誤訊息來描述失敗。

**提示**  
為了更輕鬆識別自訂金鑰存放區中的 KMS 金鑰，請在 **Customer managed keys** (客戶受管金鑰) 頁面上，新增要顯示的 **Custom key store ID** (自訂金鑰存放區 ID) 資料欄。按一下右上方的齒輪圖示，然後選取 **Custom key store ID (自訂金鑰存放區 ID)**。如需詳細資訊，請參閱[自訂您的主控台檢視](viewing-console-customize.md)。

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

若要在 AWS CloudHSM 金鑰存放區中建立新的 AWS KMS key (KMS 金鑰），請使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作。使用 `CustomKeyStoreId` 參數來識別您的自訂金鑰存放區，並指定 `Origin` 值為 `AWS_CLOUDHSM`。

您可能還想要使用 `Policy` 參數來指定金鑰政策。您隨時可以變更金鑰政策 ([PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)) 並新增選用元素，例如[描述](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)和[標籤](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html)。

本節中的範例使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/)，但您可以使用任何支援的程式設計語言。

下列範例從呼叫 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 操作開始，以驗證 AWS CloudHSM 金鑰存放區是否已連接到其相關聯的 AWS CloudHSM 叢集。在預設情況下，此操作會傳回您帳戶和區域中的所有自訂金鑰存放區。若要僅描述特定 AWS CloudHSM 金鑰存放區，請使用其 `CustomKeyStoreId`或 `CustomKeyStoreName` 參數 （但不能同時使用兩者）。

執行此命令之前，請將範例自訂金鑰存放區 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](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html) 操作來驗證與 `ExampleKeyStore`(cluster-1a23b4cdefg) 相關聯的 AWS CloudHSM 叢集至少有兩個作用中 HSMs。如果叢集的 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](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作在 金鑰存放區中建立 KMS AWS CloudHSM 金鑰。若要在金鑰存放區中建立 KMS AWS CloudHSM 金鑰，您必須提供金鑰存放區的自訂 AWS CloudHSM 金鑰存放區 ID，並指定 `Origin`的值`AWS_CLOUDHSM`。

回應包含自訂金鑰存放區和 AWS CloudHSM 叢集的 IDs。

執行此命令之前，請將範例自訂金鑰存放區 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"
    ]
  }
}
```