S3バージョニング設定の確認

S3のバージョニングでオブジェクトの変更や削除に備えてください。

説明

バージョニングは、オブジェクトが上書きされたり通常の削除リクエストで削除されたりした場合に、以前のバージョンを復元できるようにする保護機能です。無効な場合、誤って削除したファイルや誤った内容で上書きしたファイルの復元が難しくなります。

バージョニングは変更不能な保持を保証しません。権限のあるプリンシパルは特定のバージョンを完全に削除でき、有効化する前に失われたデータを復元することもできません。

想定される影響

  • 削除や上書き後に、以前の内容を復元しにくくなります。
  • 一度の操作ミスで、運用ファイル、バックアップ、デプロイ用資産が失われるおそれがあります。
  • 悪意のある変更やランサムウェアへの対応で、復元の選択肢が少なくなります。

対処方法

  • aws_s3_bucket_versioningでstatus = "Enabled"を設定してください。重要なバケットの作成テンプレートにはバージョニングを含めてください。
  • 保持期間とストレージコストを考慮してライフサイクルポリシーを管理し、復元手順を試験してください。
  • バージョンの削除権限を制限し、変更不能な保持が必要ならS3 Object Lockも検討してください。

例

以下は、AWSプロバイダー3.xのインラインversioningとACLの構文を使った例です。現在の構成では個別のバージョニングリソースを使い、バケット名を実際の値に置き換えてください。

変更前

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }

  versioning {
    enabled = false
  }
}

変更後

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }

  versioning {
    enabled = true
  }
}

説明:

変更後はバージョニングを有効にし、その後のオブジェクト変更で以前のバージョンを保持できるようにします。削除マーカーとバージョンの完全削除を区別し、必要なバージョンを実際に復元できることを確認してください。

参考資料