本指南介绍了如何通过将客户管理的加密密钥 (CMEK) 与 Backup and DR 搭配使用来增强备份安全性。您将学习如何授予必要的权限、创建启用 CMEK 的备份保险柜,以及如何将这些保险柜应用于资源,确保您的备份数据受到您在 Cloud Key Management Service 中控制的密钥的保护。这对于满足合规性要求和更好地控制数据加密至关重要。
如需详细了解 Backup and DR 中的 CMEK 概念和支持的工作负载类型,请参阅 Backup and DR 中的客户管理的加密密钥 (CMEK) 概览。
准备工作
在开始使用 CMEK 之前,请完成以下步骤:
启用 Cloud Key Management Service API 。
将
PROJECT_ID替换为您将在其中管理密钥的项目的 ID。创建 Cloud Key Management Service 密钥环和密钥:创建密钥时,请确保选择与备份保险柜位置匹配的位置。区域中的备份保险柜必须使用来自同一区域的密钥。
根据需要创建 Backup and DR 服务代理: 通常,当在项目中创建第一个 Backup and DR 资源(例如管理控制台或备份保险柜)时,系统会自动创建服务代理。如果您需要在创建任何 Backup and DR 资源之前向服务代理授予权限,请手动触发其创建:
gcloud beta services identity create --service=backupdr.googleapis.com --project=PROJECT_ID
将
PROJECT_ID替换为您的项目 ID。
启用 CMEK 的备份保险柜所需的权限
Backup and DR 服务代理需要使用指定的 Cloud KMS 密钥来加密和解密备份保险柜中的数据。
如需获得使用 CMEK 加密和解密备份保险柜中的数据所需的权限,请让您的管理员向您授予为备份保险柜指定的 Cloud KMS 密钥的以下 IAM 角色:
-
向 Backup and DR 服务代理 (
service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com) 授予: Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)将
VAULT_PROJECT_NUMBER替换为包含备份保险柜的项目的项目编号。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含 使用 CMEK 加密和解密备份保险柜中的数据所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需使用 CMEK 加密和解密备份保险柜中的数据,您需要以下权限:
-
使用密钥版本加密数据:
cloudkms.cryptoKeyVersions.useToEncrypt -
使用密钥版本解密数据:
cloudkms.cryptoKeyVersions.useToDecrypt -
获取有关密钥位置的元数据:
cloudkms.locations.get -
列出密钥位置:
cloudkms.locations.list -
获取有关密钥项目的元数据:
resourcemanager.projects.get
如需向 gcp-sa-backupdr 服务代理授予所需的角色,请按照以下说明操作:
控制台
在 Google Cloud 控制台中,前往 备份保险柜 页面。
点击创建备份保险柜 。
输入备份保险柜的必要详细信息,例如名称和位置。
在加密 部分中,选择客户管理的加密密钥 (CMEK) 以使用您自己的密钥。
点击选择客户管理的密钥 ,然后从选择器中选择要使用的 Cloud KMS 密钥。
授予服务代理权限:
选择密钥后,控制台会检查 Backup and DR 服务代理是否有权使用该密钥。 服务代理的名称为 service-VAULT_PROJECT_NUMBER@gcp-sa-backupdr.iam.gserviceaccount.com。
如果您对密钥拥有足够的权限(例如
roles/cloudkms.admin),并且服务代理尚未获得访问权限,则控制台可能会自动向 Backup and DR 服务代理授予所选密钥的roles/cloudkms.cryptoKeyEncrypterDecrypter角色。如果系统提示您确认授予,请确认授予,以允许 Backup and DR 使用您的 CMEK 加密和解密保险柜中的数据。
如果自动授予选项不可用,或者您没有授予角色的权限,则必须手动向服务代理授予
roles/cloudkms.cryptoKeyEncrypterDecrypter角色。如需查看相关说明,请参阅gcloud标签页。
根据需要配置任何其他备份保险柜设置。
点击创建 。
gcloud
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 \
--project=KMS_PROJECT_ID
替换变量:
KEY_NAME:CMEK 密钥的名称。KMS_LOCATION:密钥环的区域。KEY_RING:密钥环的名称。VAULT_PROJECT_NUMBER:备份保险柜所在的项目编号。KMS_PROJECT_ID:CMEK 密钥的管理项目 ID。
建议遵循最小权限原则,授予特定密钥的角色。
备份现有 CMEK 保护的资源所需的权限
如果您要备份的源资源已使用 其他 CMEK 密钥(例如使用 CMEK 加密的磁盘的 Compute Engine 实例)进行加密,则 源资源的服务( 例如 Compute Engine 服务代理)的服务代理需要有权访问 保护该源资源的密钥。
如需获得允许源服务在备份操作期间访问其 CMEK 密钥所需的权限,请让您的管理员向您授予保护源资源(例如 Compute Engine 磁盘)的 CMEK 密钥的以下 IAM 角色:
-
向托管源服务的服务代理授予:
通常为 Cloud Key Management Service CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter)例如,对于使用 CMEK 加密的 Compute Engine 实例,正文是源实例项目的 Compute Engine 服务代理
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含 允许源服务在备份操作期间访问其 CMEK 密钥所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需允许源服务在备份操作期间访问其 CMEK 密钥,您需要以下权限:
-
使用密钥版本加密数据:
cloudkms.cryptoKeyVersions.useToEncrypt -
使用密钥版本解密数据:
cloudkms.cryptoKeyVersions.useToDecrypt -
获取有关密钥位置的元数据:
cloudkms.locations.get -
列出密钥位置:
cloudkms.locations.list -
获取有关密钥项目的元数据:
resourcemanager.projects.get
将 CMEK 与 Backup and DR 搭配使用
创建启用 CMEK 的备份保险柜。 创建备份保险柜时,请在 加密类型 部分中选择 客户管理的加密密钥 (CMEK) 选项,然后选择您创建的 Cloud Key Management Service 密钥。 CMEK 只能在创建保险柜期间启用。无法在现有保险柜中添加、移除或更改 CMEK。
创建备份方案。 创建备份方案时, 请选择您创建的启用 CMEK 的备份保险柜作为目标。
将备份方案应用于资源。兼容性取决于资源类型及其加密方式:
Compute Engine 实例:
实例磁盘加密 备份保险柜加密 支持 备注 所有 Google 管理的 Google 管理的 是 所有 Google 管理的 CMEK 是 备份将使用备份保险柜的 CMEK 进行加密。 任何磁盘 CMEK 加密的 Google 管理的 否 使用 CMEK 加密的磁盘的实例备份需要启用 CMEK 的备份保险柜。 任何磁盘 CMEK 加密的 CMEK 是 备份保险柜 CMEK 可以与磁盘 CMEK 不同。 Persistent Disk 卷:
Persistent Disk 卷的备份始终保留源磁盘的加密方法。
如果源 Persistent Disk 使用 Google 管理的加密,则备份也将使用 Google 管理的加密。
如果源 Persistent Disk 使用 CMEK,则备份将受到与源磁盘相同的 CMEK 密钥版本的保护。
备份保险柜的加密设置(CMEK 或 Google 管理的)不会更改 Persistent Disk 备份数据本身的加密方式。 不过,组织政策可能仍然适用,请参阅 CMEK 组织政策。
恢复 CMEK 加密的备份
从 CMEK 加密的备份恢复工作负载时,恢复的资源默认使用在备份时保护源资源的同一 Cloud Key Management Service 密钥。您可以在恢复过程中为目标资源指定其他 Cloud Key Management Service 密钥。
Cloud Key Management Service 密钥轮替如何影响备份的可恢复性
当您轮替密钥时,Cloud Key Management Service 会创建一个新的密钥版本,该版本将成为主版本。Backup and DR 使用此主密钥版本加密配置了该密钥的备份保险柜的所有新备份。
现有备份仍使用最初创建时使用的密钥版本进行加密。如需恢复任何备份,用于加密该备份的特定密钥版本必须在 Cloud Key Management Service 中可用并启用。
密钥版本不可访问的后果
停用或销毁密钥版本会导致使用该版本加密的任何备份都无法访问。
如果 Backup and DR 由于 CMEK 密钥被停用、销毁或权限被撤消而无法访问该密钥,则可能会出现以下结果:
向启用 CMEK 的备份保险柜进行的新备份将失败。
如果该备份的特定密钥版本不可访问,则从备份进行恢复将失败。
使用不可访问的密钥创建新的备份保险柜将失败。
重新启用已停用的密钥版本会恢复访问权限。销毁密钥版本是一项永久性操作,会导致使用该版本加密的备份数据不可逆转地丢失。
CMEK 组织政策的应用方式
您可以使用组织政策限制条件 来强制执行 Backup and DR 资源的 CMEK 要求。如需了解详情,请参阅 CMEK 组织政策。
备份保险柜创建限制条件
constraints/gcp.restrictNonCmekServices:如果针对backupdr.googleapis.com强制执行此限制条件,则所有新的备份保险柜都必须使用 CMEK 创建。constraints/gcp.restrictCmekCryptoKeyProjects:如果强制执行此限制条件,则启用 CMEK 的备份保险柜必须使用来自允许的项目或文件夹的密钥。
备份操作限制条件
constraints/gcp.restrictNonCmekServices:如果针对backupdr.googleapis.com强制执行此限制条件:Compute Engine 实例备份:如果目标 备份保险柜使用 Google 管理的加密,则备份将失败。
Persistent Disk 备份:如果源 Persistent Disk 使用 Google 管理的加密,则备份将失败。
constraints/gcp.restrictCmekCryptoKeyProjects:如果强制执行此限制条件:Compute Engine 实例备份:如果目标备份保险柜 使用 CMEK 加密,则其密钥必须来自允许的项目或文件夹。
Persistent Disk 备份:如果源 Persistent Disk 使用 CMEK 加密, 则其密钥必须来自允许的项目或文件夹。
后续步骤
- 了解如何创建和管理备份保险柜。