はじめに
インフラ運用において、一番背筋が凍るのは「間違えて本番の重要ファイルを消してしまった」「上書きしてしまった」という瞬間ですよね。 IAMで権限をしっかり絞っていても、管理者権限を持った自分自身のヒューマンエラーや、最悪の場合ランサムウェアなどによる破壊は完全に防ぐことはできません。
そんな「絶対に消してはいけないデータ」を守るための最終兵器が、S3の「オブジェクトロック」機能です。 この設定をすると、指定した期間内は「AWSのルートユーザー(最強の管理者)であっても絶対にファイルを削除・上書きできない」という無敵のバケットを作ることができます。
以前はバケット作成時にしか設定できなかった機能ですが、現在はすでに運用している既存バケットにも後から設定できるようになりました。 今回は、既存のS3バケットに対してこの最強の防具を適用し、本当に自分がファイルを消せなくなるのか検証してみました。
今回の要件(やりたいこと)
- 対象: すでに作成済みのバケット(demo-private-2026)
- 設定: オブジェクトロック機能を後から有効にする
- 検証: 保持期間を「1日」の最強モード(コンプライアンスモード)に設定し、管理者である自分がファイルを消そうとして「アクセス拒否」されることを確認する
さっそく既存バケットに設定してみた
1. オブジェクトロックを有効にする
AWSマネジメントコンソールから、対象のバケット(demo-private-2026)の詳細画面を開き「プロパティ」タブに移動します。 少し下にスクロールすると「オブジェクトロック」の項目があるので「編集」をクリックします。
「有効にする」を選択すると、「このバケット内のオブジェクトが永続的にロックされることを了承します」という黄色い警告枠が出るので、了承のチェックボックスにチェックを入れます。 (※事前にバケットのバージョニングを有効にしておく必要があります。もし無効の場合は、ここで自動的に有効化されます)

2. デフォルトの保持ルールを設定する(ここが重要!)
同じ画面のすぐ下にある「デフォルトの保持」で「有効にする」を選択します。
すると詳細設定が開くので、以下のように入力します。
- デフォルトの保持モード: 「コンプライアンス」を選択
- デフォルトの保持期間: 「1」「日」と設定
最後に右下の「変更の保存」を押せば設定完了です。
(※注意:コンプライアンスモードはAWSのルートユーザーすら削除できなくなる仕様です。テスト目的で保持期間を「10年」などにすると、本当に10年間バケットを消せなくなりストレージ料金が掛かり続けるので、検証の際は必ず「1日」などにしてください!)

いざ検証!本当にファイルは消せないのか?
設定が終わったので、実際にテスト用のファイルをアップロードして、削除を試みてみます。
アップロード後、ファイルの詳細画面にある「オブジェクトロック」の項目を見ると、保持期限が「アップロードした時間のちょうど24時間後」に設定されていました。デフォルトルールの自動適用、ばっちりです。

1回目の削除テスト(通常の削除)
まずはファイルの一覧画面から対象ファイルを選択し、普通に「削除」ボタンを押してみます。「削除」と入力して実行すると……。
あれ?普通に「正常に削除されました」と緑のバナーが出て、ファイルが一覧から消えてしまいました。 絶対に消せない最強の盾とは一体何だったのか……?


2回目の削除テスト(真の削除への挑戦)
実はこれ、S3の「バージョニング機能」によるマジックです。 S3の標準の削除操作では、本当にファイルが消えたわけではなく、「削除マーカー」という見えないフタが被さって一時的に見えなくなっただけなのです。
ファイル一覧画面の右上にある「バージョンの表示」というスイッチをオンにしてみます。 すると、先ほど消したはずのファイル本体(バージョンID付き)が、削除マーカーの下にしっかり残っていることが確認できます。

では、この「バージョンIDがついた本物のファイル」を選択して、もう一度「削除」を実行してみます。「完全に削除」と入力して、いざ実行!

「オブジェクトの削除の失敗」!!!
赤文字で無慈悲なエラーが出ました。 強い権限を持っているアカウントで操作しているにも関わらず、S3から「保持期限内だから絶対に消せないよ」と弾かれました。これぞコンプライアンスモードの真骨頂です。
おわりに
自分でアップロードしたファイルを、自分でも消せなくなる。なんとも不思議な感覚ですが、これが「絶対にデータを守る」ということです。
一見普通に消せたように見えて、裏側(過去のバージョン)の本体を消そうとすると強烈にブロックされるという挙動は、実際に手を動かしてみないと分からない面白い体験でした。
- 監査用のアクセスログ
- 電子帳簿保存法に対応した請求書や領収書のデータ
- 絶対に上書き・削除してはいけないシステム設定ファイル
こういったデータを扱う際、このオブジェクトロックを設定しておけば、オペミスによるデータ消失も、悪意のある攻撃も完全に防ぐことができます。 既存のバケットにもプロパティ画面からサクッと適用できるので、重要なデータを守りたい方はぜひ試してみてください!
(※繰り返しますが、テスト検証時の保持期間だけは本当にお気をつけください!)