アプライアンス管理コンソールで Compute Engine インスタンスの保護を自動化する

このページでは、アプライアンス管理コンソールで タグを使用して Compute Engine インスタンスのバックアップを自動化する方法について説明します。

新しい Compute Engine インスタンスのバックアップを構成する

Compute Engine インスタンスは、でホストされる VM です。 Google Cloud. 各インスタンスは、インスタンスに接続されている Persistent Disk にデータを保存します。 インスタンスを作成したり、 マネージド インスタンスのグループを作成 したりするには、 Google Cloud コンソール、Google Cloud CLI、または Compute Engine API を使用します。

詳細については、Compute Engine をご覧ください。

バックアップを自動化するための前提条件

Compute Engine インスタンスのバックアップの自動化を開始する前に、次の手順を読んでバックアップの準備をしてください。

Backup and DR サービスを設定し、バックアップ プラン テンプレートを作成したら、タグを使用してバックアップ プラン テンプレートをインスタンスに適用することで、Compute Engine インスタンスの保護を自動化できます。

権限

Compute Engine リソースのタグ定義を作成、更新、削除するには、Tag Administrator ロールが必要です。 tagUser ロールの詳細については、必要な権限をご覧ください。

動的タグ付けを使用して Compute Engine インスタンスをバックアップするには、Compute Engine プロジェクト内のバックアップ/リカバリ アプライアンス サービス エージェントに Backup and DR Compute Engine オペレータ(roles/backupdr.computeEngineOperator)Identity and Access Management(IAM)ロールを付与する必要があります。

動的保護タグを管理する

動的保護タグを作成、更新、削除するには、ロールに 適切な権限 が必要です。次のいずれかのロールが割り当てられていることを確認してください。

  • Backup and DR 管理者

  • Backup and DR バックアップ ユーザー

  • Backup and DR ユーザー V2

  • プロジェクト編集者

  • プロジェクト オーナー

  • 次の権限を含むカスタムロール:

必要な権限

  • backupdr.managementServers.listDynamicProtection
  • backupdr.managementServers.getDynamicProtection
  • backupdr.managementServers.createDynamicProtection
  • backupdr.managementServers.deleteDynamicProtection
  • compute.instances.listEffectiveTags

Backup and DR サービスのロールの詳細をご覧ください。

タグを使用してバックアップ プラン テンプレートを自動的に適用する

このセクションでは、タグを使用してバックアップ プランを Compute Engine インスタンスに自動的に適用する方法について説明します。まず、アプライアンス管理コンソールでバックアップ プランとタグのマッピングを作成します。次に、アプライアンス管理コンソールで割り当てたのと同じ 値を使用して、IAMでタグを作成します。

動的保護タグの値を作成する

次の手順に沿って、Compute Engine インスタンスで使用できる動的保護タグの値を作成します。

  1. Backup and DR アプライアンス管理コンソールで、[バックアップ プラン] プルダウン メニューをクリックし、[動的保護タグ] を選択します。

  2. [動的保護タグを作成] をクリックします。

  3. 次の 命名要件に沿って、一意のタグ値を入力します。

  4. [アプリケーション タイプ] リストから [Compute Engine] を選択します。

  5. このタグ値に関連付ける対応するテンプレートプロファイル を選択します。

  6. [保存] をクリックします。動的保護タグの値が作成されます。

動的保護タグを作成する

次の手順に沿って、Compute Engine インスタンスにアタッチして保護を自動化する動的保護タグを作成します。

  1. タグの定義を作成、更新、削除するには、 Tag Administrator ロールか、特定の権限を含む 別のロールが必要です。

  2. [タグ] ページを Google Cloud コンソールで開きます。

    [タグ] ページを開く

  3. ページの上部にあるスコープ選択ツールから、タグキーを作成する組織またはプロジェクトを選択します。

  4. [ Create] をクリックします。

  5. [タグキー] ボックスに、タグキーとして「backupdr-dynamicprotect」と入力します。これは、自動化を成功させるために必須の手順です。スペルミスに注意し、必ずハイフンを含めてください。

  6. 省略可: [タグキーの説明] ボックスに、タグキーの説明を入力します。

  7. [ Add value] をクリックし、作成した タグ値を入力します。

  1. [タグ値] ボックスに、タグ値の表示名を入力します。これは、タグの名前空間名の一部になります。

  2. [タグの値の説明] ボックスに、このタグ値に関連付けられているテンプレートとプロファイルの説明を入力します。

  3. タグ値の追加が完了したら、[タグキーを作成] をクリックします。

リソースに動的保護タグを追加する

動的保護タグの値を作成して動的保護タグにリンクしたので、次のステップでは、Compute Engine インスタンスにタグを割り当てます。インスタンスが論理グループ内で保護されている場合、タグベースの保護は機能しません。論理グループを削除して、動的保護を使用してみてください。

