【正解】B
【0からの解説】
「一定期間、誰にも削除させない」という WORM(Write Once Read Many)要件には S3 Object Lock を使います。Object Lock には2つのモードがあります。
・コンプライアンスモード:保持期間中は、ルートユーザーを含む誰もオブジェクトバージョンを削除・上書きできず、保持期間自体を短縮することもできません。規制対応の厳格な保護に使います。
・ガバナンスモード:s3:BypassGovernanceRetention 権限を持つ特権ユーザーは保護を解除して削除できます。
設問は「少なくとも3か月間は削除できないようにする」という確実な保護が要件なので、誰も削除できないコンプライアンスモードで保持期間3か月を設定するのが正解です。なお Object Lock はバケット作成時に有効化する必要があり(既存バケットでは原則 AWS サポート経由)、バージョニングも自動的に有効になるため、新しいバケットを使う選択肢が妥当です。
【誤りの選択肢】
A:IAM ポリシーによる拒否はあくまで権限ベースの制御で、ポリシーの変更・削除や別の権限を持つ主体によって回避できます。確実な削除防止にはなりません。
C:バージョニングとライフサイクルだけでは削除を防げません。バージョニングは削除マーカーを付けるだけで、誰でも DeleteObject を実行でき、特定バージョンの完全削除も可能です。
D:ガバナンスモードは BypassGovernanceRetention 権限を持つユーザーが保護を解除できるため、「少なくとも3か月削除できない」を厳密には保証できません。確実性を求める本設問ではコンプライアンスモードが正解です。
【参考】
S3 Object Lock の使用S3 Object Lock の保持モード(コンプライアンス/ガバナンス)