

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

# 在外部金鑰存放區中建立 KMS 金鑰
<a name="create-xks-keys"></a>

[建立](create-xks-keystore.md)並[連接](xks-connect-disconnect.md)外部金鑰存放區之後，您可以在金鑰存放區 AWS KMS keys 中建立 。其必須是具有 **External key store** (外部金鑰存放區) (`EXTERNAL_KEY_STORE`) 原始值的[對稱加密 KMS 金鑰](symm-asymm-choose-key-spec.md#symmetric-cmks)。您無法在自訂金鑰存放區中建立[非對稱 KMS 金鑰](symmetric-asymmetric.md)、[HMAC KMS 金鑰](hmac.md)，或是含有[匯入金鑰資料](importing-keys.md)的 KMS 金鑰。此外，您無法在自訂金鑰存放區中使用對稱加密 KMS 金鑰來產生非對稱資料金鑰對。

與標準 KMS 金鑰相比，外部金鑰存放區中的 KMS 金鑰可能具有較差的延遲、耐久性和可用性，因為其依賴於 AWS之外的元件。在外部金鑰存放區中建立或使用 KMS 金鑰之前，請確認您需要具有外部金鑰存放區屬性的金鑰。

**注意**  
有些外部金鑰管理器會提供更簡單的方法來建立外部金鑰存放區的 KMS 金鑰。如需詳細資訊，請參閱外部金鑰管理器文件。

若要在外部金鑰存放區建立 KMS 金鑰，您必須指定下列項目：
+ 外部金鑰存放區的 ID。
+ 外部金鑰存放區 (`EXTERNAL_KEY_STORE`) 的[金鑰材料來源](create-keys.md#key-origin)。
+ 與外部金鑰存放區相關聯的[外部金鑰管理器](keystore-external.md#concept-ekm)中的現有[外部金鑰](keystore-external.md#concept-external-key) ID。此外部金鑰作為 KMS 金鑰的金鑰材料。您無法在建立 KMS 金鑰之後變更外部金鑰 ID。

  AWS KMS 在加密和解密操作的請求中提供外部金鑰存放區代理的外部金鑰 ID。 AWS KMS 無法直接存取您的外部金鑰管理器或其任何密碼編譯金鑰。

除了外部金鑰之外，外部金鑰存放區中的 KMS 金鑰也具有 AWS KMS 金鑰材料。在 KMS 金鑰下加密的所有資料會先 AWS KMS 使用金鑰的 AWS KMS 金鑰材料在 中加密，然後使用外部金鑰由外部金鑰管理器加密。此[雙重加密](keystore-external.md#concept-double-encryption)程序可確保受外部金鑰存放區中 KMS 金鑰保護的密文至少與僅受 AWS KMS保護的密文一樣強。如需詳細資訊，請參閱[外部金鑰存放區的運作方式](keystore-external.md#xks-how-it-works)。

當 `CreateKey` 操作成功時，新 KMS 金鑰的[金鑰狀態](key-state.md)為 `Enabled`。當您[在外部金鑰存放區檢視 KMS 金鑰](identify-key-types.md#view-xks-key)時，您會看到一般屬性，例如其金鑰 ID、[金鑰規格](create-keys.md#key-spec)、[金鑰用途](create-keys.md#key-usage)、[金鑰狀態](key-state.md)和建立日期。但是您也可以看到外部金鑰存放區的 ID 和[連接狀態](xks-connect-disconnect.md#xks-connection-state)以及外部金鑰的 ID。

如果您嘗試在外部金鑰存放區建立 KMS 金鑰失敗，請使用錯誤訊息來判斷原因。這可能表示外部金鑰存放區未連接 (`CustomKeyStoreInvalidStateException`)、外部金鑰存放區代理找不到具有指定外部金鑰 ID 的外部金鑰 (`XksKeyNotFoundException`)，或外部金鑰已與相同外部金鑰存放區中的 KMS 金鑰相關聯 `XksKeyAlreadyInUseException`。

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

**Topics**
+ [外部金鑰存放區中 KMS 金鑰的要求](#xks-key-requirements)
+ [在外部金鑰存放區中建立新的 KMS 金鑰](#create-key-xks)

## 外部金鑰存放區中 KMS 金鑰的要求
<a name="xks-key-requirements"></a>

若要在外部金鑰存放區中建立 KMS 金鑰，外部金鑰存放區、KMS 金鑰以及作為 KMS 金鑰之外部密碼編譯金鑰材料的外部金鑰需要下列屬性。

**外部金鑰存放區要求**
+ 必須連接到其外部金鑰存放區代理。

  若要檢視外部金鑰存放區的[連接狀態](xks-connect-disconnect.md#xks-connection-state)，請參閱 [檢視外部金鑰存放區](view-xks-keystore.md)。若要連接外部金鑰存放區，請參閱 [連接和中斷連接外部金鑰存放區](xks-connect-disconnect.md)。

**KMS 金鑰要求**

您無法在建立 KMS 金鑰之後變更這些屬性。
+ 金鑰規格：SYMMETRIC\$1DEFAULT
+ 金鑰用途：ENCRYPT\$1DECRYPT
+ 金鑰材料來源：EXTERNAL\$1KEY\$1STORE
+ 多區域：FALSE

**外部金鑰要求**
+ 256 位元 AES 密碼編譯金鑰 (256 個隨機位元)。外部金鑰的 `KeySpec` 必須為 `AES_256`。
+ 已啟用並可供使用。外部金鑰的 `Status` 必須為 `ENABLED`。
+ 設定用於加密和解密。外部金鑰的 `KeyUsage` 必須包含 `ENCRYPT` 和 `DECRYPT`。
+ 僅與此 KMS 金鑰搭配使用。外部金鑰存放區中的每個 `KMS key` 都必須與不同的外部金鑰關聯。

  AWS KMS 也建議將外部金鑰專用於外部金鑰存放區。此限制可讓您更輕鬆地識別並解決金鑰的問題。
+ 可供外部金鑰存放區的[外部金鑰存放區代理](keystore-external.md#concept-xks-proxy)存取。

  如果外部金鑰存放區代理找不到使用指定外部金鑰 ID 的金鑰，`CreateKey` 操作就會失敗。
+ 可以處理您使用 AWS 服務 產生的預期流量。 AWS KMS 建議外部金鑰準備處理每秒最多 1800 個請求。

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

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

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

有兩種方法可以在外部金鑰存放區中建立 KMS 金鑰。
+ 方法 1 (建議選擇)：選擇外部金鑰存放區，然後在該外部金鑰存放區建立 KMS 金鑰。
+ 方法 2：建立 KMS 金鑰，然後指出金鑰位於外部金鑰存放區。

如果您使用方法 1，在建立金鑰之前選擇外部金鑰存放區， 會為您 AWS KMS 選擇所有必要的 KMS 金鑰屬性，並填入外部金鑰存放區的 ID。此方法可避免您在建立 KMS 金鑰時可能發生的錯誤。

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

**方法 1 (建議選擇)：在外部金鑰存放區開始**

若要使用此方法，請選擇外部金鑰存放區，然後建立 KMS 金鑰。 AWS KMS 主控台會為您選擇所有必要的屬性，並填入外部金鑰存放區的 ID。此方法可避免您在建立 KMS 金鑰時可能發生的許多錯誤。

1. 登入 AWS 管理主控台 並開啟位於 https：//[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. 在右上角，選擇 **Create a KMS key in this key store** (在此金鑰存放區建立 KMS 金鑰)。

   如果*未*連接外部金鑰存放區，系統會提示您進行連接。如果連接嘗試失敗，則您需要先解決問題並連接外部金鑰存放區，才能在其中建立新的 KMS 金鑰。

   如果外部金鑰存放區已連接，則系統會將您重新導向至 **Customer managed keys** (客戶受管金鑰) 頁面以建立金鑰。已為您選擇所需的 **Key configuration** (金鑰組態) 值。此外，會填寫外部金鑰存放區的自訂金鑰存放區 ID，不過您可以變更它。

1. 在[外部金鑰管理器](keystore-external.md#concept-ekm)中輸入[外部金鑰](keystore-external.md#concept-external-key)的金鑰 ID。此外部金鑰必須[滿足要求](#xks-key-requirements)，才能與 KMS 金鑰搭配使用。建立金鑰之後，便無法變更此值。

   如果外部金鑰有多個 ID，請輸入外部金鑰存放區代理用來識別外部金鑰的金鑰 ID。

1. 確認您要在指定的外部金鑰存放區中建立 KMS 金鑰。

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

   此程序的其餘部分與[建立標準 KMS 金鑰](create-keys.md)相同。

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)。

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

   刪除 KMS 金鑰是一種破壞性和不可復原的操作，可可能導致密文無法復原。即使您擁有外部金鑰材料，也無法在外部金鑰存放區中重新建立對稱 KMS 金鑰。不過，刪除 KMS 金鑰不會影響其相關聯的外部金鑰。如需有關從外部金鑰存放區刪除 KMS 金鑰的資訊，請參閱[刪除金鑰的特殊考量](deleting-keys.md#special-considerations-delete)。

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

1. 在此**帳戶**區段中，選取可在[密碼編譯操作](kms-cryptography.md#cryptographic-operations)中使用 KMS 金鑰的 IAM AWS 帳戶 使用者和角色。如需詳細資訊，請參閱[允許金鑰使用者使用 KMS 金鑰](key-policy-default.md#key-policy-default-allow-users)。
**注意**  
IAM 政策可授權其他 IAM 使用者和角色來使用 KMS 金鑰。  
IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 中的安全性最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

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

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

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

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

**方法 2：在客戶受管金鑰中開始**

此程序與使用金鑰材料建立對稱加密 AWS KMS 金鑰的程序相同。但是，在此程序中，您可指定外部金鑰存放區的自訂金鑰存放區 ID 和外部金鑰的金鑰 ID。您也必須為外部金鑰存放區中的 KMS 金鑰指定[必要的屬性值](#xks-key-requirements)，例如金鑰規格和金鑰用途。

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. 對於 **Key material origin** (金鑰材料來源)，選擇 **External key store** (外部金鑰存放區)。

1. 確認您要在指定的外部金鑰存放區中建立 KMS 金鑰。

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

1. 選擇代表新 KMS 金鑰的外部金鑰存放區的資料列。

   您無法選擇已中斷連接的外部金鑰存放區。若要連接已中斷連接的金鑰存放區，請選擇金鑰存放區名稱，然後在 **Key store actions** (金鑰存放區動作) 中選擇 **Connect** (連接)。如需詳細資訊，請參閱[使用 AWS KMS 主控台](about-xks-connecting.md#connect-xks-console)。

1. 在[外部金鑰管理器](keystore-external.md#concept-ekm)中輸入[外部金鑰](keystore-external.md#concept-external-key)的金鑰 ID。此外部金鑰必須[滿足要求](#xks-key-requirements)，才能與 KMS 金鑰搭配使用。建立金鑰之後，便無法變更此值。

   如果外部金鑰有多個 ID，請輸入外部金鑰存放區代理用來識別外部金鑰的金鑰 ID。

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

   此程序的其餘部分與[建立標準 KMS 金鑰](create-keys.md)相同。

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 金鑰。

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

   刪除 KMS 金鑰是一種破壞性和不可復原的操作，可可能導致密文無法復原。即使您擁有外部金鑰材料，也無法在外部金鑰存放區中重新建立對稱 KMS 金鑰。不過，刪除 KMS 金鑰不會影響其相關聯的外部金鑰。如需從外部金鑰存放區刪除 KMS 金鑰的相關資訊，請參閱 [刪除 AWS KMS key](deleting-keys.md)。

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

1. 在此**帳戶**區段中，選取可在[密碼編譯操作](kms-cryptography.md#cryptographic-operations)中使用 KMS 金鑰的 IAM AWS 帳戶 使用者和角色。如需詳細資訊，請參閱[允許金鑰使用者使用 KMS 金鑰](key-policy-default.md#key-policy-default-allow-users)。
**注意**  
IAM 政策可授權其他 IAM 使用者和角色來使用 KMS 金鑰。

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

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

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

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

當處理程序成功時，畫面會在您選擇的外部金鑰存放區中顯示新的 KMS 金鑰。當您選擇新 KMS 金鑰的名稱或別名時，其詳細資訊頁面上的 **Cryptographic configuration** (密碼編譯組態) 標籤會顯示 KMS 金鑰的來源 (**External key store (外部金鑰存放區)**)、名稱、ID、自訂金鑰存放區類型，以及外部金鑰的 ID、金鑰用途和狀態。如果程序失敗，則會出現錯誤訊息來描述失敗。若為 ，請參閱 [外部金鑰存放區故障診斷](xks-troubleshooting.md)。

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

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

若要在外部金鑰存放區建立新的 KMS 金鑰，請使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作。下列是必要參數：
+ `Origin` 值必須為 `EXTERNAL_KEY_STORE`。
+ `CustomKeyStoreId` 參數可識別您的外部金鑰存放區。指定的外部金鑰存放區的 [`ConnectionState`](xks-connect-disconnect.md#xks-connection-state) 必須為 `CONNECTED`。若要尋找 `CustomKeyStoreId` 和 `ConnectionState`，請使用 `DescribeCustomKeyStores` 操作。
+ `XksKeyId` 參數可識別外部金鑰。此外部金鑰必須[滿足要求](#xks-key-requirements)，才能與 KMS 金鑰相關聯。

您也可以使用 `CreateKey` 操作的任何選用參數，例如使用 `Policy` 或 [Tags](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) (標籤) 參數。

**注意**  
請勿在 `Description` 或 `Tags` 欄位包含機密或敏感資訊。這些欄位可能在 CloudTrail 日誌與其他輸出中以純文字顯示。

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

此範例命令使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作以在外部金鑰存放區建立 KMS 金鑰。回應包括 KMS 金鑰的屬性、外部金鑰存放區 ID 以及外部金鑰的 ID、用途和狀態。

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

```
$ aws kms create-key --origin EXTERNAL_KEY_STORE --custom-key-store-id cks-1234567890abcdef0 --xks-key-id bb8562717f809024
{
  "KeyMetadata": {
    "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "AWSAccountId": "111122223333",
    "CreationDate": "2022-12-02T07:48:55-07:00",
    "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
    "CustomKeyStoreId": "cks-1234567890abcdef0",
    "Description": "",
    "Enabled": true,
    "EncryptionAlgorithms": [
      "SYMMETRIC_DEFAULT"
    ],
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyManager": "CUSTOMER",
    "KeySpec": "SYMMETRIC_DEFAULT",
    "KeyState": "Enabled",
    "KeyUsage": "ENCRYPT_DECRYPT",
    "MultiRegion": false,
    "Origin": "EXTERNAL_KEY_STORE",
    "XksKeyConfiguration": {
      "Id": "bb8562717f809024"
    }
  }
}
```