Cloud SQL自動バックアップ設定について

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

この記事では、Cloud SQLインスタンスで自動バックアップ機能が無効化されている場合のリスクと対策を解説します。

ポリシーの説明

Cloud SQLインスタンスで自動バックアップを有効化し、データの可用性と災害復旧能力を確保することが重要です。Cloud SQLの自動バックアップは、指定された時間枠内で毎日実行され、データベース全体のコンシステントなスナップショットを保存します。

自動バックアップが無効の場合、ハードウェア障害、人為的ミス、サイバー攻撃などによるデータ損失時に復旧できない可能性があります。また、ポイントインタイムリカバリ(PITR)機能も併せて有効化することで、特定の時点への復元が可能になります。

修復方法

前提条件の確認

修復を行う前に、以下を確認してください:

  • Cloud SQLインスタンスに対するcloudsql.editorまたはcloudsql.adminロールを保持していること
  • バックアップの保存先となるCloud Storageバケットの容量が十分であること
  • バックアップウィンドウ中のパフォーマンスへの影響を考慮していること

コンソールでの修復手順

Google Cloud コンソールを使用して、Cloud SQLインスタンスの自動バックアップを有効化します。

  1. Cloud SQLページへ遷移
    • Google Cloud Console にアクセスし、左側のナビゲーションメニューから「SQL」を選択する
  2. インスタンス一覧から、自動バックアップを有効化したいインスタンス名をクリック
  1. バックアップ設定の変更
    • インスタンスの詳細ページ上部の「編集」ボタンをクリック
    • 編集画面をスクロールし、「バックアップ、復元、高可用性」セクションを展開
  2. 自動バックアップの有効化
    • 「自動バックアップを有効にする」のチェックボックスをオンにする
    • バックアップウィンドウ: ビジネスへの影響が最小限の時間帯を選択(例:02:00-06:00 UTC)
    • バックアップの保持:
      • 「バックアップの数」を選択し、保持するバックアップ数を設定(推奨:7以上)
      • または「バックアップの日数」を選択し、保持日数を設定(推奨:30日以上)
    • ポイントインタイムリカバリ:
      • 「トランザクションログを有効にする」をチェック(強く推奨)
      • トランザクションログの保持日数を設定(デフォルト:7日)
  3. バックアップロケーションの設定(オプション)
    • デフォルト: インスタンスと同じリージョンに保存
    • マルチリージョン: 複数のリージョンにバックアップを保存(高可用性要件がある場合)
    • カスタムロケーション: 特定のリージョンを指定(コンプライアンス要件がある場合)
  4. 設定の保存
    • 画面下部の「保存」ボタンをクリックして変更を適用
    • 設定は即座に反映され、インスタンスの再起動は不要
    • 最初のバックアップは設定したウィンドウ内で実行されます

Terraformでの修復手順

Cloud SQLインスタンスの自動バックアップを有効化するTerraformコードと、主要な修正ポイントを説明します。

# Cloud SQLインスタンスの設定
resource "google_sql_database_instance" "main" {
  >>>> Skip
  settings {
    # バックアップ設定
    backup_configuration {
      # 自動バックアップを有効化
      enabled                        = true

      # バックアップ開始時刻(UTC)
      # ビジネスへの影響を最小化するため、トラフィックが少ない時間帯を選択
      start_time                     = "02:00"

      # ポイントインタイムリカバリを有効化(MySQL/PostgreSQL)
      point_in_time_recovery_enabled = true

      # トランザクションログの保持日数(PITR用)
      transaction_log_retention_days = 7

      # バックアップの保持設定
      backup_retention_settings {
        # 保持するバックアップ数(推奨:30以上)
        retained_backups = 30
        retention_unit   = "COUNT"  # COUNTまたはDAYSを指定可能
      }

      # バックアップロケーション(オプション)
      location = "asia"  # マルチリージョンバックアップ

      # バイナリログを有効化(MySQLの場合、PITRに必須)
      binary_log_enabled = true
    }
}

 

まとめ

この記事では、Cloud SQLインスタンスで自動バックアップ機能が無効化されている場合のリスクと対策を解説しました。

自動バックアップはデータ保護の基本であり、災害復旧計画の中核をなします。30日以上の保持期間を設定し、ポイントインタイムリカバリを有効化することで、より柔軟な復旧オプションを確保できます。また、定期的にリストアテストを実施し、バックアップからの復旧手順を検証することが重要です。

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

参考情報

公式ドキュメント

この記事をシェアする

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

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

料金プランを詳しく見る