本主題涵蓋將金鑰匯入 Cloud Key Management Service 做為新金鑰版本的概念資訊。如需逐步操作說明,請參閱匯入金鑰版本。
簡介
您可能會使用在地端部署或外部金鑰管理系統中建立的現有加密編譯金鑰,如果您將應用程式遷移至Google Cloud ,或是在現有Google Cloud 應用程式中新增加密編譯支援,可以將相關金鑰匯入 Cloud KMS。
- 您可以匯入 Cloud HSM 金鑰,或匯入 Cloud KMS 中的軟體金鑰。
- 金鑰內容會經過包裝,以保護傳輸中的資料。您可以使用 Google Cloud CLI 自動包裝金鑰,也可以手動包裝金鑰。
- Google Cloud 只能在匯入工作的範圍內存取包裝金鑰。 對於 Cloud HSM 金鑰,包裝金鑰絕不會位於 Cloud HSM 以外的地方。
本主題將詳述匯入金鑰的限制和規定,並概略說明金鑰匯入的運作方式。
限制與需求
請參閱這些章節,確認金鑰可以匯入 Cloud KMS。
支援的金鑰格式
- 用於加密的對稱金鑰: 匯入的對稱金鑰必須是 16 位元組 (僅適用於原始對稱加密) 或 32 位元組的二進位資料,且不得經過編碼。 如果金鑰採用十六進位或 Base64 編碼,則必須先解碼,才能匯入金鑰。
- 用於簽署的對稱金鑰 (MAC 金鑰):匯入的 HMAC 簽署金鑰長度必須等於所用加密編譯雜湊函式的輸出長度 (例如,HMAC-SHA256 金鑰長度必須為 32 個位元組),且不得經過編碼。如果金鑰採用十六進位或 Base64 編碼,您必須先解碼,才能嘗試匯入。
- 用於加密或簽署的非對稱金鑰:匯入的非對稱金鑰必須採用 PKCS #8 格式,且必須經過 DER 編碼。PCKS #8 格式定義於 RFC 5208。DER 編碼定義於國際電信聯盟 X.680。非對稱金鑰必須使用 Cloud KMS 支援的長度和演算法組合。
金鑰建立後,就無法變更部分屬性,例如金鑰長度。在這些情況下,金鑰無法匯入 Cloud KMS。
如要驗證金鑰並重新格式化以便匯入,請參閱「將金鑰格式化以便匯入」。
支援的防護等級
您可以將金鑰匯入 Cloud KMS 金鑰或 Cloud HSM 金鑰,方法是將金鑰的防護等級設為SOFTWARE
或 HSM
。Cloud HSM 金鑰會產生額外的費用。
您無法匯入至 Cloud External Key Manager 金鑰。
支援的包裝金鑰大小
建立匯入工作時,您可以設定匯入工作的匯入方法,控管用於保護金鑰傳輸至 Google Cloud 的包裝金鑰大小。包裝金鑰的預設大小為 3072。如有特定需求,您可以將匯入工作設定為改用 4096 位元金鑰。
金鑰匯入的運作方式
本節說明匯入金鑰時會發生什麼情況。如果您使用自動包裝或手動包裝金鑰,流程的某些部分會有所不同。建議使用自動包裝功能。如需具體操作說明,請參閱匯入金鑰版本。如需在匯入前手動包裝金鑰的具體操作說明,請參閱在 Linux 上使用 OpenSSL 包裝金鑰。
下圖說明使用自動金鑰包裝功能匯入金鑰的程序。下圖所示的階段將在本節中說明。
準備匯入金鑰。
首先,請建立目標金鑰環和金鑰,最終匯入工作和匯入的金鑰內容會包含在其中。此時,目標金鑰不含任何金鑰版本。
接著,請建立匯入工作。匯入工作會定義匯入金鑰內容的目標金鑰環和金鑰。匯入工作也會定義匯入方法,也就是用於建立包裝金鑰的演算法,可在匯入要求期間保護金鑰內容。
- 公開金鑰用於在用戶端包裝要匯入的金鑰。
- 私密金鑰會儲存在 Google Cloud 中,並在金鑰抵達 Google Cloud 專案後,用於將其解除包裝。
這種做法可避免 Google 在匯入工作範圍外,解除您金鑰內容的包裝。
金鑰必須先經過加密包裝,才能傳輸給 Google。如要自動包裝、傳輸及匯入金鑰,大多數使用者都可以使用 gcloud CLI,如後續步驟所述。如果您有法規遵循或法規要求,需要手動包裝金鑰,可以在這個時間點執行。如要在本機系統上手動包裝金鑰,請按照下列步驟操作:
- 設定 OpenSSL。
- 針對每個匯入工作,下載與該工作相關聯的包裝金鑰。
- 為每個金鑰設定數個環境變數,並包裝金鑰。
在匯入工作到期前 (最多三天),您可以使用該工作發出匯入要求,匯入一或多個金鑰。匯入要求期間:
- 如果金鑰不是手動包裝,Google Cloud CLI 會從 Google Cloud 將匯入工作的公開金鑰下載到本機系統,然後使用公開金鑰和與用戶端相關聯的私密金鑰,包裝本機金鑰內容。
- 包裝的金鑰內容會傳輸至 Google Cloud專案。
- 系統會使用匯入工作的私密金鑰解包金鑰內容,並將其做為目標金鑰環的新版本插入。這項作業不可分割。
- 如果是對稱金鑰,您可以將匯入的金鑰版本設為主要金鑰版本。
匯入要求成功完成後,您可以使用匯入的金鑰版本保護 Google Cloud中的資料。