Amazon S3バケットでMFA Deleteを有効にする
2021/08/23
バージョニングが有効なバケットでバージョン削除でMFA Deleteを有効にして、整合性を守ろうという機能です。
目次
設定をIAMユーザーで実行してみる
バケットにバージョニングとMFA Deleteを有効にできるのは、ルートユーザーだけとのことです。
AWS管理ポリシー AmazonS3FullAccessをアタッチしたユーザーで試してみました。
|
1 2 3 4 5 6 7 |
aws s3api put-bucket-versioning \ --bucket mfa-delete-test-yamashita \ --versioning-configuration Status=Enabled,MFADelete=Enabled \ --mfa "arn:aws:iam::123456789012:mfa/mfa-test-user 581922" An error occurred (AccessDenied) when calling the PutBucketVersioning operation: This operation may only be performed by the bucket owner |
バケットのオーナーしかだめですよ。
というようなメッセージです。
ルートユーザーで実行する
おとなしくルートユーザーで実行しました。
いやですがアクセスキーIDとシークレットアクセスキーを発行しました。
そしてコマンドを実行しました。
|
1 2 3 4 5 |
aws s3api put-bucket-versioning \ --bucket mfa-delete-test-yamashita \ --versioning-configuration Status=Enabled,MFADelete=Enabled \ --mfa "arn:aws:iam::123456789012:mfa/root-account-mfa-device 678391" |
特にレスポンスはありませんでしたが、設定できました。
バージョンを削除してみる
はい。
もちろんマネジメントコンソールからは削除できませんでした。
|
1 2 3 4 5 6 7 |
aws s3api delete-object \ --bucket mfa-delete-test-yamashita \ --key mfa-delete-1.png \ --version-id H.zY2NUm0kQ0mIacJGFR5.K2EOHFE0q7 An error occurred (AccessDenied) when calling the DeleteObject operation: Mfa Authentication must be used for this request |
CLIでMFAなしで実行するとMFAが必要というメッセージでした。
|
1 2 3 4 5 6 7 8 9 10 |
aws s3api delete-object \ --bucket mfa-delete-test-yamashita \ --key mfa-delete-1.png \ --version-id H.zY2NUm0kQ0mIacJGFR5.K2EOHFE0q7 \ --mfa "arn:aws:iam::123456789012:mfa/root-account-mfa-device 678391" { "VersionId": "H.zY2NUm0kQ0mIacJGFR5.K2EOHFE0q7" } |
MFAありで実行したら削除が完了しました。
これ、削除もルートユーザーが実行しないといけないので、アクセスキーID、シークレットアクセスキーを持ち続けないといけないので辛いですね。
オブジェクトロックのほうがいいですね。
実際の運用では、削除メンテナンスするときだけアクセスキーを作成するか、普段無効化しておくかですかね。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
AWS KMSのキーポリシーとアイデンティティベースポリシー
AWS KMSのCMKを作成する際に、管理者とキーユーザーを選択することで、以下 …
-
-
Lambdaバージョンとエイリアスとトリガー
Lambdaのバージョン、エイリアスにはそれぞれ別のトリガーが設定できます。 上 …
-
-
Route 53で不要なドメインを削除
勢いで作ったけど結局使うのをやめたドメインがあります。 要らないので削除しました …
-
-
S3をトリガーにしたときのLambdaのリソースベースポリシー
LambdaのトリガーでS3を設定したとき、自動的にLambdaのリソースベース …
-
-
EC2 Linux ユーザーデータ実行ユーザーとカレントディレクトリの確認
きっと、rootなんだろうなあと認識してたのですが、自分の目で確認したことはなか …
-
-
既存のAWSアカウントをAWS Control Towerに追加
Account Factoryからは既存アカウントは追加できない? AWS Co …
-
-
共有AMIのコピー時にエラー「You do not have permission to access the storage of this ami」
他アカウントから共有されたAMIをコピーする際に、「You do not hav …
-
-
JAWS-UG 大阪 関西女子合同 Amazon Personalizeハンズオンやってみました
久しぶりに大阪でJAWS-UGに参加です。 Amazon Personalize …
-
-
AWS Service CatalogポートフォリオをOrganizations組織で共有する
AWS Service Catalogチュートリアルで作成したポートフォリオのO …
-
-
CloudFormationで起動テンプレートのバージョン更新をした際にAuto ScalingのEC2インスタンスを置き換える
やりたいこと タイトルのとおり、起動テンプレートのバージョン変更(AMIの置換) …


