删除 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 资源所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需删除和查看 Cloud KMS 资源,您需要具备以下权限:

  • 如需删除密钥版本,请执行以下操作: cloudkms.cryptoKeyVersions.delete
  • 如需删除密钥,请执行以下操作: cloudkms.cryptoKeys.delete
  • 如需查看已删除的资源,请执行以下操作:
    • cloudkms.retiredResources.get
    • cloudkms.retiredResources.list

您也可以使用自定义角色或其他预定义角色来获取这些权限。

删除密钥版本

如果密钥版本处于 DESTROYEDIMPORT_FAILEDGENERATION_FAILED 状态,您可以将其删除。如果密钥版本是导入的,则只有在导入失败时才能删除。

如需永久删除密钥版本,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往密钥管理页面。

    前往 Key Management

  2. 点击包含您要删除的密钥和密钥版本的密钥环的名称。

  3. 点击包含要删除的密钥版本的密钥。

  4. 版本表中,找到您要删除的密钥版本,然后点击 更多操作

  5. 更多操作菜单中,点击删除

  6. 在确认提示中输入密钥名称,然后点击删除

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:包含您要永久删除的密钥版本的密钥的名称。

Go

如需了解如何安装和使用 Cloud KMS 客户端库,请参阅 Cloud KMS 客户端库

如需向 Cloud KMS 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

import (
	"context"
	"fmt"
	"io"

	kms "cloud.google.com/go/kms/apiv1"
	"cloud.google.com/go/kms/apiv1/kmspb"
)

// deleteCryptoKeyVersion deletes a crypto key version. This action is permanent and cannot be undone. Once the key version is deleted, it will no longer exist.
func deleteCryptoKeyVersion(w io.Writer, name string) error {
	// name := "projects/my-project/locations/us-east1/keyRings/my-key-ring/cryptoKeys/my-key/cryptoKeyVersions/1"

	// Create the client.