在外部金鑰存放區中建立 KMS 金鑰 - AWS Key Management Service

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

在外部金鑰存放區中建立 KMS 金鑰

建立連接外部金鑰存放區之後,您可以在金鑰存放區建立 AWS KMS keys。其必須是具有 External key store (外部金鑰存放區) (EXTERNAL_KEY_STORE) 原始值的對稱加密 KMS 金鑰。您無法在自訂金鑰存放區中建立非對稱 KMS 金鑰HMAC KMS 金鑰,或是含有匯入金鑰資料的 KMS 金鑰。此外,您無法在自訂金鑰存放區中使用對稱加密 KMS 金鑰來產生非對稱資料金鑰對。

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

注意

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

若要在外部金鑰存放區建立 KMS 金鑰,您必須指定下列項目:

  • 外部金鑰存放區的 ID。

  • 外部金鑰存放區 (EXTERNAL_KEY_STORE) 的金鑰材料來源

  • 與外部金鑰存放區相關聯的外部金鑰管理器中的現有外部金鑰 ID。此外部金鑰作為 KMS 金鑰的金鑰材料。您無法在建立 KMS 金鑰之後變更外部金鑰 ID。

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

除了外部金鑰之外,外部金鑰存放區中的 KMS 金鑰也包含 AWS KMS 金鑰材料。使用 KMS 金鑰進行加密的所有資料首先在 AWS KMS 中使用該金鑰的 AWS KMS 金鑰材料進行加密,然後再由外部金鑰管理器使用外部金鑰加密。此雙重加密程序可確保受外部金鑰存放區中 KMS 金鑰保護的密文至少與僅受 AWS KMS 保護的密文一樣強。如需詳細資訊,請參閱 外部金鑰存放區的運作方式

CreateKey 操作成功時,新 KMS 金鑰的金鑰狀態Enabled。當您在外部金鑰存放區檢視 KMS 金鑰時,您會看到一般屬性,例如其金鑰 ID、金鑰規格金鑰用途金鑰狀態和建立日期。但是您也可以看到外部金鑰存放區的 ID 和連接狀態以及外部金鑰的 ID。

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

.

如需會在外部金鑰存放區中建立 KMS 金鑰之操作的 AWS CloudTrail 日誌範例,請參閱 CreateKey

外部金鑰存放區中 KMS 金鑰的要求

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

外部金鑰存放區要求

KMS 金鑰要求

您無法在建立 KMS 金鑰之後變更這些屬性。

  • 金鑰規格:SYMMETRIC_DEFAULT

  • 金鑰用途:ENCRYPT_DECRYPT

  • 金鑰材料來源:EXTERNAL_KEY_STORE

  • 多區域:FALSE

外部金鑰要求

  • 256 位元 AES 密碼編譯金鑰 (256 個隨機位元)。外部金鑰的 KeySpec 必須為 AES_256

  • 已啟用並可供使用。外部金鑰的 Status 必須為 ENABLED

  • 設定用於加密和解密。外部金鑰的 KeyUsage 必須包含 ENCRYPTDECRYPT

  • 僅與此 KMS 金鑰搭配使用。外部金鑰存放區中的每個 KMS key 都必須與不同的外部金鑰關聯。

    AWS KMS 還建議僅將外部金鑰用於外部金鑰存放區。此限制可讓您更輕鬆地識別並解決金鑰的問題。

  • 可供外部金鑰存放區的外部金鑰存放區代理存取。

    如果外部金鑰存放區代理找不到使用指定外部金鑰 ID 的金鑰,CreateKey 操作就會失敗。

  • 可以處理您使用 AWS 服務 產生的預期流量。AWS KMS 建議外部金鑰準備好處理每秒多達 1800 個請求。

在外部金鑰存放區建立 KMS 金鑰 (主控台)

有兩種方法可以在外部金鑰存放區中建立 KMS 金鑰。

  • 方法 1 (建議選擇):選擇外部金鑰存放區,然後在該外部金鑰存放區建立 KMS 金鑰。

  • 方法 2:建立 KMS 金鑰,然後指出金鑰位於外部金鑰存放區。

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

