【S3】バージョニング、MFA DeleteでS3バケットの偶発的な削除を防ぐ
S3バケットポリシーは、アクセス制御とデータ管理のために使用されますが、その機能は主に誰がどのようにバケットやその中のオブジェクトにアクセスできるかを制御することに集中しています。したがって、S3バケットポリシーによりアクセス権限を制御することは可能ですが、偶発的な削除を直接防止する機能は含まれていません。
S3バケットの偶発的な削除を防ぐためのメカニズムは、別途AWSによって提供されています。それは「バージョニング」と「MFA Delete(多要素認証削除)」と呼ばれる機能です。
-
バージョニング: これを有効にすると、S3はすべてのオブジェクトのバージョンを保存します。そのため、誤って削除または上書きした場合でも以前のバージョンに戻すことができます。
-
MFA Delete: これは、オブジェクトの削除やバージョニングの設定の変更を行う際に、多要素認証(MFA)を要求する機能です。これにより、誤って重要なデータを削除するリスクを軽減することができます。
したがって、S3バケットの誤った削除を防ぐためには、これらの機能を適切に使用することが推奨されます。
以下に、Amazon S3バケットでバージョニングとMFA Deleteを有効にする手順を説明します。ただし、これらの手順を実行するにはAWS Management Console、AWS CLI、またはSDKを使用する必要があります。
手順
バージョニングの有効化:
- AWS Management Consoleにログインし、S3サービスページに移動します。
- バージョニングを有効にしたいバケットを選択します。
- プロパティタブを選択し、バージョニングカードを見つけます。
- 「編集」をクリックし、「バージョニング」を有効にします。
- 「保存」をクリックして変更を適用します。
MFA Deleteの有効化:
MFA Deleteの有効化はAWS Management Consoleからは行うことができません。AWS CLIを使用してこれを行う必要があります。
- AWS CLIをインストールして設定します(既にインストールされていて設定済みである場合はこのステップをスキップ)。
- MFAデバイスがあなたのAWSアカウントに関連付けられていることを確認します。
- 以下のコマンドを実行してMFA Deleteを有効にします(
bucket-name
を適切なバケット名に、mfa-serial-number
をMFAデバイスのシリアル番号または仮想MFAデバイスのARNに、authentication-code-1
およびauthentication-code-2
をMFAデバイスから取得した2つの連続したMFAコードに置き換えます):
aws s3api put-bucket-versioning --bucket bucket-name --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "mfa-serial-number authentication-code-1 authentication-code-2"
注意: MFA Deleteの設定には、そのバケットの所有者(ルートアカウント)が必要です。IAMユーザーやIAMロールではMFA Deleteを設定することはできません。
これらの手順を実行することにより、バージョニングとMFA Deleteを有効にして、S3バケット内のデータを誤削除から守ることができます。
料金
Amazon S3のバージョニングとMFA Delete機能の使用には一部の料金が発生します。
バージョニング:
バージョニングを有効にすると、保存された全てのオブジェクトのバージョンがS3に保存されます。つまり、オブジェクトが何度も更新された場合、それぞれのバージョンが個別にストレージを占有します。そのため、バージョニングを有効にするとストレージ使用量が増え、それに伴い料金が増加する可能性があります。また、バージョン情報の取得や削除に対するリクエストも課金対象となります。
MFA Delete:
MFA Delete自体の使用には追加料金は発生しませんが、MFA Deleteを有効にすると、オブジェクトの削除またはバージョニング設定の変更に必要な追加のステップが発生します。これは操作の複雑さを増す可能性があります。
また、通常、MFAを設定するためにはハードウェアMFAデバイスを購入するか、仮想MFAデバイス(スマートフォンアプリなど)を使用する必要があります。ハードウェアMFAデバイスを購入する場合、そのコストを考慮する必要があります。仮想MFAデバイスを使用する場合、通常は追加の費用は発生しません。
したがって、これらの機能を使用することにより、S3の料金が増える可能性があることを理解しておくことが重要です。ただし、これらの機能はデータの偶発的な削除を防ぐための重要なツールであり、その保護を提供する価値は料金の増加を上回ることが多いです。
Discussion