刪除 Cloud KMS 資源

本文說明如何永久刪除 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

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

刪除金鑰版本

如果金鑰版本處於 DESTROYEDIMPORT_FAILEDGENERATION_FAILED 狀態,即可刪除。如果金鑰版本是匯入的,只有在匯入失敗時才能刪除。

如要永久刪除金鑰版本,請按照下列步驟操作:

gcloud

如要刪除金鑰版本,請執行下列指令:

gcloud kms keys versions delete KEY_VERSION \
    --location=LOCATION \
    --keyring=KEY_RING \
    --key=KEY_NAME

更改下列內容:

  • KEY_VERSION:要永久刪除的金鑰版本編號。指定的金鑰版本必須處於 DESTROYEDIMPORT_FAILEDGENERATION_FAILED 狀態。
  • LOCATION:金鑰環的 Cloud KMS 位置。
  • KEY_RING:金鑰所屬金鑰環的名稱。
  • KEY_NAME:包含要永久刪除金鑰版本的金鑰名稱。

REST

  1. 如要刪除金鑰版本,請呼叫 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:要永久刪除的金鑰版本編號。指定的金鑰版本必須處於 DESTROYEDIMPORT_FAILEDGENERATION_FAILED 狀態。

    指令輸出內容會傳回 Operation。下一個步驟需要用到這項作業的 name

  2. 如要確認金鑰版本已刪除,可以呼叫 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:上一個方法傳回的作業名稱。

    如果這個方法的輸出內容顯示 donetrue,表示作業已完成。如果沒有顯示 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

  1. 如要刪除金鑰,請呼叫 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

  2. 如要確認金鑰已刪除,可以呼叫 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:上一個方法傳回的作業名稱。

    如果這個方法的輸出內容顯示 donetrue,即代表作業已完成。如果沒有顯示 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:要查看的資源名稱。

這個方法的輸出內容包括 resourceTypedeleteTime,以及已刪除資源的完整資源 ID。

後續步驟