本頁面說明如何排定 Cloud Key Management Service 金鑰版本的永久銷毀時間。在 Cloud KMS 中,您用來加密、解密、簽署及驗證資料的加密編譯金鑰內容,會儲存在金鑰版本中。一個金鑰可以有零或多個金鑰版本。輪替金鑰時,系統會建立新的金鑰版本。
刪除金鑰版本表示金鑰內容會永久刪除。 銷毀金鑰版本時,系統不會刪除金鑰名稱和金鑰版本號碼等其他詳細資料。金鑰銷毀後,以該金鑰版本加密的資料就無法解密。
唯一的例外是重新匯入金鑰,您只要提供相同的原始金鑰內容,即可還原先前匯入的金鑰。
由於金鑰銷毀作業通常無法復原,因此 Cloud KMS 不允許您立即銷毀金鑰版本。而是排定時間刪除金鑰版本。金鑰版本會維持在「已安排刪除」狀態一段可設定的時間。在排定刪除的時間範圍內,您可以還原金鑰版本來取消刪除。
預設的排定刪除時間為 30 天。您可以在建立金鑰時,為金鑰設定自訂的排定銷毀時間長度。貴機構可以在機構政策中設定「每個金鑰的最短刪除排程時長」限制,強制執行最短刪除排程時長。
您也可以使用 Identity and Access Management (IAM) 管理金鑰存取權。IAM 作業會在幾秒內保持一致。詳情請參閱「使用 IAM」。
您也可以暫時停用金鑰版本。建議您先停用金鑰版本,再排定刪除時間,確保金鑰能安全刪除。視貴機構政策而定,您可能需要先停用金鑰版本,才能排定刪除時間。如要進一步瞭解如何使用機構組織政策控管金鑰版本刪除作業,請參閱「控管金鑰版本刪除作業」。
本文其餘部分會將排定刪除金鑰時間稱為刪除金鑰,即使刪除作業並非立即執行。
事前準備
瞭解風險
金鑰版本一經刪除即無法復原。如果刪除仍需使用的金鑰版本,可能會造成以下風險:
服務中斷:如果您毀損啟動容器或執行個體所需的金鑰,服務或應用程式可能會無法使用。
永久遺失資料:如果您刪除用於加密資料的金鑰,該資料就會無法存取。如果金鑰遭到銷毀,以該金鑰加密的資料就會加密銷毀。在某些情況下,銷毀金鑰可能會導致加密資源永久刪除。
法規或法規遵循問題:如果您在保留期限屆滿前,刪除存取受保留期限約束資料所需的金鑰,可能會違反法規或法規遵循規定。
必要的角色
如要取得銷毀及還原金鑰版本所需的權限,請要求管理員授予您金鑰的「Cloud KMS 管理員」 (roles/cloudkms.admin
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
檢查是否正在使用金鑰版本
銷毀金鑰版本之前,請完成下列步驟,確認該版本是否正在使用中:
查看金鑰使用情形的追蹤詳細資料。如果任何資源受到您要銷毀的金鑰版本保護,請使用其他金鑰版本重新加密。
針對可能使用金鑰版本的任何服務或應用程式,開啟記錄。
在含有金鑰的 Cloud KMS 專案中啟用記錄。
停用金鑰版本。停用金鑰版本後,該版本就無法再使用。停用金鑰版本後,任何使用該金鑰版本的嘗試都會失敗。
請監控記錄,確認沒有任何應用程式或服務仍依賴您停用的金鑰版本。如有任何錯誤指出無法存取金鑰版本,請將應用程式或資源設為使用其他金鑰版本。
銷毀金鑰版本前,您要監控記錄的時間長度取決於金鑰類型、使用模式和敏感程度。舉例來說,如果某個金鑰版本用於每季執行的程序,請先停用該版本,等到程序順利完成後再刪除。
根據適用的法規遵循規定,檢查金鑰的使用情形。 舉例來說,金鑰版本和使用該版本加密的資料可能須遵守資料保留期限。
這些步驟有助於判斷是否仍需要金鑰,但無法保證不再需要金鑰版本。貴機構應實施程序和準則,確保金鑰版本毀損不會造成負面影響。
刪除金鑰版本
您可以刪除已啟用或已停用的金鑰版本。
控制台
前往 Google Cloud 控制台的「Key Management」頁面。
找出要安排時間表進行刪除的金鑰版本,然後勾選旁邊的方塊。
按一下頁首的「Destroy」。
在確認提示中輸入金鑰名稱,然後按一下「Schedule Destruction」(排定銷毀作業)。
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
gcloud kms keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
更改下列內容:
KEY_VERSION
:要銷毀的金鑰版本版本號碼。KEY_NAME
:要銷毀金鑰版本的金鑰名稱。KEY_RING
:金鑰所屬金鑰環的名稱。LOCATION
:金鑰環的 Cloud KMS 位置。
如要瞭解所有旗標和可能的值,請使用 --help
旗標執行指令。
C#
如要執行這段程式碼,請先設定 C# 開發環境,然後安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,然後安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,然後安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何在 Google Cloud上使用 PHP,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,然後安裝 Cloud KMS Ruby SDK。
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取權控管,請參閱「存取 Cloud KMS API」一文。
呼叫 CryptoKeyVersions.destroy 方法,刪除金鑰版本。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \ --request "POST" \ --header "authorization: Bearer TOKEN"
如果無法銷毀金鑰版本,可能是因為貴機構規定必須先停用金鑰版本,才能銷毀。請先停用金鑰版本,再銷毀。
提交銷毀要求後,金鑰版本的狀態會變成「已安排銷毀」。金鑰的設定刪除排程時間過後,金鑰版本狀態會變成「已刪除」,表示系統已開始從有效系統中邏輯刪除金鑰材料,且客戶無法復原金鑰材料。自預定銷毀時間起,金鑰資料最多可在 Google 系統中保留 45 天。
如要在金鑰版本排定銷毀時間時接收快訊,請參閱「使用 Cloud Monitoring 搭配 Cloud KMS」一文。
銷毀的金鑰版本不會產生費用。
刪除外部金鑰
如要永久移除 Cloud EKM 金鑰與外部金鑰之間的關聯,可以銷毀金鑰版本。「已排定刪除」期間結束後,金鑰就會遭到刪除。金鑰版本刪除後,您就無法再加密資料,也無法解密以 Cloud EKM 金鑰版本加密的資料。
在 Cloud KMS 中刪除「手動管理金鑰」版本,不會修改外部金鑰管理工具中的金鑰。建議您先在 Google Cloud中銷毀金鑰或金鑰版本。Cloud EKM 金鑰版本刪除後,您就可以刪除外部金鑰管理工具中的金鑰內容。
在 Cloud KMS 中刪除協調式外部金鑰版本時,系統會先刪除 Google Cloud中的金鑰版本,然後向 EKM 傳送刪除要求,刪除外部金鑰內容。
還原金鑰版本
在金鑰版本排定刪除的期間,您可以提交還原要求來還原金鑰版本。
控制台
前往 Google Cloud 控制台的「Key Management」頁面。
按一下金鑰環名稱,該金鑰環包含您要還原金鑰版本的金鑰。
按一下您要還原金鑰版本的金鑰。
找出要還原的金鑰版本,然後勾選旁邊的方塊。
按一下頁首的「還原」。
在確認提示中,按一下「還原」。
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
gcloud kms keys versions restore key-version \ --key key \ --keyring key-ring \ --location location
將 key-version 替換為要還原的金鑰版本。將 key 替換為金鑰名稱。將 key-ring 替換為金鑰所在金鑰環的名稱。將 location 替換為金鑰環的 Cloud KMS 位置。
如要瞭解所有旗標和可能的值,請使用 --help
旗標執行指令。
C#
如要執行這段程式碼,請先設定 C# 開發環境,然後安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,然後安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,然後安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何在 Google Cloud上使用 PHP,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,然後安裝 Cloud KMS Ruby SDK。
API
這些範例使用 curl 做為 HTTP 用戶端,示範如何使用 API。如要進一步瞭解存取權控管,請參閱「存取 Cloud KMS API」一文。
呼叫 CryptoKeyVersions.restore 方法,還原金鑰版本。
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location-id/keyRings/key-ring-id/cryptoKeys/crypto-key-id/cryptoKeyVersions/version-id:restore" \ --request "POST" \ --header "authorization: Bearer token"
還原要求完成後,金鑰版本的狀態會變成已停用。您必須先啟用金鑰,才能使用。
必要 IAM 權限
如要銷毀金鑰版本,呼叫端必須對金鑰、金鑰環,或專案、資料夾或機構具有 cloudkms.cryptoKeyVersions.destroy
IAM 權限。
如要還原金鑰版本,呼叫者必須具備 cloudkms.cryptoKeyVersions.restore
權限。
這兩項權限都會授予 Cloud KMS 管理員角色 (roles/cloudkms.admin
)。
刪除時間表
Cloud KMS 承諾會在排定銷毀時間後的 45 天內,從所有 Google 基礎架構刪除客戶金鑰內容。包括從使用中系統和資料中心備份中移除資料。其他客戶資料則適用標準的 Google Cloud 刪除時間表,也就是 180 天。