S3 MFA Deleteとは
S3でオブジェクトを削除(※)する際にMFA認証を必須とする機能。
※ ここでいう削除は特定バージョンの削除。表面的なファイル削除は可能。
- 該当S3バケットのバージョニングが有効になっていることが前提条件
- マネジメントコンソール上でMFA認証は行えないため、同設定を行った場合、CLIからのみしか操作ができない
- 利用可能なMFA認証はrootアカウントのMFAデバイスのみとなる
- MFA Deleteが有効になっている際はバージョニングの無効化不可
ユーザの誤操作でバージョンが消失することを防ぎたい場合に有効か。
やってみる
注意:rootアカウントのアクセスキー/シークレットアクセスキーは作業完了次第、消す!
###1.事前準備
rootアカウントのアクセスキーID/シークレットアクセスキーをIAMから発行。またMFAデバイスのARNを控えておく。
###2.設定用profileの作成
rootアカウントで操作するための設定用profileを用意する(終わったら速やかに消す)
% aws configure --profile mfa-delete
AWS Access Key ID [None]: [rootアカウントのアクセスキーID]
AWS Secret Access Key [None]: [rootアカウントのシークレットアクセスキー]
Default region name [None]: ap-northeast-1
Default output format [None]:
###3.MFA Delete有効化
以下コマンドでMFA Deleteを有効化する。
% aws s3api put-bucket-versioning --bucket [バケット名] --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa '[MFAデバイスのARN] [MFAデバイスのトークン]' --profile mfa-delete
###4.結果確認
マネジメントコンソールからバージョンの削除を行ってもできない。
###5.後片付け
やめたいときはDisabledに戻す
% aws s3api put-bucket-versioning --bucket [バケット名] --versioning-configuration Status=Disabled,MFADelete=Enabled --mfa '[MFAデバイスのARN] [MFAデバイスのトークン]' --profile mfa-delete
rootアカウントのアクセスキーとprofileも忘れずに削除!