[アップデート] 既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになりました

コンプライアンス要件が変わった場合に対応しやすくなった
2023.12.31

S3バケット作成後にオブジェクトロックの設定が必要になった

こんにちは、のんピ(@non____97)です。

皆さんはS3バケット作成後にオブジェクトロックの設定が必要になった経験はありますか? 私はあります。

基本的にオブジェクトロックを有効にできるタイミングはS3バケット作成時のみでした。もし、S3バケット作成後にオブジェクトロックを有効化したい場合は、以下記事で紹介しているとおり、AWSサポートに既存バケットのS3オブジェクトロックを有効化したい旨をサポートケース起票で伝えます。

既存S3バケットのオブジェクロックの有効化ができるといってもサポートに問い合わせるのは少し手間ですよね。

2023/11/20より、既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになりました。

実際に触ってみたので紹介します。

いきなりまとめ

  • 既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになった
  • オブジェクトロックを有効化してもらっても既存オブジェクトはオブジェクトロックは設定されない
    • オブジェクトロックされる対象はオブジェクトロック有効後に作成されたオブジェクトのみ
    • 一つづつオブジェクトごとにオブジェクトロックを設定するか、バッチオペレーションで複数のオブジェクトをまとめて設定する

やってみた

S3バケットの用意

検証用のS3バケットを用意します。

オブジェクトロックは無効の状態で作成します。

S3バケット作成時のオブジェクトロック設定

S3バケット作成後、オブジェクトを作成します。

オブジェクトのアップロード

オブジェクトロックの有効化

早速オブジェクトロックを有効化します。

作成したS3バケットのプロパティからオブジェクトロック編集をクリックします。

デフォルトのオブジェクトロック

オブジェクトロックはバージョニングされたバケットでのみ機能しますと表示されました。

オブジェクトロックはバージョニングされたバケットでのみ機能します

バージョニングを有効化しないままオブジェクトロックを有効化しようとします。

オブジェクトロックを編集

すると、Versioning must be 'Enabled' on the bucket to apply a Object Lock configurationと怒られました。

Versioning must be 'Enabled' on the bucket to apply a Object Lock configuration

バージョニングの有効化をクリックしてバージョニングを有効化します。その上で、オブジェクトロックを有効化します。

オブジェクトロックの有効化

設定後のバージョニングを確認すると、確かにバージョニングが有効化になっていました。

このバケットに対してオブジェクトロックが有効になっているため、バケットのバージョニングを停止できません。

オブジェクトロックも有効化されています。

変更後のオブジェクロック

既存のS3バケットのオブジェクトの削除

既存のS3バケットのオブジェクトを削除しようとしてみます。

ガバナンスモードよりもコンプライアンスモードの方が分かりやすいと思うので、S3バケットのデフォルトの保持モードをコンプライアンスモードに変更します。

コンプライアンスロックに変更

確認を促されたので、確認と入力してコンプライアンスモードを有効にします。

コンプライアンスモードを有効にする

コンプライアンスモードになったことを確認しました。

コンプライアンスモードになったことを確認

オブジェクトのプロパティタブに記載のオブジェクト管理の概要からもデフォルトがコンプライアンスモードになっていることが確認できました。

オブジェクトもコンプライアンスモードに変わったことを確認

なお、オブジェクトにはオブジェクトロックの設定されていません。ここから、オブジェクトロックを有効化してもらっても既存オブジェクトはオブジェクトロックは設定されないことが分かります。

test2のオブジェクトロック

オブジェクトを削除します。

オブジェクトの削除

オブジェクトを削除すると削除マーカーが追加されました。古いオブジェクトを削除します。

古いオブジェクトの削除

オブジェクトを完全に削除しようとします。

オブジェクトロックが有効になっているバケットからのオブジェクトの削除

問題なく削除されました。これはバケットレベルではオブジェクトロックが有効化されていますが、オブジェクトにはオブジェクトロックが設定されていないためです。

オブジェクトが削除されたことを確認

新しくアップロードしたオブジェクトを削除しようとしてみる

新しくオブジェクトをアップロードします。

アップロードしたオブジェクトのプロパティを確認すると、コンプライアンスモードでオブジェクトロックが設定されていました。

再アップロードしたtest1のオブジェクトロック

こちらのオブジェクトを削除しようとすると、削除に失敗しました。オブジェクトロックがしっかり効いていますね。

オブジェクトの削除の失敗

コンプライアンス要件が変わった場合に対応しやすくなった

既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになったアップデートを紹介しました。

監査などでコンプライアンス要件を見直す必要がある場合に簡単に対応できるようになりました。

オブジェクトロックを有効化してもらっても既存オブジェクトはオブジェクトロックは設定されないのは注意が必要ですね。既存のオブジェクトにオブジェクトロックを設定したい場合は、一つづつオブジェクトごとにオブジェクトロックを設定するか、バッチオペレーションで複数のオブジェクトをまとめて設定しましょう。

バッチオペレーションによる設定は以下AWS公式ドキュメントに記載されています。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!