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認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
AWS CloudFormationでAmazon DynamoDBテーブルを作ってアイテムを追加する
デモ用にDynamoDBテーブルを作って消して、ということをたまにするので、Cl …
-
RDS + VPC + Lambda + API Gateway + CloudFront + WAF + ACMでAPIを構築する
RDSのMySQLの情報を与えられたリクエストをキーにしてjsonで返すAPIを …
-
CodeGuru ProfilerでLambda関数(Python 3.9)のパフォーマンスを確認した
CodeGuru ProfilerでPython 3.9のLambda関数の推奨 …
-
Rocket.ChatにAPIで投稿するテスト(Postman)
トレーニング期間中で一時利用するチャットが欲しいなあと思い、Rocket.Cha …
-
VPCピア接続ではピア先VPCのセキュリティグループIDを指定できる
タイトルどおりです。 できることは知ってたのですが、試したことがなかったので、確 …
-
AWS認定試験の自宅受験で壁のポスターを注意されちゃいました
AWS認定オンライン受験をしてみましたに書きましたとおり、自宅受験デビューしまし …
-
AWSルートユーザーのパスワード復旧
AWSルートユーザーのパスワード最設定は、メールアドレスだけでいいのですね。 M …
-
S3バケットポリシーで特定のVPCエンドポイント以外からのリクエストを拒否しつつメンテナンスはしたい
特定のVPCで実行されているEC2のアプリケーションからのリクエストだけを許可し …
-
EC2インスタンスが到達不能になって復旧してMackerelで監視し始めた
きっとばりばり使っておられる方ならよくある事なんだろうけど、はじめて体験したので …
-
Systems Manager パッチマネージャでベースラインを作成して適用する
ベースラインの作成 Systems Managerのパッチマネージャーでパッチベ …