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認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
AWSアカウント ルートユーザーのMFAが使えなくなったので復旧
AWSのルートユーザーどころか、MFAが使えるログインすべてが使えなくなって焦り …
-
-
「JAWS-UG DE&I AWS re:Invent 2024 recap サーバーレス ハンズオン」でサポーターしてきました
JAWS-UG DE&I開催の「AWS re:Invent 2024 r …
-
-
特定AWSアカウント特定リージョンのSQSキューを削除するLambda(Python)
やりたいこと 特定アカウント内特定リージョン内のSQSキューを全部削除したいです …
-
-
EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効期限は短くできるのでしょうか
「EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効 …
-
-
Former2で既存リソースのCloudFormationテンプレート出力を試してみた
JAWS DAYS 2020の資料確認のお手伝いを少ししてまして、「ゼロからはじ …
-
-
IAMセッションポリシーの利用(GetFederationToken)
GetFederationTokenでのセッションポリシーは、呼び出し元のIAM …
-
-
AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの
勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …
-
-
AWS Organizations SCPで許可ポリシーの設定をし継承の関係を確認する
ユーザーガイドのサービスコントロールポリシーの例にはDeny(拒否)ばっかりでA …
-
-
AWS Lambdaで「Process exited before completing request」
AWS lambdaで「Process exited before comple …
-
-
X-Ray SDK for Python でライブラリへのパッチ適用
boto3でのAWS呼び出しとrequestsでの外部API呼び出しにパッチ適用 …