次の手順に沿って、動的保護タグを Compute Engine インスタンスにアタッチできます。

  1. コンソールで、[Compute Engine] [>] [VM インスタンス] ページに移動します。 Google Cloud

    [VM インスタンス] に移動

  2. [名前] 列で、タグを追加する VM の名前をクリックします。

  3. [VM インスタンス] の詳細ページで、次の手順を実施します。

    1. [編集] をクリックします。
    2. [基本] セクションで [タグを管理] をクリックし、インスタンスに必要なタグを追加します。
  4. backupdr-dynamicprotect: キーと、コンソールで設定したテンプレートとプロファイルにマッピングされる対応するタグ値 を選択します。 Google Cloud

  5. [保存] をクリックします。

リソースの作成時にリソースにタグを追加する

状況によっては、リソースの作成後ではなく、リソースの作成時にリソースにタグを付ける場合があります。

コンソール

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. [タグとラベルを管理] をクリックします。

  5. [タグを追加] をクリックします。

  6. サイドパネルの指示に沿って、インスタンスに追加する backupdr-dynamicprotect を選択します。

  7. [保存] をクリックします。

  8. VM インスタンスの作成と起動の他の手順を完了して、インスタンスの作成を完了します。

gcloud

gcloud CLI または API を使用するには、SDK ドキュメントに沿って次の操作を行います。

Terraform

動的保護タグの使用を開始するには、次の Terraform テンプレートを使用します。このテンプレートは、コンソールで動的保護タグキーをまだ作成していないことを前提としており、設定を行います。 Google Cloud このテンプレートは、新しい Compute Engine インスタンスを作成し、動的保護タグにバインドします。スケジュールされた動的 保護ジョブが午前 4 時 15 分または午後 4 時 15 分(現地時間)に実行されるまで待ってから有効にすることも、 手動自動保護を実行するの手順に沿って動的保護ジョブをオンデマンドで実行することもできます。

variable "project_id" {
  description = "The ID of the existing Google Cloud project"
  type        = string
}

variable "region" {
  description = "The Google Cloud region where demo-instance should be created"
  type        = string
}

variable "zone" {
  description = "The Google Cloud zone where demo-instance should be created"
  type        = string
}

provider "google" {
  project = var.project_id
  region = var.region
  zone  = var.zone
}

