[小ネタ]S3オブジェクトロックを誤って設定したらどうなるのか?

2018.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。DI部の大高です。

わたしはなかなかのうっかり者なのですが、そんなうっかり者に気になる新機能「S3オブジェクトロック」の情報が入ってきました。

S3オブジェクトロックとは

S3オブジェクトロックの詳細については、濱田さんの記事をご参照ください。

S3オブジェクトのロック(なにをどうやっても改竄削除が不可)がリリースされました! #reinvent | DevelopersIO

ここでうっかり者としてとても気になったのは「間違って設定したらどうなるのか?」です!

まずはさっそく試してみます。

S3バケットの作成

S3バケットを作成します。

バケット名を入力して「次へ」をクリック。

「バージョニング」と「オブジェクトのロック」を有効にします。あとはデフォルトのまま作成です。

ファイルのアップロード

では、ファイルをアップロードしてみます。

ファイルを追加して、まずはそのまま「アップロード」します。

オブジェクトロックの設定

無事にアップロードができたら、アップロードされたファイルをクリックします。

「プロパティ」タブを開きます。

「オブジェクトのロック」をクリックします。

「リテンションモード」を「コンプライスモードを有効にする」にします。「法的保有」は「有効」にして「保存」します。

「本当に本当にいいのか?」という強い意思を感じるダイアログが出てきます。ここでうっかり者としては何も考えず言われるがまま「確認」と入力して「確認」ボタンを押します。

これでオブジェクトがしっかりとロックされました。そして後で「あれ?リテンション期限いつにしたっけ?」と気づくのです・・・。

ファイルを削除してみる

バージョン表示を有効にして、該当バージョンのオブジェクトを削除してみます。

普通に削除できそうなので「削除」ボタンをクリックします。

何事もなかったかのように表示されています。

バケットを削除してみる

こうなったらバケットだ!とバケットを削除します。

これまた普通に削除できそうなので「バケット名」を入力して「確認」ボタンをクリックします。

何事もなかったかのように表示されています。

ファイルの設定を元に戻せないのか?

「これは困った」とファイルのプロパティに戻って、設定を見直します。すると以下のように「リテンションモード」は変更できなくなっています。「リテンション期限」は変更できますが、最初に設定した日付より未来の日付でないと変更できません。

「法的保有」については、変更ができます。

試しに「リテンション期限」に過去日付を入力したら怒られました。

バケットの設定でどうにかならないのか?

「そうだ。バケットのバージョニングを無効にしてしまえばいいのでは?」と「バージョニングの停止」を選んで「保存」ボタンをクリックしてみます。

「バケットにWORM設定してあるから変更できないよ」と怒られました。

ちなみに「オブジェクトロック」の設定は、ロック設定を行わずにアップロードしたファイルの扱いをデフォルトでどうするかの設定なので、元々「なし」になっていました。ゆえに、ここの設定ではロック解除はできません。

まとめ

と、いうことでオブジェクトがしっかりとロックされてどうやっても削除できないことが確認できました。ちなみにルートアカウントをもっている環境でも試しましたが、同じく削除できませんでした。

今のところは、どうやっても削除できなくなるのでうっかりと大きいファイルをアップロードして「リテンション期限」を遠い未来に設定しないように十分に十分に十分に気を付けてください。

それでは。