ユーザーによる削除マーカーの削除を制御する方法を教えてください

2023.10.05

困っていること

バージョニングを有効にしている S3 バケットがあります。
レプリケーション機能を利用して、S3 バケットの内容を同じにしたいものの、ドキュメント 記載の通り、削除マーカーを削除した場合はレプリケーションされないため、ユーザーによる削除マーカーの削除を制御する方法があれば教えてください。

DELETE リクエストで削除するオブジェクトバージョン ID を指定した場合、Amazon S3 はレプリケート元バケット内のそのオブジェクトバージョンを削除します。しかし、レプリケート先バケット内でその削除をレプリケートすることはありません。これは、レプリケート先バケットからは、同じオブジェクトバージョンを削除しないことを意味します。これは悪意のある削除からデータを保護します。

どう対応すればいいの?

一例として、MFA Delete を有効にする ことをご検討ください。
こちらを利用することで、バージョンを指定してオブジェクトの完全な削除をする際に "x-amz-mfa" ヘッダーを必要とするため、ルートユーザーによる追加の制御が行えます。

バケットのバージョニング設定で MFA Delete が有効になっている場合に、オブジェクトバージョンを完全に削除したり、バケットのバージョニング状態を変更したりするには、バケット所有者はリクエストに x-amz-mfa リクエストヘッダーを含める必要があります。x-amz-mfa を含むリクエストでは、HTTPS を使用する必要があります。
ヘッダーの値は、認証デバイスのシリアル番号、スペース、および認証デバイスに表示される認証コードの連結文字です。このリクエストヘッダーを含めないと、リクエストは失敗します。
認証デバイスの詳細については、「多要素認証」を参照してください。

手順については、AWS re:Post をご参考に設定してください。

参考資料