本文档介绍如何永久删除 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 状态,您可以将其删除。如果密钥版本是导入的,则只有在导入失败时才能删除。
如需永久删除密钥版本,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往密钥管理页面。
点击密钥环的名称,该密钥环包含您要删除的密钥和密钥版本。
点击包含要删除的密钥版本的密钥。
在版本表中,找到您要删除的密钥版本,然后点击 更多操作。
在更多操作菜单中,点击删除。
在确认提示中输入密钥名称,然后点击删除。
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:包含您要永久删除的密钥版本的密钥的名称。
Go
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
API
如需删除密钥版本,请调用
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 创建的。
如需永久删除密钥,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往密钥管理页面。
点击包含要删除的密钥的密钥环的名称。
在以下任一位置删除密钥:
- 密钥列表页面:在“KEY_RING”密钥环的密钥表格中,找到要删除的密钥,点击 密钥操作,然后点击删除。
- 密钥详情页面:点击要删除的密钥的名称,打开其密钥详情页面。点击页面顶部的删除。
在确认提示中输入密钥名称,然后点击删除。
gcloud
如需删除密钥,请运行以下命令:
gcloud kms keys delete KEY_NAME \
--location=LOCATION \
--keyring=KEY_RING
替换以下内容:
KEY_NAME:您要永久删除的密钥的名称。密钥不得包含任何尚未删除的密钥版本,并且不得是由 Autokey 创建的密钥。LOCATION:密钥环的 Cloud KMS 位置。KEY_RING:包含密钥的密钥环的名称。
Go
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
API
如需删除密钥,请调用
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:您要查看已弃用资源的位置。
Go
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
API
使用 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:您要查看已弃用的资源所在的位置。
Go
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库。
如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
API
使用 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 和已删除资源的完整资源标识符。
后续步骤
- 详细了解如何销毁和恢复密钥版本。