data "google_project" "project" {
  project_id = var.project_id
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_key
resource "google_tags_tag_key" "key" {
  parent = "projects/${var.project_id}"
  short_name = "backupdr-dynamicprotect"
  description = "Tag key for Dynamic Protection."
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_value
resource "google_tags_tag_value" "value" {
  parent = "tagKeys/${google_tags_tag_key.key.name}"
  short_name = "backupdr-gold" # This value should be present in the "Management Console UI" > "Backup Plans" > "Dynamic Protection Tags"
  description = "Tag value for gold plan."
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance
# Ensure not to define tag in "resource_manager_tags" block while creating VM instance. It'll destroy the VM
# when tag value is changed/removed later. Instead define a separate tag binding using "google_tags_tag_binding"
# or "google_tags_location_tag_binding" resource. It'll modify just tag binding and VM instance won't be affected.

resource "google_compute_instance" "vm_instance" {
  name         = "demo-instance"
  machine_type = "e2-micro"
  zone         = var.zone

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral public IP
    }
  }
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_tags_location_tag_binding
resource "google_tags_location_tag_binding" "binding" {
    parent    = "//compute.googleapis.com/projects/${data.google_project.project.number}/zones/${var.zone}/instances/${google_compute_instance.vm_instance.instance_id}"
    tag_value = "tagValues/${google_tags_tag_value.value.name}"
    location  = var.zone
}

# Reference for Tag bindings at project/org level: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_binding

リソースからタグを削除する

タグ バインディング リソースを削除すると、リソースからタグを取り外すことができます。

タグを取り外す方法については、Resource Manager ドキュメントの リソースのタグの取り外し をご覧ください。

コンソール

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [名前] 列で、タグを追加する VM の名前をクリックします。

  4. [VM インスタンスの詳細] ページで、次の手順を実施します。

  5. [編集] をクリックします。

  6. [基本] セクションで [タグを管理] をクリックし、インスタンスの backupdr-dynamicprotect を削除します。

  7. [保存] をクリックします。

gcloud

gcloud CLI を使用するには、ドキュメントに沿って Google Cloud CLI を使用してリソースからタグをデタッチします

手動自動保護を実行する

保護エンジンは毎日午前 4 時 15 分と午後 4 時 15 分(現地時間)に実行されますが、次のコマンドを使用して動的保護エンジンをオンデマンドで実行することもできます。

  1. 「https://bmc-」で始まり「.com」で終わる値を入力して、アプライアンス管理コンソールのエンドポイントを設定します。例: https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

    export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
  2. ベアラートークンを生成します。

    echo "Generating a new bearer token..."
    export BEARER_TOKEN=$(gcloud auth print-access-token)
    echo "Bearer token generated: BEARER_TOKEN=$BEARER_TOKEN"
    
  3. 新しいセッション ID を取得します。

    echo "Generating a new session id..."
    export SESSION_RESPONSE=$(curl -XPOST -H "Authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" -d '{}' "$MC_ENDPOINT/actifio/session" 2>&-)
    export SESSION_ID=$(echo $SESSION_RESPONSE | jq -r '.session_id')
    
    if [ -z ${SESSION_ID} ]
      then echo "Issue with generating a new session id. Response: $SESSION_RESPONSE";
      return 1;
    fi
    
    echo "Session id generated: SESSION_ID=$SESSION_ID"
    

    エンドポイントを設定し、ベアラートークンを生成してセッション ID を取得したら、セッション ID が期限切れになるまで 1 時間、動的保護ジョブをトリガーできます。

  4. 動的保護ジョブをトリガーする

    動的保護ジョブは、すべての Compute Engine インスタンスを現在のタグで更新し、タグに基づいてバックアップ プランを割り当てます。トリガーされたジョブは、ワークロードの保留中の変更の数に応じて数分かかることがあります。

    echo "Triggering dynamic protection job.."
    
    curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPOST -d '{}' "$MC_ENDPOINT/actifio/dynamicprotection/job/gceinstance"
    
    echo "Dynamic protection job triggered."
    

Resource Manager で動的保護を使用する

動的保護タグを Resource Manager で使用すると、より高い 組織レベルで Compute Engine インスタンスの保護を自動化できます。Resource Manager を使用して、プロジェクト レベル以上のリソースにタグを付け、すべてのリソースで保護が継承されるようにします。詳しくは、ラベルの継承について 詳しくはこちらをご覧ください。

手動保護を動的保護に移行する

すでに保護されているリソースをタグを使用した動的保護に移行する場合は、プロジェクトで移行フラグを有効にする必要があります。 移行を有効にすると、手動で保護されたインスタンスで動的保護を使用できるようになります。タグとリソースを追加すると、タグに基づいて自動的に保護され、既存の手動保護が削除されます。

開始する前に、手動自動保護を実行する の手順に沿ってセッションを設定します。

Bash

次のコマンドを実行します。

  1. 「https://bmc-」で始まり「.com」で終わる値を入力して、アプライアンス管理コンソールのエンドポイントを設定します。例: https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

     #!/bin/bash
    
     export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
    
  2. 移行を有効にします。

    curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPATCH -d '{ "enableMigrationToTagBasedProtection":"true"}' "$MC_ENDPOINT/actifio/dynamicprotection/jobconfig"
    

アプライアンス管理コンソール

手動で保護された Compute Engine インスタンスのタグベースの保護への移行を有効にする手順は次のとおりです。

  1. [タグベースの保護への移行を有効にする] をオンに切り替えます。
  2. [移行を有効にする] ダイアログを確認します。手動で保護された Compute Engine インスタンスは、VM で定義されたタグを使用して再保護されます。

手動で保護された Compute Engine インスタンスのタグベースの保護への移行を無効にする手順は次のとおりです。

  1. [タグベースの保護への移行を有効にする] をオフに切り替えます。
  2. [移行を無効にする] ダイアログを確認します。これにより、手動で保護された Compute Engine インスタンスのタグベースの保護への移行が無効になります。

アクティビティと通知

動的保護エンジンが実行されたら、 モニタリング イベントで進行状況を確認できます。 アプライアンス管理コンソールは、動的保護アクションの実行後に概要通知を受け取ります。ユーザー操作が必要な場合は、エラー通知が送信されます。

ベスト プラクティス

動的保護により、実行中のバックアップ ジョブの数と使用されるストレージ容量が増加する可能性があります。最適な結果を得るには、次の点を考慮してください。

  • バックアップ ウィンドウを増やします。通常、6 ~ 10 時間のウィンドウで、すべてのジョブを完了できます。

  • 復元された VM は、ソース VM と同じ保護タグとバックアップ プランを引き継ぎますが、保護タイプはタグベースの保護からユーザーが開始した保護に変更されます。リソースは、引き継がれたバックアップ プランを使用して引き続き保護されます。保護タイプをタグベースの保護に戻すには、引き継がれた保護バックアップ プランを削除し、動的保護ジョブをオンデマンドでトリガーするか、次のスケジュールされた実行を待って、アプリケーションにタグベースの保護を再度割り当てます。

  • 既存のホストまたは新しく作成されたホストにマウントされた VM は、ソース VM と同じ保護タグを引き継がないため、マウント オペレーション後に自動的に保護されません。新しくマウントされた VM を保護する必要がある場合は、ソース VM と同様に、新しい VM にタグ バインディングを適用できます。