客户管理的加密密钥 (CMEK)

借助客户管理的加密密钥 (CMEK),您可以使用通过 Cloud Key Management Service (Cloud KMS) 控制的加密密钥来保护 Backup and DR Service 数据。使用 CMEK 时,您可以在 Cloud Key Management Service 中管理密钥,并通过管理密钥的 Identity and Access Management 权限来控制哪些人可以访问该密钥。如果您暂时停用或永久销毁 CMEK 密钥,则无法访问受该密钥保护的数据。

Backup and DR Service 使用 CMEK 来保护存储在备份保险柜中的备份数据。

您只能在创建备份保险库时配置 CMEK。 您无法在现有备份保险库上启用或停用 CMEK,

如需大致了解 CMEK,请参阅客户管理的加密密钥 (CMEK)

使用 CMEK 所需的权限

在开始使用 CMEK 之前,您需要:

  1. 在将存储 CMEK 密钥的项目中启用 Cloud Key Management Service API。

    启用该 API

  2. 创建 Cloud Key Management Service 密钥环和密钥。创建密钥时,请确保选择的位置与备份保险柜的位置一致。区域中的备份保险柜必须使用同一区域中的密钥。多区域备份保险柜必须使用来自同一多区域的密钥。

  3. 创建 Backup and DR Service 服务代理身份(如果尚未创建)。在项目中创建第一个备份保险库后,系统会自动创建服务代理。如果您需要在创建备份保险柜之前向服务代理授予权限,可以使用以下命令触发其创建:

    gcloud beta services identity create --service=backupdr.googleapis.com --project=PROJECT_ID
    
    PROJECT_ID 替换为您的项目 ID。

为备份保险库启用 CMEK 时,Backup and DR 服务需要拥有使用您的 CMEK 密钥加密和解密数据的权限。必须向 Backup and DR Service 服务代理授予此权限。

请务必区分 Backup and DR 服务使用的两个不同的服务账号:

  • Backup and DR Service 服务代理:这是一个项目级服务账号,用于管理 Backup and DR Service 资源,以及在备份保险柜上启用 CMEK 时访问 Cloud Key Management Service 密钥。此服务代理需要 CMEK 密钥的 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色。
  • 备份保险库服务账号:这是每个保险库独有的服务账号,您可以向其授予访问和备份源工作负载(例如 Compute Engine 实例)的权限。此服务账号用于对备份保险库中的数据进行 CMEK 加密。

如需将 CMEK 与 Backup and DR Service 搭配使用,您必须向 Backup and DR Service 服务代理授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter)。此服务代理是一个服务账号,Backup and DR 服务会使用该账号代表您访问资源,包括在加密和解密操作期间访问您的 Cloud Key Management Service 密钥。

Backup and DR Service 服务代理的命名格式如下:

service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com

VAULT_PROJECT_NUMBER 替换为包含备份保险库的项目的项目编号。

如果您有权授予 IAM 角色,可以在创建备份保管库时使用 Google Cloud 控制台授予此角色;也可以提前使用 gcloud kms keys add-iam-policy-binding 命令授予此角色:

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --location=KMS_LOCATION \
    --keyring=KEY_RING \
    --member=serviceAccount:service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

备份受 CMEK 保护的资源的权限

如果您要备份的资源本身已使用其他 CMEK 密钥加密(例如,具有 CMEK 加密磁盘的 Compute Engine 实例),则需要额外权限。源资源的服务代理需要有权使用保护源资源的密钥。例如,如需备份 CMEK 加密的 Compute Engine 实例,源实例项目的 Compute Engine 服务代理必须对用于加密实例磁盘的 Cloud Key Management Service 密钥拥有 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色。在大多数情况下,源工作负载已具备此权限,可正常运行。

Cloud Key Management Service 密钥轮替和备份可恢复性

Backup and DR Service 备份依赖于 Cloud Key Management Service 密钥的可用性,因此 Backup and DR Service 可能无法访问受该密钥保护的资源。

如果 Backup and DR Service 无法访问您的 CMEK 密钥,则:

  • 向已启用 CMEK 的备份保险柜进行的新备份会失败。
  • 从启用了 CMEK 的备份保险柜进行恢复失败。
  • 您无法创建使用不可用密钥的新备份保险柜。

如果您停用了曾用于备份的密钥,重新启用该密钥即可恢复对备份数据的访问权限。如果您销毁了某个密钥版本,则使用该密钥版本加密的所有备份都将永久丢失。

价格

Backup and DR Service 不会针对使用 CMEK 收取任何额外费用。不过,您需要为在 Cloud Key Management Service 中使用密钥付费。如需了解详情,请参阅 Cloud Key Management Service 价格