Cloud Storageのライフサイクルルールでデータ管理とコスト最適化する手順

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

この記事では、Cloud Storageバケットでライフサイクルルールが未設定の場合のリスクと対策を解説します。

ポリシーの説明

Cloud Storageバケットでライフサイクルルールを設定することで、古いオブジェクトの自動削除やストレージクラスの自動移行が可能になります。これにより、不要なデータの蓄積を防ぎ、ストレージコストを最適化しながら、セキュリティリスクを低減できます。

以下の種別ごとにライフサイクルを設定できますので、ビジネス要件に応じて最適な設定を行うようにしましょう。

ライフサイクル条件の種類

  • age: オブジェクト作成からの経過日数
  • createdBefore: 特定の日付より前に作成
  • customTimeBefore: カスタムタイムより前
  • daysSinceCustomTime: カスタムタイムからの経過日数
  • daysSinceNoncurrentTime: 非現行バージョンになってからの経過日数
  • isLive: 現行バージョンかどうか
  • matchesPrefix: プレフィックスに一致
  • matchesStorageClass: ストレージクラスに一致
  • noncurrentTimeBefore: 非現行バージョンのタイムスタンプ
  • numNewerVersions: より新しいバージョンの数

修復方法

コンソールでの修復手順 Google Cloud コンソールを使用して、Cloud Storageバケットにライフサイクルルールを設定します。

  1. Google Cloud Consoleで「Cloud Storage」→「バケット」を開きます
  1. 対象のバケット名をクリックします
  2. 「ライフサイクル」タブを選択します
  3. 「ルールを追加」をクリックします
  1. アクションを選択します:
    • 「オブジェクトを削除」:指定条件でオブジェクトを自動削除
    • 「ストレージクラスを設定」:Nearline、Coldline、Archiveへの移行
  2. 条件を設定します:
    • 「経過日数」:オブジェクト作成から指定日数経過
    • 「作成日」:特定の日付より前に作成されたオブジェクト
    • 「カスタム時間」:カスタムメタデータに基づく条件
    • 「バージョン数」:保持するバージョン数を指定
  3. 「作成」をクリックしてルールを保存します

 

Terraformでの修復手順

Cloud Storageバケットにライフサイクルルールを設定するTerraformコードと、主要な修正ポイントを説明します。

# バケットの定義
resource "google_storage_bucket" "example" {
  name          = "my-secure-bucket-${data.google_project.current.project_id}"
  location      = "US"
  force_destroy = false

  # バージョニングを有効化(推奨)
  versioning {
    enabled = true
  }

  # ライフサイクルルール1: 90日経過したオブジェクトをNearlineに移行
  lifecycle_rule {
    condition {
      age = 90
    }
    action {
      type          = "SetStorageClass"
      storage_class = "NEARLINE"
    }
  }

  # ライフサイクルルール2: 180日経過したオブジェクトをColdlineに移行
  lifecycle_rule {
    condition {
      age = 180
    }
    action {
      type          = "SetStorageClass"
      storage_class = "COLDLINE"
    }
  }

  # ライフサイクルルール3: 365日経過したオブジェクトをArchiveに移行
  lifecycle_rule {
    condition {
      age = 365
    }
    action {
      type          = "SetStorageClass"
      storage_class = "ARCHIVE"
    }
  }

  # ライフサイクルルール4: 730日(2年)経過したオブジェクトを削除
  lifecycle_rule {
    condition {
      age = 730
    }
    action {
      type = "Delete"
    }
  }

  # ライフサイクルルール5: 古いバージョンの管理
  lifecycle_rule {
    condition {
      num_newer_versions = 3
    }
    action {
      type = "Delete"
    }
  }

  # ライフサイクルルール6: 一時データの自動削除(プレフィックスベース)
  lifecycle_rule {
    condition {
      age = 7
      matches_prefix = ["temp/", "tmp/"]
    }
    action {
      type = "Delete"
    }
  }

  # ライフサイクルルール7: ログファイルの管理(プレフィックスベース)
  lifecycle_rule {
    condition {
      age = 30
      matches_prefix = ["logs/", "audit/"]
    }
    action {
      type          = "SetStorageClass"
      storage_class = "NEARLINE"
    }
  }

  # その他のセキュリティ設定
  uniform_bucket_level_access {
    enabled = true
  }

  public_access_prevention = "enforced"

  labels = {
    environment = "production"
    managed_by  = "terraform"
  }
}

# ライフサイクルポリシー適用のためのカスタムメタデータ例
resource "google_storage_bucket_object" "example" {
  name   = "example-object"
  bucket = google_storage_bucket.example.name
  source = "path/to/file"

  # カスタムメタデータで削除日を設定
  metadata = {
    retention_days = "90"
    created_by     = "automated_process"
  }
}

# 監査ログ用の専用バケット(長期保持)
resource "google_storage_bucket" "audit_logs" {
  name          = "audit-logs-${data.google_project.current.project_id}"
  location      = "US"

  # 監査ログ用のライフサイクルルール
  lifecycle_rule {
    condition {
      age = 2555  # 7年間保持(規制要件に基づく)
    }
    action {
      type = "Delete"
    }
  }

  # コールドストレージへの移行
  lifecycle_rule {
    condition {
      age = 90
    }
    action {
      type          = "SetStorageClass"
      storage_class = "ARCHIVE"
    }
  }
}

 

最後に

この記事では、Cloud Storageバケットでライフサイクルルールが未設定の場合のリスクと対策を解説しました。

適切なライフサイクルルール設定により:

  • ストレージコストを最大90%削減
  • データ漏洩リスクを低減
  • 規制要件への自動準拠
  • 運用負荷の大幅な軽減

を実現できます。

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

参考情報

公式ドキュメント

この記事をシェアする

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

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

料金プランを詳しく見る