Amazon S3アクセスポイント経由からアクション可能なポリシー
2022/07/02
S3アクセスポイントを使うことで、複雑で長いバケットポリシーを避け、アクセスポイントごとにシンプルなポリシーを設定することができます。
S3本体のバケットポリシーでは、アクセスポイント経由のリクエストを許可する必要があります。
その際に、Conditionのs3:DataAccessPointAccountを使用することができます。
目次
S3バケット本体のバケットポリシー
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Resource": "arn:aws:s3:::ap-test-yamashita/*", "Condition": { "StringEquals": { "s3:DataAccessPointAccount": "123456789012" } } }, { "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:iam::123456789012:root", "arn:aws:iam::123456789012:role/role", "arn:aws:sts::123456789012:assumed-role/role/user" ] }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::ap-test-yamashita", "arn:aws:s3:::ap-test-yamashita/*" ], "Condition": { "StringNotEquals": { "s3:DataAccessPointAccount": "123456789012" } } } ] } |
アクセスポイントを使用していない場合、メンテナンスのために特定のIAMロールを引き受けたIAMユーザーのみが許可された場合、バケットとオブジェクトにアクセスできるようにDenyも設定しています。
S3アクセスポイントのポリシー
TestRoleを作成して、AWS管理ポリシーAWSCloudShellFullAccessをアタッチして、CloudShellからCLIで操作しました。
ですので、Principalはロールです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/TestRole" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:us-east-1:123456789012:accesspoint/test-role/object/test-role/*" } ] } |
実行
|
1 2 3 |
$ aws s3 cp test.txt s3://test-role-wtx56dzs3iz4uuifz5odcphhfzqosuse1a-s3alias/test-role/ upload: ./test.txt to s3://test-role-wtx56dzs3iz4uuifz5odcphhfzqosuse1a-s3alias/test-role/test.txt |
test-role-wtx56dzs3iz4uuifz5odcphhfzqosuse1a-s3aliasはS3アクセスポイント作成によって生成されたエイリアスで、バケット名の代わりに使用できました。
PutObjectが成功しました。
|
1 2 3 |
$ aws s3 cp test.txt s3://ap-test-yamashita/test-role/ upload failed: ./test.txt to s3://ap-test-yamashita/test-role/test.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied |
バケットへの直接リクエストは失敗しました。
想定通りの動作でした。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
AWS Summit 2017 Tokyo Day2 開場~基調講演
昨年に引き続き今年もAWS Summit Tokyoへ行ってきました。 朝一の新 …
-
-
AWSアカウントrootユーザーのメールアドレスを変更
昔、うっかり会社の個人メールアドレスで作ってしまったAWSアカウントがあるのでメ …
-
-
Lambda関数をPython3.6から3.9に変更
CodeGuru ProfilerでLambda関数(Python 3.9)のパ …
-
-
ちょっとしたCLI作業にEC2起動テンプレート
CLIでちょっとした作業したいだけのときに、Cloud9を使うまでもないなあと思 …
-
-
AWS CodeStarで静的webサイトのテンプレートプロジェクトを作成する
執筆環境の検討中です。 CodeCommitは使うつもりで、コミットしたときにE …
-
-
「AWS認定試験対策 AWS クラウドプラクティショナー」の出版が確定したのでAmazon著者セントラルに登録した
初の執筆本、「AWS認定試験対策 AWS クラウドプラクティショナー」の出版が確 …
-
-
「re:CAP ~サーバーワークス re:Invent 2018 報告会~」でre:Invent2018について思われたことを聞かせていただいた
サーバーワークスさんのre:Invent re:CAPにおじゃましました。 re …
-
-
AWS Lambda(Python)からTwitterに投稿する
「GoogleフォームからAPI Gatewayで作成したREST APIにPO …
-
-
ハンズオン: IAMロール、Secrets Manager、KMS ~AWS認定デベロッパーアソシエイト(DVA-C02)~
このブログは2026年6月29日翔泳社さんより発売される「AWS教科書 AWS認 …
-
-
AWS Expert Online at JAWS-UG首都圏エリアに参加して「Amazon EC2 スポットインスタンス再入門」を聞いてきた
AWS Expert Onlineという勉強会がありまして、AWS ソリューショ …