注意

請勿在別名、說明或標籤包含機密或敏感資訊。在 CloudTrail 記錄檔和其他輸出中,這些欄位可能會以純文字顯示。

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

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

  1. 請登入 AWS Management Console,並開啟 AWS Key Management Service (AWS KMS) 主控台 (網站:https://console.aws.amazon.com/kms)。

  2. 若要變更 AWS 區域,請使用頁面右上角的區域選取器。

  3. 在導覽窗格中,依次選擇 Custom key stores (自訂金鑰存放區)、External key stores (外部金鑰存放區)。

  4. 選擇外部金鑰存放區的名稱。

  5. 在右上角,選擇 Create a KMS key in this key store (在此金鑰存放區建立 KMS 金鑰)。

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

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

  6. 外部金鑰管理器中輸入外部金鑰的金鑰 ID。此外部金鑰必須滿足要求,才能與 KMS 金鑰搭配使用。建立金鑰之後,便無法變更此值。

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

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

  8. 選擇下一步

    此程序的其餘部分與建立標準 KMS 金鑰相同。

  9. 輸入 KMS 金鑰的別名 (必需) 和描述 (選用)。

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

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

  11. 選擇下一步

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

    注意

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

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

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

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

  14. 選擇下一步

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

    注意

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

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

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

    注意

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

  17. 選擇下一步

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

  19. 完成時,請選擇 Finish (完成) 以建立金鑰。

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

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

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

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

  10. 選擇下一步

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

    您無法選擇已中斷連接的外部金鑰存放區。若要連接已中斷連接的金鑰存放區,請選擇金鑰存放區名稱,然後在 Key store actions (金鑰存放區動作) 中選擇 Connect (連接)。如需詳細資訊,請參閱 連接外部金鑰存放區 (主控台)

  12. 外部金鑰管理器中輸入外部金鑰的金鑰 ID。此外部金鑰必須滿足要求,才能與 KMS 金鑰搭配使用。建立金鑰之後,便無法變更此值。

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

  13. 選擇下一步

    此程序的其餘部分與建立標準 KMS 金鑰相同。

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

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

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

  16. 選擇下一步

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

    注意

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

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

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

  19. 選擇下一步

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

    注意

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

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

    注意

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

  22. 選擇下一步

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

  24. 完成時,請選擇 Finish (完成) 以建立金鑰。

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

提示

為了更輕鬆識別自訂金鑰存放區中的 KMS 金鑰,請在 Customer managed keys (客戶受管金鑰) 頁面上,新增要顯示的 Origin (來源) 和 Custom key store ID (自訂金鑰存放區 ID) 資料欄。若要變更資料表欄位,請選擇頁面右上角的齒輪圖示。如需詳細資訊,請參閱 自訂您的 KMS 金鑰資料表

在外部金鑰存放區建立 KMS 金鑰 (AWS KMS API)

若要在外部金鑰存放區中建立新的 KMS 金鑰,請使用此CreateKey作業。下列是必要參數:

  • Origin 值必須為 EXTERNAL_KEY_STORE

  • CustomKeyStoreId 參數可識別您的外部金鑰存放區。指定的外部金鑰存放區的 ConnectionState 必須為 CONNECTED。若要尋找 CustomKeyStoreIdConnectionState,請使用 DescribeCustomKeyStores 操作。

  • XksKeyId 參數可識別外部金鑰。此外部金鑰必須滿足要求,才能與 KMS 金鑰相關聯。

您也可以使用 CreateKey 操作的任何選用參數,例如使用 PolicyTags (標籤) 參數。

注意

請勿在 DescriptionTags 欄位包含機密或敏感資訊。在 CloudTrail 記錄檔和其他輸出中,這些欄位可能會以純文字顯示。

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

此範例命令使用此CreateKey作業在外部金鑰存放區中建立 KMS 金鑰。回應包括 KMS 金鑰的屬性、外部金鑰存放區 ID 以及外部金鑰的 ID、用途和狀態。如需有關這些欄位的詳細資訊,請參閱 檢視外部金鑰存放區中的 KMS 金鑰

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