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


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

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

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、 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: リージョン スコープのスナップショットの復元アクセス権を削除するリージョン。