S3 バケットのバージョニングが無効

S3 のオブジェクトバージョンを保持し、上書きや削除後に以前の内容を復元できるようにしてください。

説明

S3 のバージョニングを使わないと、オブジェクトの上書きや削除後に以前の状態へ戻すことが難しくなります。運用ミス、デプロイの誤り、悪意のある変更が発生した場合の復旧手段が限られます。

VersioningConfiguration.Status: Enabled は、その後のオブジェクト変更に対するバージョンを保持します。有効化前に失われたデータを復元するものではありません。バージョニングを停止しても既存のバージョンは残ります。

想定される影響

  • オブジェクトの上書きや削除後に以前の内容を復元できない場合があります。
  • 運用ミスや自動化処理の誤りからの復旧に時間がかかる可能性があります。

対処方法

  • 復旧用の履歴が必要なバケットに VersioningConfiguration と Status: Enabled を設定してください。
  • 保持期間とストレージ費用を考慮してライフサイクルを設定し、バージョンを完全に削除する権限を制限してください。
  • バージョンの作成と復元をテストしてください。変更できない保持が必要なら、Object Lock などの追加保護を検討してください。

例

以下は、同じバケットでバージョニングを有効にする抜粋です。レプリケーション設定は含みません。

変更前

yaml
Resources:
  RecordServiceS3Bucket:
    Type: AWS::S3::Bucket

新しいバケットでバージョニングを有効にしていません。上書きや削除後に以前の内容が残らない可能性があります。

変更後

yaml
Resources:
  RecordServiceS3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      VersioningConfiguration:
        Status: Enabled

以後の変更に対するバージョンを保持します。ライフサイクルによる期限切れやバージョンの完全削除で失われる場合があるため、バージョニングだけで変更不能なバックアップが保証されるわけではありません。

参考資料