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認定クラウドプラクティショナー 改訂第2版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
Amazon S3アクセスポイント経由からアクション可能なポリシー
S3アクセスポイントを使うことで、複雑で長いバケットポリシーを避け、アクセスポイ …
-
ハンズオン目的アカウントに設定しているSCPポリシー
AWS Organizationsでハンズオン目的のアカウントに設定しているSC …
-
API Gateway 作成済REST APIの定義をSwaggerの形式でエクスポート
SAMで似たようなAPIを作りたくて、エクスポートしました。 Swaggerは、 …
-
Feedlyのフィードを自動でSlackへ投稿する(AWS Lambda , Amazon DynamoDB)
やりたいこと Feedlyで共有したいフィードに特定のタグを付けます。 特定のタ …
-
共有AMIのコピー時にエラー「You do not have permission to access the storage of this ami」
他アカウントから共有されたAMIをコピーする際に、「You do not hav …
-
AWS Systems Manager Session ManagerでLinuxインスタンスのRun Asサポートを有効にする
AWS Systems Manager Session Managerの設定画面 …
-
Azure AD SSOからAWS SSOに統合するための提供情報
Azure AD SSO担当者に送る情報をこちらの記事を見て確認しました。 チュ …
-
AWS認定SAPの執筆開始にあたって環境を構築しました
AWS認定ソリューションアーキテクトプロフェッショナル対策本の執筆開始にあたりま …
-
Microsoft TeamsのOutgoing Webhooksを使ってAWS Lambda(Python), Amazon API Gatewayとbot
Microsoft Teamsの検証その2、Slackで実装しているbotも対応 …
-
AWS CLIを使用せずにCodeCommitへSSHユーザーで接続する
AWS CLIやアクセスキーID、シークレットアクセスキーなどを開発環境にセット …