本页面介绍了如何在Google Cloud 控制台中创建和管理备份保险柜。如需详细了解备份保险柜,请参阅备份保险柜概览。
准备工作
如需获得创建和管理备份保险柜所需的权限,请让您的管理员为您授予要在其中创建备份保险柜的项目上的 Backup and DR Backup Vault Admin (roles/backupdr.backupvaultAdmin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含创建和管理备份保险柜所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能创建和管理备份保险柜:
-
backupdr.backupVaults.create -
backupdr.backupVaults.list -
backupdr.backupVaults.get -
backupdr.backupVaults.update -
backupdr.backupVaults.delete -
backupdr.bvbackups.restore
应用留置权
为防止备份保险柜被意外或恶意删除,我们强烈建议您为保险柜所在的 Google Cloud 项目应用项目安全锁。如需了解详情,请参阅使用安全锁保护项目。
为防止项目安全锁在未经授权的情况下被移除,请使用 Privileged Access Manager (PAM) 强制执行多方审批。如需了解详情,请参阅使用 Privileged Access Manager 保护项目安全锁。
创建备份保险柜
请按照以下说明创建备份保险柜。
控制台
在 Google Cloud 控制台中,前往备份保险柜页面。
点击创建备份保险柜。
在创建备份保险柜页面上,输入您的备份保险柜信息。
- 在为备份保险柜命名字段中,输入符合备份保险柜名称要求的名称。
- 从选择数据存储位置列表中,选择一个受支持的位置,备份数据将永久存储在该位置。
在防止备份删除字段中,输入最短强制保留期限,该期限定义了备份在多长时间内不会被删除。最小值为 0 天,最大值为 99 年。
如果您想锁定最短强制保留期限的值,请选择锁定强制保留期限,然后点击 图标并从日历中选择日期。
防止在备份规则中指定的时间段内删除:您可以将保险柜设置为继承备份方案中设置的在以下时间后删除备份值。备份无法手动删除,它们将根据其关联备份方案中的值进行删除。
锁定强制保留:如果您想锁定强制保留期限下限的值,请选中此选项,然后点击 图标并从日历中选择日期。
如果您想使用自己的加密密钥,请在加密下选择客户管理的加密密钥 (CMEK) 选项,然后从下拉列表中选择您的密钥。系统仅会显示与备份保险柜位于同一位置的密钥。您只能在创建备份保险柜时配置 CMEK。如需详细了解如何使用 CMEK,请参阅加密。
如需了解所需权限,请参阅 CMEK 权限。
- 在定义对备份保险柜的访问权限部分中,选择一个选项来定义备份保险柜的访问权限限制。如果您未选择任何选项,则系统会创建具有限制对当前组织的访问权限限制的备份保险柜。
点击创建。
gcloud
- 在以下开发环境之一中,设置 gcloud CLI:
- Cloud Shell:如需使用已设置 gcloud CLI 的在线终端,请激活 Cloud Shell。 Cloud Shell 会话会在页面底部启动,并显示命令行提示符。该会话可能需要几秒钟来完成初始化。
创建备份保险柜。
gcloud backup-dr backup-vaults create BACKUPVAULT_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --backup-retention-inheritance=RETENTION_PERIOD_INHERITANCE \ --backup-min-enforced-retention=RETENTION_PERIOD_IN_DAYS \ --kms-key=KMS_KEY \ --access-restriction=ACCESS_RESTRICTION替换以下内容:
BACKUPVAULT_NAME:备份保险柜的名称。PROJECT_ID:您要在其中创建备份保险柜的项目的名称。LOCATION:您要在其中创建备份保险柜的位置。RETENTION_PERIOD_INHERITANCE:此备份保险柜中备份的强制保留结束时间的继承模式。继承模式一经设置便无法更改。默认值为inherit-vault-retention。- 如果设置为 inherit-vault-retention,则备份保留期限将从备份保险柜继承。
- 如果设置为 match-backup-expire-time,则备份保留期限将与备份到期时间相同。
RETENTION_PERIOD_IN_DAYS:备份保险柜中的每个备份无法删除的时间段。最小值为 0 天,最大值为 99 年。例如,2w1d表示两周零一天。如需了解详情,请参阅备份保险柜最短强制保留期限。KMS_KEY:用于加密的客户管理的加密密钥 (CMEK),格式为projects/KMS_PROJECT_ID/locations/KMS_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME。如果您提供密钥,则系统会在备份保险柜上启用 CMEK。您只能在创建备份保险柜时配置 CMEK。 如需详细了解如何使用 CMEK,请参阅加密。如需了解所需权限,请参阅 CMEK 权限。ACCESS_RESTRICTION:为备份保险柜指定访问权限限制。允许的值包括within-project、within-org、unrestricted和within-org-but-unrestricted-for-ba。如果您未指定值,则系统会创建具有within-org限制的备份保险柜。
Backup and DR 仅支持对存储在备份保险柜中的 Compute Engine 实例和 Persistent Disk 备份进行 CMEK 保护。查看操作的状态。
gcloud backup-dr operations describe FULL_OPERATION_ID替换以下内容:
FULL_OPERATION_ID:为备份保险柜显示的操作 ID。其格式如下:projects/test-project/locations/us-central1/operations/operationID
输出如下所示:
Create in progress for backup vault [projects/test-project/locations/us-central1/operations/operation-1721893921568-41e0dab8938a1-f1dc6ad2-3051b3ce]. Run the [gcloud backup-dr operations describe] command to check the status of this operation.
Terraform
您可以使用 Terraform 资源创建备份保险柜。
列出项目中的备份保险柜
请按照以下说明列出项目中的备份保险柜。
控制台
在 Google Cloud 控制台中,前往备份保险柜页面。
属于所选项目的备份保险柜会显示在列表中。
gcloud
列出备份保险柜。
gcloud backup-dr backup-vaults list \ --project=PROJECT_ID \ --location=LOCATION替换以下内容:
PROJECT_ID:创建备份保险柜的项目的名称。LOCATION:在其中创建备份保险柜的位置。
查看备份保险柜详情
备份保险柜详情页面会显示配置信息,并允许您更新可修改的内容。
- 创建时间:备份保险柜的创建日期。
- 上次更新时间:上次修改备份保险柜的日期。
- 说明:备份保险柜的可选说明。
- 状态:有效
- 位置类型:单区域或多区域
- 位置:所选区域或多区域,例如
us-central1 (Iowa)或us。 - 存储的字节数:备份保险柜中存储的数据量。
- 强制保留期限
- 备份的最短保留期限:为此备份保险柜选择一个最小值
- 从备份规则继承:对于将存储在此备份保险柜中的备份,使用备份规则中已设置的值。
- 保留期限锁定状态
- 未锁定:备份保险柜未应用锁定,也没有待处理的锁定。
- 锁定将于日期时间生效:已设置锁定,将于指定日期在备份保险柜上生效。
- 已锁定:备份保险柜的最短强制保留期限值已锁定,无法缩短或移除。
- 加密类型: Google-managed encryption key
- 加密密钥:正在使用的客户管理的加密密钥。
- 访问权限限制:无限制或限制为仅当前组织具有访问权限
请按照以下说明查看备份保险柜详情。
控制台
在 Google Cloud 控制台中,前往备份保险柜页面。
此页面列出了属于所选项目的备份保险柜。
点击要查看的备份保险柜。
备份保险柜详情页面会显示配置信息,包括最短强制保留期限的值及其锁定状态。
gcloud
查看备份保险柜详情。
gcloud backup-dr backup-vaults describe BACKUPVAULT_NAME \ --location=LOCATION \ --project=PROJECT_ID替换以下内容:
BACKUPVAULT_NAME:备份保险柜的名称。LOCATION:备份保险柜的位置。PROJECT_ID:创建备份保险柜的项目的名称。
更新现有备份保险柜的最短强制保留期限
您可以根据锁定的状态更新最短强制保留期限。
- 已解锁:您可以延长或缩短最短强制保留期限。
- 已锁定:您只能延长最短强制保留期限。
如果已到生效日期,则无法移除锁定。但是,如果尚未达到生效日期,您可以移除锁定,这会清除最初指定的生效日期。
对最短强制保留期限值的更改仅适用于更新后创建的备份。最短强制保留期限值的更改不会影响备份保险柜中已有备份的剩余强制保留期限。
增加备份保险柜的强制保留期限时,备份保险柜的强制保留期限不应超过备份方案中要存储在备份保险柜中的任何备份的保留期限。如果更改后的值大于备份保留期限,Backup and DR 会根据备份方案类型以不同的方式处理这些更改。
Google Cloud 基于控制台的方案:系统会阻止对备份保险柜值进行更改。
基于管理控制台的方案:允许更改备份保险柜值,但您应立即更新相关备份方案,以指定等于或长于更新后的备份保险柜强制执行的最短保留期限的保留期限。
如果方案保留期限短于备份保险柜的最短强制保留期限,则生成的备份的强制保留期限将设置为备份保险柜的最短强制保留期限。 此外,备份的到期时间设置为在强制保留期限到期之后。
请按照以下说明更新现有备份保险柜的最短强制保留期限。
控制台
在 Google Cloud 控制台中,前往备份保险柜页面。
在备份保险柜列表中,点击要更新的备份保险柜的名称。
点击 图标。
在修改最短强制保留期限对话框中,输入新的最短强制保留期限值。此值是备份保险柜中的每个备份无法删除的时间段。最小值为 0 天,最大值为 99 年。
如果您想锁定最短强制保留期限,请选中锁定强制保留期限复选框,然后从日历中选择锁定生效日期。
点击保存。
gcloud
更新现有备份保险柜的最短强制保留期限。
gcloud backup-dr backup-vaults update BACKUPVAULT_NAME\ --project=PROJECT_ID \ --location=LOCATION \ --backup-min-enforced-retention=RETENTION_PERIOD_IN_DAYS替换以下内容:
BACKUPVAULT_NAME:备份保险柜的名称。PROJECT_ID:创建备份保险柜的项目的名称。LOCATION:备份保险柜的位置。RETENTION_PERIOD_IN_DAYS:备份保险柜中的每个备份无法删除的时间段。最小值为 0 天,最大值为 99 年。
强制保留期限的资源限制
将某些资源类型备份到备份保险柜时,存在一些限制,这些限制会影响与备份保险柜的最短强制保留设置的兼容性。
| 资源类型 | 最短强制保留期限(备份) | 最短强制保留期限(日志) | 防止手动删除 |
|---|---|---|---|
| AlloyDB for PostgreSQL | 0-365 天 | 1-35 天 | 必填 |
| Cloud SQL | 0 天至 10 年 | 不适用 | 可选 |
| Compute Engine 实例 | 0 天至 99 年 | 不适用 | 可选 |
| Compute Engine 磁盘 | 0 天至 99 年 | 不适用 | 可选 |
| Filestore | 0 天至 99 年 | 不适用 | 可选 |
删除备份保险柜
在所含的所有备份都达到强制保留期限并过期或被手动删除之前,您无法删除备份保险柜。
在备份保险柜包含的所有备份都已过期或被删除后,请按照以下说明删除备份保险柜。
控制台
在 Google Cloud 控制台中,前往备份保险柜页面。
点击要删除的备份保险柜。
点击删除。
在出现的叠加窗口中,确认要删除备份保险柜及其内容。
点击删除。
gcloud
删除备份保险柜。
gcloud backup-dr backup-vaults delete BACKUPVAULT_NAME \ --project=PROJECT_ID \ --location=LOCATION替换以下内容:
BACKUPVAULT_NAME:备份保险柜的名称。PROJECT_ID:创建备份保险柜的项目的名称。LOCATION:备份保险柜的位置。
向备份保险柜服务代理和备份/恢复设备授予访问权限
创建的每个备份保险柜都有一个与之关联的唯一服务代理。对于某些资源类型,服务代理会代表 Backup and DR 执行操作,因此需要对备份保险柜服务代理需要访问的项目授予适当的权限。服务代理是由 Google 代管式服务账号;如需了解详情,请参阅服务代理。
对于某些资源类型(例如 Google Cloud VMware Engine、Oracle 数据库和 SQL Server 数据库),Backup and DR 备份/恢复设备必须对备份保险柜执行操作。在这种情况下,备份/恢复设备需要对备份保险柜拥有适当的权限。此外,必须为目标备份保险柜设置 UNRESTRICTED 或 WITHIN_ORG_BUT_UNRESTRICTED_FOR_BA 访问限制。
为服务代理授予角色
找到服务代理的电子邮件地址后,您可以向备份保险柜服务代理授予角色,就像向任何其他主账号授予角色一样。
如需在与创建备份保险柜的项目不同的项目中备份 Compute Engine 虚拟机实例,您必须向 Compute Engine 项目中的备份保险柜服务代理授予 Backup and DR Compute Engine Operator (roles/backupdr.computeEngineOperator) IAM 角色。但是,如需在创建备份保险柜的项目中备份 Compute Engine 虚拟机实例,则无需授予任何角色。
如需恢复 Compute Engine 实例,您需要在恢复项目中向备份保险柜服务代理授予 Backup and DR Compute Engine Operator (roles/backupdr.computeEngineOperator) IAM 角色。
请按照以下说明向服务代理授予角色。
控制台
gcloud
为服务代理授予角色。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_ACCOUNT \ --role=ROLE替换以下内容:
PROJECT_ID:项目的名称。SERVICE_ACCOUNT:备份保险柜服务代理的邮箱。例如:my-service-account@my-project.。ROLE:需要在资源项目中授予的角色。例如,如需在与创建备份保险柜的项目不同的项目中备份 Compute Engine 实例,请选择 Backup and DR Compute Engine Operator (roles/backupdr.computeEngineOperator) IAM 角色。
向备份/恢复设备服务账号授予角色
只有在备份保险柜项目中向设备服务账号授予 Backup and DR Backup Vault Accessor (roles/backupdr.backupvaultAccessor) IAM 角色后,您才能从备份/恢复设备项目访问备份保险柜。如果没有此角色,您将无法访问备份保险柜,从而无法完成设置以启用备份创建。
向备份/恢复设备服务账号授予角色后,您可以使用设备管理控制台将 Google Cloud VMware Engine、Oracle 数据库和 SQL Server 数据库备份和恢复到备份保险柜。
请按照以下说明向备份/恢复设备服务账号授予角色:
在 Google Cloud 控制台中,前往创建了设备的虚拟机实例页面。
点击要获取其服务账号的 Compute Engine 实例。
在 API 和身份管理部分,从服务账号字段中复制服务账号的电子邮件地址。
在 Google Cloud 控制台中,前往备份保险柜项目中的 IAM 角色。
点击授予访问权限。
在新的主账号字段中,输入设备的的服务账号邮箱。
从选择角色列表中,选择 Backup and DR 备份保险柜 Accessor 角色。
可选:如需限制备份/恢复设备仅有权访问特定备份保险柜,请点击 Backup and DR Backup Vault Accessor 角色旁边的 添加 IAM Condition。
- 在名称字段中,输入条件的名称。
点击条件编辑器标签页。
在表达式 CEL 编辑器字段中,输入以下表达式。
resource.name.extract("projects/PROJECT_ID/locations/LOCATION/backupVaults /{name}/") == ("BACKUPVAULT_NAME") || resource.name.extract("projects/PROJECT_ID/locations/LOCATION/backupVaults /{name}") == ("BACKUPVAULT_NAME") || resource.name.extract("operations/{op}") != ""
替换以下内容:
BACKUPVAULT_NAME:备份保险柜的名称。PROJECT_ID:创建备份保险柜的项目的名称。LOCATION:备份保险柜的位置。如需为其他备份保险柜添加访问权限,请根据需要附加其他“resource.name.startsWith”语句(使用“||”或逻辑运算符)。
例如,以下语句会授权名为“bv-test”的备份保险柜和名为“user-bv1”的备份保险柜,这两个保险柜都位于名为“testproject”的项目中,且位于“us-central1”位置。
resource.name.extract("projects/testproject/locations/us-central1/backupVaults /{name}/") == ("bv-test") || resource.name.extract("projects/testproject/locations/us-central1/backupVaults /{name}") == ("bv-test") || resource.name.extract("projects/testproject/locations/us-central1/backupVaults /{name}/") == ("user-bv1") || resource.name.extract("projects/testproject/locations/us-central1/backupVaults /{name}") == ("user-bv1") || resource.name.extract("operations/{op}") != ""
点击保存。
点击保存。