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


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

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

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      如需了解详情,请参阅 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

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

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

如需让某个项目在区域 A 的快照只能在区域 B 中恢复,请使用 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"
    }
  }

如需让某个项目在区域 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":
          {"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:您要为其移除恢复访问权限的区域范围限定快照所在的区域。