为区域范围限定的快照设置创建和恢复位置

默认情况下,快照是使用全球范围创建的。全球范围的快照存储在特定存储位置,可以在任何区域或可用区进行恢复(用于创建新磁盘)。如需进行额外的基于位置的隔离控制,您可以创建区域范围快照。区域范围快照会将所有快照数据和元数据一起存储在范围限定的区域中。对于区域范围快照,您还可以限制可以创建和恢复快照的区域。

本文档介绍了如何为区域快照创建和恢复设置允许的位置。

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. 安装 Google Cloud CLI,然后使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。

      安装 Google Cloud CLI,然后使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init

    如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

限制

  • 设置区域范围会替换项目的所有默认存储位置设置
  • 设置区域范围仅适用于新的区域快照。
  • 您无法将全球范围快照转换为区域范围快照。 您必须创建具有相应范围的新快照。

所需的角色和权限

如需获得为区域级快照设置存储和恢复位置所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含设置快照创建和恢复位置所需的权限。如需查看所需的确切权限,请展开所需权限部分:

设置允许创建快照的位置

默认情况下,您可以在所有区域中创建快照。如需限制可创建区域范围限定的快照的位置,请在项目级设置允许的访问位置。设置访问位置后,您只能在这些位置为项目创建区域范围限定的快照。

gcloud

如需允许可用区 A 中的地区级磁盘在任何区域中创建快照,请使用 gcloud beta compute disk-settings update 命令

  gcloud beta compute disk-settings update \
      --zone=ZONE_A \
      --access-location-policy=all-regions \

如需允许区域 A 中的区域级磁盘在任何区域中创建快照,请使用 gcloud beta compute disk-settings update 命令

  gcloud beta compute disk-settings update \
      --region=REGION_A \
      --access-location-policy=all-regions

如需让区域 A 中的磁盘仅在区域 B 中创建快照,请使用 gcloud beta compute disk-settings update 命令

  gcloud beta compute disk-settings update \
      --access-location-policy=specific-regions \
      --region=REGION_A \
      --add-access-locations=REGION_B

替换以下内容:

  • ZONE_A:可在任何区域创建快照的磁盘的可用区。
  • REGION_A:项目中所有需要区域范围限定的快照创建限制的磁盘的区域。
  • REGION_B:允许创建区域范围限定的快照的区域。您可以将多个区域设置为允许的访问位置。您必须将来源磁盘所在的区域纳入允许的区域中。

REST

如需允许可用区 A 中的可用区磁盘在任何区域中创建快照,请向 diskSettings.patch 方法发出 PATCH 请求:

  PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE_A/diskSettings?updateMask=accessLocation

  {
    "accessLocation":
    {
      "policy":"ALL_REGIONS"
    }
  }

如需让区域 A 中的区域级磁盘仅在区域 B 中创建快照,请向 regionDiskSettings.patch 方法发出 PATCH 请求:

  PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION_A/diskSettings?updateMask=accessLocation

  {
    "accessLocation":
    {
      "policy":"SPECIFIC_REGIONS",
      "locations":
      {
        "REGION_B":{"region":"REGION_B"}
      }
    }
  }

替换以下内容:

  • PROJECT_ID:项目的 ID。
  • ZONE_A:磁盘的可用区。
  • REGION_A:磁盘的区域。
  • REGION_B:允许创建快照的区域。 您可以将多个区域设置为允许的访问位置。您必须将源磁盘所在的区域纳入允许的区域中。

设置允许的快照恢复位置

默认情况下,您可以将区域级和全球范围的快照还原到任何区域。如需为区域范围限定的快照配置恢复位置,请在项目级层设置允许的访问位置。您必须为每个项目单独设置允许的访问位置。设置访问位置后,您只能在这些位置恢复项目的区域范围快照。

gcloud

如需在所有区域内恢复某个区域(例如区域 A)的项目的快照,请使用 gcloud beta compute snapshot-settings update 命令

  gcloud beta compute snapshot-settings update \
      --project=PROJECT_ID \
      --region=REGION_A \
      --access-location-policy=all-regions

如需仅在区域 B 中恢复区域 A 中某个项目的快照,请使用 gcloud beta compute snapshot-settings update 命令

  gcloud beta compute snapshot-settings update \
      --project=PROJECT_ID \
      --access-location-policy=specific-regions \
      --region=REGION_A \
      --add-access-locations=REGION_B

替换以下内容:

  • PROJECT_ID:项目的 ID。
  • REGION_A:存储区域级快照的区域。
  • REGION_B:允许恢复区域范围限定的快照的区域。您可以将多个区域设置为允许的恢复位置。

REST

如需在所有区域内恢复某个区域(例如区域 A)的项目的快照,请向 regionSnapshotSettings.patch 方法发出 PATCH 请求:

  PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings?updateMask=accessLocation

  {
    "accessLocation":
    {
      "policy":"ALL_REGIONS"
    }
  }

如需仅在区域 B 内恢复某个区域(例如区域 A)的项目的快照,请向 regionSnapshotSettings.patch 方法发出 PATCH 请求:

  PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings?updateMask=accessLocation

  {
    "accessLocation":
    {
      "policy":"SPECIFIC_REGIONS",
      "locations":
        {"REGION_B":
          {"region":"REGION_B"}
        }
    }
  }

替换以下内容:

  • PROJECT_ID:项目的 ID。
  • REGION_A:存储区域级快照的区域。
  • REGION_B:允许恢复区域范围限定的快照的区域。您可以将多个区域设置为允许的恢复位置。

修改允许的快照恢复位置

gcloud

如需查看存储在区域 A 中的项目的快照的允许恢复位置,请使用 gcloud beta compute snapshot-settings describe 命令

  gcloud beta compute snapshot-settings describe \
      --project=PROJECT_ID \
      --region=REGION_A

如需从存储在区域 A 中的项目的快照的允许恢复位置列表中移除区域 B,请使用 gcloud beta compute snapshot-settings update 命令

  gcloud beta compute snapshot-settings update \
      --project=PROJECT_ID \
      --access-location-policy=specific-regions \
      --remove-access-locations=REGION_B \
      --region=REGION_A

替换以下内容:

  • PROJECT_ID:项目的 ID。
  • REGION_A:存储区域级快照的区域。
  • REGION_B:您要移除区域范围限定的快照的恢复访问权限的区域。

REST

如需查看存储在区域 A 中的项目的快照的允许恢复位置,请向 regionSnapshotSettings.get 方法发出 GET 请求:

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings

如需从存储在区域 A 中的项目的快照的允许恢复位置列表中移除区域 B,请向 regionSnapshotSettings.patch 方法发出 PATCH 请求:

  PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/snapshotSettings?updateMask=accessLocation

  {
    "accessLocation":
    {
      "policy":"SPECIFIC_REGIONS",
      "locations":
        {"REGION_B":{}}
    }
  }

替换以下内容:

  • PROJECT_ID:项目的 ID。
  • REGION_A:存储区域级快照的区域。
  • REGION_B:您要移除区域范围限定的快照的恢复访问权限的区域。