本指南說明如何將加密編譯金鑰匯入 Cloud HSM 或 Cloud Key Management Service,做為新的金鑰版本。
如要進一步瞭解匯入金鑰的詳細資料,包括限制,請參閱金鑰匯入。
完成本指南的步驟只需 5 到 10 分鐘,不包括「事前準備」步驟。手動包裝金鑰會增加工作複雜度。
事前準備
建議您建立新專案來測試這項功能,方便在測試後清除資料,並確保您具備匯入金鑰所需的 Identity and Access Management (IAM) 權限。
匯入金鑰前,您必須先準備專案、本機系統和金鑰本身。
準備專案
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自體驗產品的實際應用成效。新客戶還能獲得價值 $300 美元的免費抵免額,能用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
執行匯入作業的使用者必須具備下列 IAM 權限,才能建立金鑰環、金鑰和匯入工作。如果使用者不是專案擁有者,您可以將下列兩項預先定義的角色指派給使用者:
roles/editorroles/cloudkms.importer
如要進一步瞭解 Cloud KMS 的可用 IAM 角色和權限,請參閱「權限和角色」。
準備本機系統
選擇下列其中一個選項,準備好本機系統。建議大多數使用者採用自動金鑰包裝。
- 如要允許 Google Cloud CLI 自動包裝金鑰,再傳輸至 Google Cloud,請務必在本機系統安裝 Pyca 密碼編譯程式庫。匯入工作會使用 Pyca 程式庫,在將金鑰傳送至 Google Cloud前,先在本機包裝並保護金鑰。
- 如要手動包裝金鑰,請務必設定 OpenSSL 以手動包裝金鑰。
準備金鑰
確認系統支援金鑰的演算法和長度。金鑰可用的演算法取決於金鑰是用於對稱式加密、非對稱式加密或非對稱式簽署,以及金鑰是儲存在軟體或 HSM 中。您可以在匯入要求中指定金鑰的演算法。
此外,您也必須驗證金鑰的編碼方式,並視需要進行調整。
金鑰版本建立或匯入後,就無法變更下列項目:
保護層級會指出金鑰是保存在軟體、多租戶 HSM、單一租戶 HSM,還是外部金鑰管理系統中。金鑰材料無法從其中一個儲存環境移至另一個環境。金鑰的所有版本都具有相同的保護層級。
用途會指出金鑰版本是否用於對稱式加密、非對稱式加密或非對稱式簽署。金鑰用途會限制可用於建立金鑰版本的演算法。金鑰的所有版本用途都相同。
如果沒有要匯入的金鑰,但想驗證金鑰匯入程序,可以在本機系統上建立對稱金鑰,方法是使用下列指令:
openssl rand 32 > ${HOME}/test.bin
這組金鑰僅供測試,以這種方式建立的金鑰可能不適合用於正式環境。
如需手動包裝金鑰,請先完成這項操作,再繼續執行本指南中的程序。
建立指定鍵和金鑰環
Cloud KMS 金鑰是容器物件,內含零或多個金鑰版本。每個金鑰版本都包含一個加密編譯金鑰。
將金鑰匯入 Cloud KMS 或 Cloud HSM 時,匯入的金鑰會成為現有 Cloud KMS 或 Cloud HSM 金鑰的新金鑰版本。在本指南的其餘部分,這個金鑰稱為「目標金鑰」。您必須先建立目標金鑰,才能將金鑰內容匯入其中。
匯入金鑰版本不會影響該金鑰的現有版本。不過,建議您在測試匯入金鑰時建立空白金鑰。空白金鑰沒有版本、未啟用,且無法使用。
您可以選擇指定新建立的金鑰只能包含匯入的版本,避免在 Cloud KMS 中意外產生新版本。
金鑰環上已有金鑰;在本指南中,這個金鑰環稱為「目標金鑰環」。目標金鑰環的位置會決定匯入後金鑰材料的可用位置。在部分地點,您無法建立或匯入 Cloud HSM 金鑰。金鑰建立後,就無法移至其他金鑰環或位置。
請按照下列步驟,使用 Google Cloud CLI 或 Google Cloud 控制台,在新的金鑰環上建立空白金鑰。
控制台
前往 Google Cloud 控制台的「Key Management」頁面。
按一下 [Create key ring] (建立金鑰環)。
在「Key ring name」(金鑰環名稱) 欄位中輸入金鑰環的名稱。
在「位置類型」下方,選取位置類型和位置。
點選「建立」。「Create key」(建立金鑰) 頁面隨即開啟。
在「金鑰名稱」欄位中,輸入金鑰名稱。
在「防護等級」中,選取「軟體」、「HSM」或「單一租戶 HSM」。
如果您選取「單一租戶 HSM」,請選取要建立金鑰的「單一租戶 HSM 執行個體」。
在「金鑰內容」部分,選取「匯入的金鑰」,然後按一下「繼續」。這樣一來,系統就不會建立初始金鑰版本。
設定金鑰的「用途」和「演算法」,然後點選「繼續」。
選用:如果希望這個金鑰只包含匯入的金鑰版本,請選取「Restrict key versions to import only」(將金鑰版本設定為僅限匯入)。這樣可避免您在 Cloud KMS 中誤建新的金鑰版本。
選用:匯入的金鑰預設會停用自動輪替功能。如要啟用自動輪替功能,請從「金鑰輪替週期」欄位選取值。
如果啟用自動輪替,Cloud KMS 會產生新的金鑰版本,且匯入的金鑰版本在輪替後將不再是預設金鑰版本。
點選「建立」。
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版本的 Google Cloud CLI。
建立目標金鑰環。選擇與您想使用的防護等級相容的位置。如要進一步瞭解支援的位置,請參閱「Cloud KMS 位置」。
gcloud kms keyrings create KEY_RING \ --location LOCATION
如要進一步瞭解如何建立金鑰環,請參閱這篇文章。
使用
kms keys create指令搭配--skip-initial-version-creation旗標,建立指定鍵。這會建立沒有初始金鑰版本的金鑰,因此匯入的金鑰內容是版本1。使用--import-only標記,防止 Cloud KMS 為新金鑰版本產生金鑰實質。設定這個標記後,這組金鑰的新版本就必須匯入。以--import-only建立的金鑰必須手動輪替。gcloud kms keys create KEY_NAME \ --location LOCATION \ --keyring KEY_RING \ --purpose PURPOSE \ --protection-level PROTECTION_LEVEL \ --skip-initial-version-creation \ --import-only
更改下列內容:
KEY_NAME:要用於金鑰的名稱。LOCATION:金鑰環的位置。KEY_RING:要在其中建立金鑰的金鑰環。PURPOSE:您要用於金鑰的用途。PROTECTION_LEVEL:要用於金鑰的保護層級,例如HSM。
如要建立單一租戶 Cloud HSM 金鑰,請將
--cryptoKeyBackend旗標新增至這個指令,並新增要匯入金鑰的單一租戶 Cloud HSM 執行個體資源 ID:--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,並安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取控管,請參閱「存取 Cloud KMS API」。
建立新的金鑰環:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?keyRingId=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --header "x-goog-user-project: PROJECT_ID" \ --data "{}"詳情請參閱
KeyRing.createAPI 說明文件。建立僅供匯入的空白金鑰:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?cryptoKeyId=KEY_NAME&skipInitialVersionCreation=true" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --header "x-goog-user-project: PROJECT_ID" \ --data "{"purpose":"PURPOSE", "importOnly": "true", "versionTemplate":{"protectionLevel":"PROTECTION_LEVEL","algorithm":"ALGORITHM"}}"詳情請參閱
CryptoKey.createAPI 說明文件。如要在單一租戶 Cloud HSM 中建立金鑰,請將
cryptoKeyBackend欄位新增至指令主體,並新增要匯入金鑰的單一租戶 Cloud HSM 執行個體資源 ID:"crypto-key-backend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
金鑰環和金鑰現在已存在,但金鑰不含金鑰素材,也沒有版本,且未啟用。接著,請建立匯入工作。
建立匯入工作
匯入工作會定義匯入金鑰的特性,包括金鑰匯入後無法變更的屬性。
防護等級會定義這項匯入工作匯入的金鑰,是會儲存在軟體、多租戶 HSM、單一租戶 HSM,還是外部金鑰管理系統。金鑰匯入後,保護等級就無法變更。
匯入方法會定義用於建立包裝金鑰的演算法,在從本機系統傳輸至目標 Google Cloud 專案期間,保護匯入的金鑰。您可以選擇 3072 位元或 4096 位元的 RSA 金鑰。除非有特定需求,否則建議使用 3072 位元包裝金鑰。
您可以使用 gcloud CLI、Google Cloud 控制台或 Cloud Key Management Service API 建立匯入工作。
控制台
前往 Google Cloud 控制台的「Key Management」頁面。
按一下目標金鑰環的名稱。
將「防護等級」設為「軟體」、「HSM」或「單一租戶 HSM」。使用與目標金鑰相同的保護等級。
按一下 [Create import job] (建立匯入工作)。
在「Name」(名稱) 欄位中,輸入匯入工作的名稱。
在「匯入方法」下拉式選單中,將匯入方法設為「3072 位元 RSA」或「4096 位元 RSA」。
點選「建立」。
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版本的 Google Cloud CLI。
使用類似下列的指令建立匯入工作。
gcloud kms import-jobs create IMPORT_JOB \ --location LOCATION \ --keyring KEY_RING \ --import-method IMPORT_METHOD \ --protection-level PROTECTION_LEVEL
- 使用與目標金鑰相同的金鑰環和位置。
- 將保護層級設為與目標金鑰相同的值。
- 將匯入方法設為下列任一選項:
rsa-oaep-3072-sha1-aes-256rsa-oaep-4096-sha1-aes-256rsa-oaep-3072-sha256-aes-256rsa-oaep-4096-sha256-aes-256rsa-oaep-3072-sha256rsa-oaep-4096-sha256
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,並安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,並安裝 Cloud KMS Python SDK。
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取控管,請參閱「存取 Cloud KMS API」。
如要建立匯入工作,請使用 ImportJobs.create 方法:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/importJobs?import_job_id=IMPORT_JOB_ID" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"import_method": "IMPORT_METHOD", "protection_level": "PROTECTION_LEVEL"}'
更改下列內容:
檢查匯入工作的狀態
匯入工作的初始狀態為 PENDING_GENERATION。當狀態為 ACTIVE 時,您可以使用該工作匯入金鑰。
匯入工作會在三天後失效。如果匯入工作已過期,請建立新的工作。
您可以使用 Google Cloud CLI、Google Cloud 控制台或 Cloud Key Management Service API,查看匯入工作的狀態。
控制台
前往 Google Cloud 控制台的「Key Management」頁面。
按一下包含匯入工作的金鑰環名稱。
按一下頁面頂端的 [Import Jobs] (匯入工作) 分頁標籤。
狀態會顯示在該匯入作業名稱旁的 [Status] (狀態) 下方。
gcloud
如要在指令列使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
匯入工作處於有效狀態時,您可以使用該工作匯入金鑰。這可能需要幾分鐘的時間。使用這項指令確認匯入工作是否處於啟用狀態。使用您建立匯入工作的所在位置和金鑰環。
gcloud kms import-jobs describe IMPORT_JOB \ --location LOCATION \ --keyring KEY_RING \ --format="value(state)"
輸出結果會與下列內容相似:
state: ACTIVE
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,並安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取控管,請參閱「存取 Cloud KMS API」。
如要檢查匯入工作的狀態,請使用
ImportJobs.get
方法:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/importJobs/IMPORT_JOB_ID" \
--request "GET" \
--header "authorization: Bearer TOKEN"
匯入工作生效後,您就可以要求匯入金鑰。
防止修改匯入工作
匯入工作會決定匯入金鑰的許多特徵,包括金鑰的演算法,以及匯入的金鑰是 HSM 金鑰還是軟體金鑰。您可以設定 IAM 權限,禁止使用者建立匯入工作,但允許他們使用匯入工作匯入金鑰。
- 只將
importjobs.create權限授予主要管理員。 - 將特定匯入工作的
importjobs.useToImport權限授予給將使用該工作匯入金鑰的運算子。 - 建立匯入工作時,請為透過該工作匯入的金鑰版本指定防護等級和演算法。
在匯入工作到期前,如果使用者擁有 importjobs.useToImport,但沒有特定匯入工作的 importjobs.create 權限,則可以匯入金鑰,但無法修改匯入工作的特性。
匯入金鑰
檢查匯入工作的狀態後,即可提出匯入要求。
視您要讓 Google Cloud CLI 自動包裝金鑰,還是已手動包裝金鑰而定,您會使用不同的旗標來提出匯入要求。
無論您是手動或自動包裝金鑰,都必須將演算法設為支援的演算法,且該演算法必須符合要匯入的實際金鑰長度,並指定金鑰用途。
用途為
ENCRYPT_DECRYPT的金鑰使用google-symmetric-encryption演算法,長度為 32。用途為
ASYMMETRIC_DECRYPT或ASYMMETRIC_SIGN的金鑰支援多種演算法和長度。金鑰建立後,用途即無法變更,但後續建立的金鑰版本長度可以與初始金鑰版本不同。
自動包裝及匯入金鑰
如要使用自動換行功能,必須使用 Google Cloud CLI。
請使用類似下列的指令。將 --target-key-file 設為要包裝及匯入的未包裝金鑰位置。請勿設定 --wrapped-key-file。
您可以選擇將 --public-key-file 旗標設為公開金鑰已下載的位置。匯入大量金鑰時,這可避免在每次匯入期間下載公開金鑰。舉例來說,您可以編寫指令碼,下載一次公開金鑰,然後在匯入每個金鑰時提供金鑰位置。
gcloud kms keys versions import \
--import-job IMPORT_JOB \
--location LOCATION \
--keyring KEY_RING \
--key KEY_NAME \
--algorithm ALGORITHM \
--target-key-file PATH_TO_UNWRAPPED_KEY
金鑰會由與匯入工作相關聯的包裝金鑰包裝、傳輸至 Google Cloud,並匯入為目標金鑰的新金鑰版本。
匯入手動包裝的金鑰
請按照本節的操作說明,匯入手動包裝的金鑰。將 --wrapped-key-file 設為您手動包裝的金鑰位置。請勿設定 --target-key-file。
您可以視需要將 --public-key-file 旗標設為公開金鑰的下載位置。匯入大量金鑰時,這可避免在每次匯入期間下載公開金鑰。舉例來說,您可以編寫指令碼,下載一次公開金鑰,然後在匯入每個金鑰時提供金鑰位置。
控制台
前往 Google Cloud 控制台的「Key Management」頁面。
按一下包含匯入工作的金鑰環名稱。系統會顯示目標金鑰,以及金鑰環上的所有其他金鑰。
按一下目標金鑰的名稱,然後點選「匯入金鑰版本」。
在「Select import job」(選取匯入工作) 下拉式選單中,選取您的匯入工作。
在「Upload the wrapped key」(上傳經過包裝的金鑰) 選取器中,選取您已包裝的金鑰。
如果您要匯入非對稱金鑰,請在「Algorithm」(演算法) 下拉式選單中選取某個演算法。「匯入金鑰版本」頁面應如下所示:

