本文說明如何永久刪除 Cloud Key Management Service 金鑰和金鑰版本。這項操作無法復原。
在 Cloud KMS 中,銷毀和刪除是不同的作業:
刪除:永久停用金鑰版本,包括在指定刪除期限過後,不可逆地刪除基礎金鑰內容。處於
DESTROYED狀態的金鑰版本無法用於加密編譯作業,且不會再產生費用。您可以銷毀用於加密資料的金鑰版本,藉此加密銷毀您想永久無法復原的資料。已刪除的金鑰版本仍會列在 Cloud KMS 資源清單中。刪除:從 Google Cloud 控制台、Google Cloud CLI、Cloud Key Management Service API 和用戶端程式庫的 Cloud KMS 資源清單中移除金鑰或金鑰版本。如果專案有許多不再使用的金鑰或金鑰版本,刪除這些項目可簡化搜尋和列出作業。刪除的 CryptoKey 名稱無法重複使用。您可以使用
retiredResources.list方法,查看無法重複使用的已刪除 CryptoKey 名稱清單。
事前準備
如要取得刪除及查看 Cloud KMS 資源所需的權限,請要求管理員授予您金鑰的「Cloud KMS 管理員」 (roles/cloudkms.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備刪除及查看 Cloud KMS 資源所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要刪除及查看 Cloud KMS 資源,必須具備下列權限:
-
如要刪除金鑰版本:
cloudkms.cryptoKeyVersions.delete -
如要刪除車鑰:
cloudkms.cryptoKeys.delete -
如要查看已刪除的資源:
-
cloudkms.retiredResources.get -
cloudkms.retiredResources.list
-
刪除金鑰版本
如果金鑰版本處於 DESTROYED、IMPORT_FAILED 或 GENERATION_FAILED 狀態,即可刪除。如果金鑰版本是匯入的,只有在匯入失敗時才能刪除。
如要永久刪除金鑰版本,請按照下列步驟操作:
gcloud
如要刪除金鑰版本,請執行下列指令:
gcloud kms keys versions delete KEY_VERSION \
--location=LOCATION \
--keyring=KEY_RING \
--key=KEY_NAME
更改下列內容:
KEY_VERSION:要永久刪除的金鑰版本編號。指定的金鑰版本必須處於DESTROYED、IMPORT_FAILED或GENERATION_FAILED狀態。LOCATION:金鑰環的 Cloud KMS 位置。KEY_RING:金鑰所屬金鑰環的名稱。KEY_NAME:包含要永久刪除金鑰版本的金鑰名稱。
REST
如要刪除金鑰版本,請呼叫
cryptoKeyVersions.delete方法。這個方法會傳回長時間執行的作業,您可以輪詢該作業,確認金鑰版本是否已刪除。curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION" \ --request "DELETE" \ --header "authorization: Bearer TOKEN"
更改下列內容:
PROJECT_ID:包含金鑰環的專案 ID。LOCATION:金鑰環的 Cloud KMS 位置。KEY_RING:金鑰所屬金鑰環的名稱。KEY_NAME:包含要永久刪除金鑰版本的金鑰名稱。KEY_VERSION:要永久刪除的金鑰版本編號。指定的金鑰版本必須處於DESTROYED、IMPORT_FAILED或GENERATION_FAILED狀態。
指令輸出內容會傳回
Operation。下一個步驟需要用到這項作業的name。如要確認金鑰版本已刪除,可以呼叫
operations.get方法:curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_NAME" \ --request "GET" \ --header "authorization: Bearer TOKEN"更改下列內容:
PROJECT_ID:包含金鑰環的專案 ID。LOCATION:金鑰環的 Cloud KMS 位置。OPERATION_NAME:上一個方法傳回的作業名稱。
如果這個方法的輸出內容顯示
done為true,表示作業已完成。如果沒有顯示error,表示金鑰版本已永久刪除。
刪除金鑰
如要刪除金鑰,必須符合下列條件:
- 金鑰不含尚未刪除的金鑰版本。
- 金鑰未排定自動輪替時間。
- 金鑰不是由 Cloud KMS Autokey 建立。
如要永久刪除金鑰,請按照下列步驟操作:
gcloud
如要刪除金鑰,請執行下列指令:
gcloud kms keys delete KEY_NAME \
--location=LOCATION \
--keyring=KEY_RING
更改下列內容:
KEY_NAME:要永久刪除的金鑰名稱。金鑰不得包含尚未刪除的金鑰版本,且不得為 Autokey 建立的金鑰。LOCATION:金鑰環的 Cloud KMS 位置。KEY_RING:金鑰所屬金鑰環的名稱。
REST
如要刪除金鑰,請呼叫
cryptoKey.delete方法。這個方法會傳回長時間執行的作業,您可以輪詢該作業,確認金鑰是否已刪除。curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" \ --request "DELETE" \ --header "authorization: Bearer TOKEN"
更改下列內容:
PROJECT_ID:包含金鑰環的專案 ID。LOCATION:金鑰環的 Cloud KMS 位置。KEY_RING:金鑰所屬金鑰環的名稱。KEY_NAME:要永久刪除的金鑰名稱。金鑰不得包含尚未刪除的金鑰版本,且不得為 Autokey 建立的金鑰。
指令輸出內容會傳回
Operation。下一個步驟需要用到這項作業的name。如要確認金鑰已刪除,可以呼叫
operations.get方法:curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_NAME" \ --request "GET" \ --header "authorization: Bearer TOKEN"更改下列內容:
PROJECT_ID:包含金鑰環的專案 ID。LOCATION:金鑰環的 Cloud KMS 位置。OPERATION_NAME:上一個方法傳回的作業名稱。
如果這個方法的輸出內容顯示
done為true,即代表作業已完成。如果沒有顯示error,表示該金鑰已永久刪除。
查看已淘汰資源的名稱
已刪除的金鑰名稱無法在同一個Google Cloud 專案中重複使用。這樣可避免兩個不同金鑰使用相同的資源 ID。已刪除金鑰的名稱會儲存在 retiredResources 物件中。您可以查詢 retiredResources,查看無法用於新 Cloud KMS 資源的名稱。
如要查看所有已淘汰資源的清單,請按照下列步驟操作:
gcloud
執行下列指令:
gcloud kms retired-resources list \
--location=LOCATION
更改下列內容:
LOCATION:您要查看已淘汰資源的位置。
REST
請使用 retiredResources.list 方法:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/retiredResources/" \
--request "GET" \
--header "authorization: Bearer TOKEN"
更改下列內容:
PROJECT_ID:您要查看已淘汰資源的專案 ID。LOCATION:您要查看已淘汰資源的位置。
如要查看個別已停用資源的中繼資料,請按照下列步驟操作:
gcloud
執行下列指令:
gcloud kms retired-resources describe RETIRED_RESOURCE \
--location=LOCATION
更改下列內容:
RETIRED_RESOURCE:要查看的資源名稱。LOCATION:您要查看已淘汰資源的位置。
REST
請使用 retiredResources.get 方法:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/retiredResources/RETIRED_RESOURCE" \
--request "GET" \
--header "authorization: Bearer TOKEN"
更改下列內容:
PROJECT_ID:您要查看已淘汰資源的專案 ID。LOCATION:您要查看已淘汰資源的位置。RETIRED_RESOURCE:要查看的資源名稱。
這個方法的輸出內容包括 resourceType、deleteTime,以及已刪除資源的完整資源 ID。
後續步驟
- 進一步瞭解如何刪除及還原金鑰版本。