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
関連記事
-
-
Redmineの添付ファイルをS3に同期する
RedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ …
-
-
RDS自動バックアップの自動クロスリージョンコピー
このブログのRDS for MySQLはAWS Backupで大阪リージョンから …
-
-
Amazon Linux 2023、T4Gインスタンス、PHP8にWordPressを移行しました
ブログをAmazon Linux 2からAmazon Linux 2023に移行 …
-
-
AWS LambdaをVPC設定したときに「The provided execution role does not have permissions to call CreateNetworkInterface on EC2」
The provided execution role does not hav …
-
-
Amazon VPCのAmazonProvidedDNSとほかメモ
VPCユーザーガイドのAmazon DNS について理解するの記載内容について実 …
-
-
Amazon LinuxにRedmine をインストールする(手順整理版)
Amazon LinuxにRedmineをインストールしました手順を記載します。 …
-
-
Mountpoint for Amazon S3を試しました
このブログでは、画像などの配信にS3を使用しています。 WordPressのプラ …
-
-
Amazon API GatewayのIAM認証の動作を確認しました
API GatewayのIAM認証は、IAMユーザーが実行できるように認証する、 …
-
-
RDS + VPC + Lambda + API Gateway + CloudFront + WAF + ACMでAPIを構築する
RDSのMySQLの情報を与えられたリクエストをキーにしてjsonで返すAPIを …
-
-
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー」を執筆いたしました
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー」という本の第 …