按一下「匯入」。
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版本的 Google Cloud CLI。
請使用類似下方的指令。
gcloud kms keys versions import \ --import-job IMPORT_JOB \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --algorithm ALGORITHM \ --wrapped-key-file PATH_TO_WRAPPED_KEY
詳情請參閱 gcloud kms keys versions import --help 指令的輸出內容。
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,然後安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取控管,請參閱「存取 Cloud KMS API」。
使用 cryptoKeyVersions.import 方法匯入金鑰。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions:import" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"importJob": "IMPORT_JOB_ID", "algorithm": "ALGORITHM", "wrappedKey": "WRAPPED_KEY"}'
更改下列內容:
IMPORT_JOB_ID:對應匯入作業的完整資源名稱。
ALGORITHM:要匯入的金鑰的
algorithm,類型為CryptoKeyVersionAlgorithm。WRAPPED_KEY:以 Base64 格式手動包裝的金鑰。
系統會啟動金鑰匯入要求。你可以監控狀態。
查看匯入金鑰版本的狀態
匯入金鑰版本的初始狀態為 PENDING_IMPORT。如果狀態為 ENABLED,表示金鑰版本已成功匯入。如果匯入失敗,狀態會是 IMPORT_FAILED。
您可以使用 Google Cloud CLI、Google Cloud 控制台或 Cloud Key Management Service API,檢查匯入要求的狀態。
控制台
前往 Google Cloud 控制台的「Key Management」(金鑰管理) 頁面。
按一下包含匯入工作的金鑰環名稱。
按一下頁面頂端的 [Import Jobs] (匯入工作) 分頁標籤。
狀態會顯示在該匯入作業名稱旁的 [Status] (狀態) 下方。
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版本的 Google Cloud CLI。
請使用 versions list 指令來查看狀態。使用您在本主題稍早建立的相同位置、目標金鑰環和目標金鑰。
gcloud kms keys versions list \ --keyring KEY_RING \ --location LOCATION \ --key KEY_NAME
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,然後安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,並安裝 Cloud KMS Python SDK。
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取控管,請參閱「存取 Cloud KMS API」。
呼叫 ImportJob.get 方法,並檢查 state 欄位。如果 state 為 PENDING_GENERATION,代表匯入工作仍在建立中。請定期重新查看狀態,直到狀態變成 ACTIVE 為止。
匯入初始金鑰版本後,金鑰的狀態會變更為「有效」。如果是對稱金鑰,您必須先將匯入的金鑰版本設為主要版本,才能使用金鑰。
對稱金鑰:設定主要版本
匯入對稱金鑰時必須執行這個步驟,非對稱金鑰則不適用。非對稱金鑰沒有主要版本。您必須使用 Google Cloud CLI 設定主要版本。
gcloud kms keys set-primary-version KEY_NAME\
--location=LOCATION\
--keyring=KEY_RING\
--version=KEY_VERSION
重新匯入先前刪除的金鑰
Cloud Key Management Service 支援金鑰重新匯入作業,可讓您提供原始金鑰內容,將先前匯入的 DESTROYED 或 IMPORT_FAILED 狀態金鑰版本還原為 ENABLED 狀態。如果初始匯入失敗,導致從未匯入原始金鑰材料,則可提供任何金鑰材料。
限制
- 只能重新匯入先前匯入的
CryptoKeyVersions。 - 如果先前已成功匯入版本,重新匯入的金鑰內容必須與原始金鑰內容完全相符。
CryptoKeyVersions在推出這項功能前毀損的裝置無法重新匯入。如果版本符合重新匯入資格,CryptoKeyVersion的reimport_eligible欄位會是true,否則會是false。
軟體和 Cloud HSM 金鑰可以重新匯入,但外部金鑰無法重新匯入。
重新匯入已刪除的金鑰
按照「建立匯入工作」一文中的步驟,建立 ImportJob 以重新匯入。只要防護等級與原始防護等級相符,您可以使用現有
ImportJob或新的 ImportJob。
控制台
gcloud
如要在指令列使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
使用原始金鑰內容重新匯入金鑰版本。
gcloud kms keys versions import \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --version KEY_VERSION \ --algorithm ALGORITHM \ --import-job IMPORT_JOB \ --target-key-file PATH_TO_KEY \
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取控管,請參閱「存取 Cloud KMS API」。
在
cryptoKeyVersions.import方法的請求主體中,將cryptoKeyVersion欄位設為要匯入版本的金鑰版本名稱。這必須是加密金鑰的子項。在要求主體中,將
algorithm欄位設為要匯入的金鑰演算法。這個值必須與原始金鑰版本的演算法相符。algorithm欄位屬於CryptoKeyVersionAlgorithm類型。在要求主體中,將
wrappedKeyMaterial欄位設為已包裝的金鑰內容。呼叫
cryptoKeyVersions.import方法。cryptoKeyVersions.import回應屬於CryptoKeyVersion類型。金鑰匯入成功後,狀態會是ENABLED,您可以在 Cloud KMS 中使用。
後續步驟
- 驗證匯入的金鑰。確認匯入的金鑰內容與原始金鑰相同後,即可使用該金鑰簽署或保護資料。
- 排解金鑰匯入失敗的問題。