リージョン スコープのスナップショットの作成場所と復元場所を設定する


デフォルトでは、スナップショットはグローバル スコープで作成されます。グローバル スコープのスナップショットは特定の保存場所に保存され、任意のリージョンまたはゾーンに復元(新しいディスクの作成に使用)できます。ロケーション ベースの分離制御を導入するため、リージョン スコープのスナップショットを作成できます。リージョン スコープのスナップショットは、すべてのスナップショット データとメタデータをスコープ対象のリージョンにまとめて保存します。リージョン スコープのスナップショットを使用して、スナップショットの作成と復元を行うリージョンを制限することもできます。

このドキュメントでは、リージョン スナップショットの作成と復元を許可する場所を設定する方法について説明します。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、 Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して 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: リージョン スコープのスナップショットの作成を許可するリージョン。許可するアクセス場所として複数のリージョンを設定できます。許可するリージョンの 1 つとして、ソースディスクが保存されているリージョンを含める必要があります。

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: スナップショットの作成を許可するリージョン。許可するアクセス場所として複数のリージョンを設定できます。許可するリージョンの 1 つとして、ソースディスクが保存されているリージョンを含める必要があります。

許可されたスナップショット復元場所を設定する

デフォルトでは、リージョン スコープとグローバル スコープのスナップショットを任意のリージョンに復元できます。リージョン スコープのスナップショットを復元できる場所を設定するには、許可されたアクセス場所をプロジェクト レベルで設定します。許可されたアクセス場所は、プロジェクトごとに個別に設定する必要があります。アクセス場所を設定すると、当該プロジェクトのリージョン スコープのスナップショットはそれらの場所にのみ復元できるようになります。

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

リージョン 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: リージョン スコープのスナップショットの復元許可を取り消すリージョン。