Compute Engine 永続ディスクの自動スナップショット設定について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。

この記事では、Compute Engine永続ディスクで自動バックアップ機能が無効化されている問題について、データ喪失リスクと自動スナップショットスケジュールによる対策方法を詳しく解説します。

ポリシーの説明

Google Cloud Compute Engineの永続ディスクには、定期的なスナップショットを自動作成する機能があります。自動バックアップが設定されていない場合、人為的ミスやシステム障害により重要なデータを失うリスクが高まります。

コンテナ環境などでVMを利用する場合には不要ではありますがデータを保持するような構成になっている場合においては必須で取得するようにしましょう。

修復方法

コンソールでの修復手順

Google Cloud コンソールを使用して、永続ディスクの自動スナップショットを設定します。

  1. スナップショットスケジュールの作成
    • Google Cloud Consoleにログインします
    • ナビゲーションメニューから「Compute Engine」→「スナップショット」を選択
    • 「スナップショットスケジュール」タブをクリック
    • 「スケジュールを作成」をクリック
  2. スケジュールの設定
    • 名前: わかりやすい名前を入力(例:daily-backup-schedule)
    • リージョン: ディスクと同じリージョンを選択
    • スナップショットの場所: 「マルチリージョン」または「リージョン」を選択
    • スケジュール頻度:
      • 毎時: 重要度の高いデータ用
      • 毎日: 一般的な本番環境用(推奨)
      • 毎週: 開発環境用
    • 開始時刻: バックアップを実行する時刻を設定
    • 保持ポリシー: スナップショットの保持期間を設定(例:7日間)
  3. ディスクへのスケジュール適用
    • 「Compute Engine」→「ディスク」に移動
    • 対象のディスクを選択
    • 「編集」をクリック
    • 「スナップショットスケジュール」セクションで作成したスケジュールを選択
    • 「保存」をクリック
  4. 動作確認
    • スケジュールに従ってスナップショットが作成されることを確認
    • 「スナップショット」ページで作成されたスナップショットを確認

Terraformでの修復手順

永続ディスクの自動スナップショットを有効にするTerraformコードと、主要な修正ポイントを説明します。

# スナップショットスケジュールの作成
resource "google_compute_resource_policy" "daily_backup" {
  name   = "daily-backup-policy"
  region = var.region

  snapshot_schedule_policy {
    schedule {
      daily_schedule {
        days_in_cycle = 1
        start_time    = "04:00"  # UTC時間で指定
      }
    }

    retention_policy {
      max_retention_days    = 7
      on_source_disk_delete = "KEEP_AUTO_SNAPSHOTS"
    }

    snapshot_properties {
      labels = {
        environment = var.environment
        auto_backup = "true"
      }
      guest_flush = true  # アプリケーション整合性のあるスナップショット
    }
  }
}

# 既存のディスクにスケジュールを適用
resource "google_compute_disk_resource_policy_attachment" "backup_attachment" {
  name = google_compute_resource_policy.daily_backup.name
  disk = google_compute_disk.main.name
  zone = var.zone
}

# 新規ディスク作成時にスケジュールを適用
resource "google_compute_disk" "main" {
  name  = "main-disk"
  type  = "pd-standard"
  zone  = var.zone
  size  = 100

  # スナップショットスケジュールの適用
  resource_policies = [
    google_compute_resource_policy.daily_backup.id
  ]

  # 暗号化設定(推奨)
  disk_encryption_key {
    kms_key_self_link = var.kms_key_id
  }
}

# 複数のスケジュールパターンの例
# 本番環境用:毎時スナップショット
resource "google_compute_resource_policy" "hourly_backup_prod" {
  name   = "hourly-backup-policy-prod"
  region = var.region

  snapshot_schedule_policy {
    schedule {
      hourly_schedule {
        hours_in_cycle = 1
        start_time     = "00:00"
      }
    }

    retention_policy {
      max_retention_days = 3  # 72時間保持
    }
  }
}

# 開発環境用:週次スナップショット
resource "google_compute_resource_policy" "weekly_backup_dev" {
  name   = "weekly-backup-policy-dev"
  region = var.region

  snapshot_schedule_policy {
    schedule {
      weekly_schedule {
        day_of_weeks {
          day        = "SUNDAY"
          start_time = "04:00"
        }
      }
    }

    retention_policy {
      max_retention_days = 30  # 4週間保持
    }
  }
}

 

最後に

この記事では、Compute Engine永続ディスクで自動バックアップ機能が無効化されている問題について、リスクと対策を解説しました。

自動スナップショットスケジュールの設定は、データ保護の基本中の基本です。適切なスケジュールと保持ポリシーを設定することで、ビジネス継続性を確保し、コンプライアンス要件を満たすことができます。

この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。

参考情報

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る