

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

# 步驟 4：匯入金鑰材料
<a name="importing-keys-import-key-material"></a>

[加密您的金鑰材料之後](importing-keys-encrypt-key-material.md)，您可以匯入金鑰材料以便搭配使用 AWS KMS key。若要匯入金鑰材料，請上傳在[步驟 3：加密金鑰材料](importing-keys-encrypt-key-material.md)加密的金鑰材料，以及在[步驟 2：下載包裝公有金鑰及匯入字符](importing-keys-get-public-key-and-token.md)下載的匯入符記。您必須將金鑰材料匯入至您在[下載公有金鑰和匯入字符](importing-keys-get-public-key-and-token.md)時指定的同一個 KMS 金鑰。在成功匯入金鑰資料之後，KMS 金鑰的[金鑰狀態](key-state.md)會變為 `Enabled`，這表示您可在密碼編譯操作使用 KMS 金鑰。

在匯入金鑰材料時，您可以為金鑰材料[設定可選的過期時間](#importing-keys-expiration)。當金鑰材料過期時， AWS KMS 會刪除金鑰材料，讓 KMS 金鑰變成不可用。匯入金鑰材料後，您無法設定、變更或取消目前匯入材料的過期日期。若要變更這些值，您必須[重新匯入](#reimport-key-material)相同的金鑰材料。

對於具有`EXTERNAL`原始伺服器的所有 KMS 金鑰，匯入其中的第一個金鑰材料會成為最新版本，並永久與其相關聯。具有`EXTERNAL`原始伺服器的對稱加密金鑰支援隨需輪換。您可以將多個金鑰材料與支援隨需輪換的匯入金鑰建立關聯。匯入新金鑰材料的程序會因單一區域和多區域金鑰而有所不同，如[匯入新金鑰材料](#import-new-key-material)一節所述。您必須使用 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) 動作`NEW_KEY_MATERIAL`將 `importType` 參數設定為 ，以將新的金鑰材料與 KMS 金鑰建立關聯。選用`ImportType`參數的預設值為 `EXISTING_KEY_MATERIAL`。當您省略 `ImportType` 參數或將其指定為 時`EXISTING_KEY_MATERIAL`，您必須匯入先前與 KMS 金鑰相關聯的金鑰材料。

對於非對稱或具有`EXTERNAL`原始伺服器的 HMAC KMS 金鑰，只能有一個金鑰材料與金鑰相關聯。 AWS KMS 將使用 `ImportType` 參數拒絕 [ ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) API 請求。

匯入與 KMS 金鑰永久相關聯的所有金鑰材料時，KMS 金鑰可用於密碼編譯操作。如果這些金鑰材料中的任何一種遭到刪除或允許過期，KMS 金鑰狀態會變更為 ，`PendingImport`且金鑰不適用於密碼編譯操作。

若要匯入金鑰材料，您可以使用 [AWS KMS 主控台](#importing-keys-import-key-material-console)或 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) API。您可以透過提出 HTTP 請求，或透過使用 [AWS 開發套件](https://aws.amazon.com/tools/#sdk)、[AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/) 或 [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)，直接使用 API。

當您匯入金鑰材料時，會將 [ImportKeyMaterial 項目](ct-importkeymaterial.md)新增至您的 AWS CloudTrail 日誌，以記錄`ImportKeyMaterial`操作。無論您使用 AWS KMS 主控台或 AWS KMS API，CloudTrail 項目都相同。

## 設定到期時間 (選用)
<a name="importing-keys-expiration"></a>

匯入 KMS 金鑰的金鑰材料時，可以為金鑰材料設定選用的到期日期和時間，從匯入日期算起最多 365 天。當匯入的金鑰材料過期時， 會將其 AWS KMS 刪除。此動作會將 KMS 金鑰的[金鑰狀態](key-state.md#key-state-table)變更為 `PendingImport`，這會防止在任何密碼編譯操作中對其進行使用。若要使用 KMS 金鑰，您必須[重新匯入原始金鑰材料的複本](#reimport-key-material)。

確保匯入的金鑰材料頻繁地到期，可協助您滿足法規要求，但這會對使用 KMS 金鑰加密的資料帶來額外的風險。在您重新匯入原始金鑰材料的複本之前，包含過期金鑰材料的 KMS 金鑰將無法使用，而且使用該 KMS 金鑰進行加密的任何資料都無法存取。如果您因任何原因而無法重新匯入金鑰材料，包括遺失原始金鑰材料的複本，則該 KMS 金鑰將永久無法使用，而且使用該 KMS 金鑰進行加密的資料將無法復原。

若要降低此風險，請確定您可以存取匯入金鑰材料的副本，並設計系統在金鑰材料過期和中斷 AWS 工作負載之前刪除和重新匯入金鑰材料。建議您為已匯入的金鑰材料到期[設定一個警示](imported-key-material-expiration-alarm.md)，讓您有足夠的時間在金鑰材料到期前重新匯入。您也可以使用 CloudTrail 日誌來稽核[匯入 (含重新匯入) 金鑰材料](ct-importkeymaterial.md)和[刪除已匯入的金鑰材料](ct-deleteimportedkeymaterial.md)的操作，以及[刪除過期金鑰材料](ct-deleteexpiredkeymaterial.md)的 AWS KMS 操作。

AWS KMS 無法還原、復原或重現已刪除的金鑰材料。您可以透過程式設計方式定期[刪除](importing-keys-delete-key-material.md)和[重新匯入](#reimport-key-material)已匯入的金鑰材料，而不是設定到期時間，但是保留原始金鑰材料複本的要求是相同的。

您可以在匯入金鑰材料時確定金鑰材料是否有到期時間以及何時到期。不過，您可以開啟和關閉過期，或透過重新匯入金鑰材料來設定新的過期時間。使用 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) 的 `ExpirationModel` 參數來開啟 (`KEY_MATERIAL_EXPIRES`) 和關閉 (`KEY_MATERIAL_DOES_NOT_EXPIRE`) 到期時間，以及使用 `ValidTo` 參數來設定何時到期。最長時間為匯入資料後 365 天；沒有最低限度，但時間必須為將來的時間。

## 設定金鑰材料描述
<a name="set-key-material-description"></a>

具有`EXTERNAL`原始伺服器的對稱加密金鑰可以有多個與其相關聯的金鑰材料。您可以在將金鑰材料匯入此類金鑰時指定選用的金鑰材料描述。描述可用來追蹤在外部長期維護對應金鑰材料的位置 AWS KMS。

對於多區域金鑰，您只能在主要區域金鑰上設定或變更金鑰材料描述。 AWS KMS 會自動將金鑰材料描述傳播至複本區域金鑰。

## 匯入新的金鑰資料
<a name="import-new-key-material"></a>

若要在具有匯入金鑰材料的對稱加密 KMS 金鑰上執行隨需輪換，您必須先匯入新的金鑰材料，先前不會與金鑰相關聯。
+ **單一區域金鑰**
  + 使用 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) 操作，並將 `ImportType` 參數設定為 `NEW_KEY_MATERIAL`來完成此任務。在您執行 [RotateKeyOnDemand](https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html) 操作或在 中輪換金鑰之前，此金鑰材料不會永久與金鑰相關聯 AWS 管理主控台。在此之前，此金鑰材料處於 `PENDING_ROTATION` 狀態。KMS 金鑰隨時最多可有一個處於 `PENDING_ROTATION` 狀態的金鑰材料。可以刪除處於 `PENDING_ROTATION` 狀態的金鑰材料，而不會影響金鑰在密碼編譯操作中的可用性。
+ **多區域金鑰**
  + 若要將金鑰材料匯入多區域金鑰，您必須先將新的金鑰材料匯入主要區域金鑰。您無法將新的金鑰材料直接匯入複本區域金鑰。將新的金鑰材料匯入主要區域金鑰後，您可以將相同的金鑰材料匯入複本區域金鑰。
  + 針對主要區域金鑰使用 `ImportType` 參數設定為 **NEW\_KEY\_MATERIAL** [https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)的操作來完成此任務。對於複本區域金鑰，請使用 的 **EXISTING\_KEY\_MATERIAL** 參數`ImportType`進行 `ImportKeyMaterial`操作。
  + 在金鑰材料狀態變更為 `PENDING_ROTATION` 狀態之前，對稱加密多區域金鑰的金鑰材料必須匯入所有複本區域金鑰和主要區域金鑰。在此之前，新金鑰材料的狀態為 `PENDING_MULTI_REGION_IMPORT_AND_ROTATION`。KMS 金鑰隨時最多可有一個處於 `PENDING_ROTATION`或 `PENDING_MULTI_REGION_IMPORT_AND_ROTATION`狀態的金鑰材料 （請參閱 [RotationsListEntry](https://docs.aws.amazon.com/kms/latest/APIReference/API_RotationsListEntry.html) 中的`KeyMaterialState`描述）。處於 `PENDING_MULTI_REGION_IMPORT_AND_ROTATION`或 `PENDING_ROTATION` 狀態的金鑰材料不會永久與金鑰相關聯，而且可以在不影響金鑰在密碼編譯操作中的可用性的情況下刪除。

## 重新匯入金鑰材料
<a name="reimport-key-material"></a>

如果您管理的 KMS 金鑰含有已匯入的金鑰資料，您可能需要重新匯入金鑰資料。您可能重新匯入金鑰材料來取代即將過期或已刪除的金鑰材料，或變更金鑰材料的過期模型或過期日期。

您可以根據自己的安全性需求來排程或隨時重新匯入金鑰材料。不必等到金鑰材料到期或接近到期時間。

重新匯入金鑰材料的程序與您第一次用來匯入金鑰材料的程序相同，但有下列例外。
+ 使用現有的 KMS 金鑰，而不是建立新的 KMS 金鑰。您可以略過匯入程序的[步驟 1](importing-keys-create-cmk.md)。
+ 重新匯入金鑰資料時，您可以變更過期模型和過期日期。對於對稱加密金鑰，您也可以變更金鑰材料描述。

  對於多區域金鑰，您只能在主要區域金鑰上設定或變更金鑰材料描述。 AWS KMS 會自動將金鑰材料描述傳播至複本區域金鑰。

每次將金鑰材料匯入 KMS 金鑰時，您需要為 KMS 金鑰[下載並使用新的包裝金鑰和匯入字符](importing-keys-get-public-key-and-token.md)。包裝程序不會影響金鑰資料內容，因此您可採用不同包裝公有金鑰和不同包裝演算法來匯入相同金鑰資料。

## 匯入金鑰材料 (主控台)
<a name="importing-keys-import-key-material-console"></a>

您可以使用 AWS 管理主控台 匯入金鑰材料。

1. 如您在 **Upload your wrapped key material** (上傳包裝的金鑰資料) 頁面，請跳至 [Step 10](#id-key-materials-step)。

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. 針對您已下載公開金鑰和匯入字符的 KMS 金鑰，選擇其金鑰 ID 或別名。

1. 選擇 **Cryptographic configuration** (密碼編譯組態) 索引標籤並檢視其值。這些索引標籤位於 **General configuration** (一般組態) 區段下 KMS 金鑰的詳細資訊頁面上。

   您僅能將金鑰資料匯入 **Origin** (來源) 是 **EXTERNAL** (外部 (匯入金鑰材料)) 的 KMS 金鑰。如需有關建立具有匯入金鑰材料之 KMS 金鑰的資訊，請參閱 [匯入金鑰的 AWS KMS 金鑰材料](importing-keys.md)。

1. 根據您的金鑰類型選擇適當的標籤。
   + 對於非對稱和 HMAC 金鑰，請選擇**金鑰材料**索引標籤。
   + 針對對稱加密金鑰，選擇**金鑰材料和輪換**索引標籤。

1. 選擇匯入動作。
   + 針對非對稱和 HMAC 金鑰，選擇**匯入金鑰材料**。
   + 針對對稱加密金鑰，選擇下列其中一項：
     + **匯入初始金鑰材料** （如果尚未匯入金鑰材料）
     + **匯入新的金鑰材料** （新增用於輪換的新材料）
     + **重新匯入金鑰材料** （可從金鑰材料資料表中的**動作**功能表取得）
**注意**  
對於多區域金鑰，您必須先將新的金鑰材料匯入主要區域金鑰。然後，將相同的金鑰材料匯入每個複本區域金鑰。  
對於主要多區域金鑰，**金鑰資料**資料表包含**複本匯入狀態**欄，顯示所有複本區域的匯入狀態 （例如，匯入 3 個中的 0 個）。選擇複本匯入狀態值，以開啟顯示每個複本區域的匯入狀態的模態。模態為尚未**匯入新金鑰材料**的複本區域提供匯入金鑰材料連結。

1. 如您已下載金鑰資料、匯入字符並加密金鑰資料，請選擇 **Next** (下一步)。
**注意**  
對於多區域金鑰，您必須先將新的金鑰材料匯入主要區域金鑰。然後，您可以將相同的金鑰材料匯入複本區域金鑰。

1. <a name="id-key-materials-step"></a>在 **Encrypted key material and import token** (加密金鑰資料與匯入字符) 區段，執行下列動作。

   1. 在 **Wrapped key material** (包裝的金鑰資料)，選擇 **Choose file** (選擇檔案)。然後，上傳內含包裝 (加密) 金鑰資料的檔案。

   1. 在 **Import token** (匯入字符)，選擇 **Choose file** (上傳檔案)。上傳內含您[下載](importing-keys-get-public-key-and-token.md#importing-keys-get-public-key-and-token-console)之匯入符記的檔案。

1. 在 **Expiration option (過期選項)** 區段中，您可以決定金鑰材料是否會過期。若要設定過期日期和時間，請選擇 **Key material expires (金鑰資料過期)**，然後使用行事曆選取日期和時間。您可以指定自目前日期和時間起的日期，但最長不超過 365 天。

1. 對於對稱加密金鑰，您可以選擇指定要匯入之金鑰資料的描述。

1. 選擇**匯入金鑰材料**。

## 匯入金鑰材料 (AWS KMS API)
<a name="importing-keys-import-key-material-api"></a>

若要匯入金鑰材料，請使用 [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) 操作。以下範例使用 [AWS CLI](https://aws.amazon.com/cli/)，但您可以使用任何支援的程式設計語言。

若要使用此範例：

1. 將 `{{1234abcd-12ab-34cd-56ef-1234567890ab}}` 取代為您在下載公有金鑰和匯入字符時指定的 KMS 金鑰的金鑰 ID。若要識別 KMS 金鑰，請使用它的[金鑰 ID](concepts.md#key-id-key-id) 或[金鑰 ARN](concepts.md#key-id-key-ARN)。不能對此操作使用[別名](concepts.md#key-id-alias-name)或[別名 ARN](concepts.md#key-id-alias-ARN)。

1. 將 `{{EncryptedKeyMaterial.bin}}` 取代為包含加密金鑰材料的檔案名稱。

1. 將 `{{ImportToken.bin}}` 取代為包含匯入符記的檔案名稱。

1. 如果希望匯入的金鑰材料過期，請將 `expiration-model` 參數設定為其預設值 `KEY_MATERIAL_EXPIRES`，或省略 `expiration-model` 參數。然後，將 `valid-to` 參數的值取代為您希望金鑰材料到期的日期和時間。日期和時間最多可以是自提出請求之日起的 365 天內。

   ```
   $ aws kms import-key-material --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}} \
       --encrypted-key-material fileb://{{EncryptedKeyMaterial.bin}} \
       --import-token fileb://{{ImportToken.bin}} \
       --expiration-model {{KEY_MATERIAL_EXPIRES}} \
       --valid-to {{2023-06-17T12:00:00-08:00}}
   ```

   如果不希望匯入的金鑰材料過期，請將 `expiration-model` 參數的值設定為 `KEY_MATERIAL_DOES_NOT_EXPIRE`，並省略命令中的 `valid-to` 參數。

   ```
   $ aws kms import-key-material --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}} \
       --encrypted-key-material fileb://{{EncryptedKeyMaterial.bin}} \
       --import-token fileb://{{ImportToken.bin}} \
       --expiration-model {{KEY_MATERIAL_DOES_NOT_EXPIRE}}
   ```

1. 如果您想要匯入新的金鑰材料，但先前未與 KMS 金鑰相關聯，請將 `ImportType` 參數設定為 `NEW_KEY_MATERIAL`。此選項只能與對稱加密金鑰搭配使用。對於這些金鑰，您也可以在下列命令列範例中，使用選用`KeyMaterialDescription`參數來設定匯入金鑰資料的描述：

   ```
   $ aws kms import-key-material --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}} \
       --encrypted-key-material fileb://{{EncryptedKeyMaterial.bin}} \
       --import-token fileb://{{ImportToken.bin}} \
       --expiration-model {{KEY_MATERIAL_EXPIRES}} \
       --valid-to {{2023-06-17T12:00:00-08:00}} \
       --import-type NEW_KEY_MATERIAL \
       --key-material-description {{"Q2 2025 Rotation"}}
   ```

1. 對於多區域金鑰，您只能在主要區域金鑰上設定或變更金鑰材料描述。 AWS KMS 會自動將金鑰材料描述傳播至複本區域金鑰。

**提示**  
如果命令未成功，您可能看到 `KMSInvalidStateException` 或 `NotFoundException`。您可重試請求。