本文档介绍如何永久删除 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 资源所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需删除和查看 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 项目中重复使用。这样可以防止两个不同的密钥具有相同的资源标识符。已删除密钥的名称存储在 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:您要查看已停用的资源的项目的标识符。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:您要查看已停用的资源的项目的标识符。LOCATION:您要查看已弃用资源的位置。RETIRED_RESOURCE:您要查看的资源的名称。
此方法的输出包括 resourceType、deleteTime 和已删除资源的完整资源标识符。
后续步骤
- 详细了解如何销毁和恢复密钥版本。