質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2000閲覧

s3のバケットポリシーとブロックパブリックアクセスの関係

ketuge

総合スコア27

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2021/12/25 04:46

下記の資料1にて以下の内容解説がされています。
資料1

問題提起:「S3 バケット設定のブロックパブリックアクセスをオンにするとOAI を使ったアクセスに失敗してしまう」

要件:「S3 への直アクセスは制限したいためOAI を使いつつ、ブロックパブリックアクセスをオンにしたい」

ここで自分のブロックパブリックアクセス(バケットポリシー側)の2種類の認識については以下です。

1.新しいパブリックアクセス可能なポリシーを割り当てることができない。
2.任意のパブリックバケットポリシーに書かれた許可内容をブロックする。

上記2の「任意のパブリックバケットポリシーに書かれた許可内容をブロックする」
というニュアンスについて
バケットに設定したあらゆるバケットポリシーのALLOWは拒否されるという認識を持っていました。

しかし、この資料1では、以下のバケットポリシー内容を削除することで OAI を使ってCloudFront 経由のアクセスが可能という説明になっています。

{ "Sid": "PublicReadForGetBucketObjects", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 バケット名>/*" }

ここで気になったのが今回の重要な点「S3 への直アクセスは制限したい

疑問点:
つまり、自分の認識は誤りでブロックパブリックアクセスというのは、「バケットポリシーに書かれたあらゆる許可を否定」ではなく
命名:PublicReadForGetBucketObjectsの"Principal": "*"設定のようなワイルドカードでの直接アクセスを拒否するが
経由するようなこちらでは

"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXX" }

許可されるという意味なのでしょうか?

もし、そうなら下記の資料2でブロックパブリックアクセス:ONにもかかわらず以下のポリシー権限をでユーザーに与えて、そのユーザーがアクセスできる内容にも納得がいきます。

資料2

{ "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/tutorialuser" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::190821testbucket" ] }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

仕様について知りたいのならまずは公式ドキュメントを読みましょう。
Amazon S3 ストレージへのパブリックアクセスのブロック

Amazon S3 はバケットやオブジェクトへのアクセスのリクエストを受け取ると、バケットやバケット所有者のアカウントに適用されているパブリックアクセスブロック設定があるかどうかを確認します。リクエストがアクセスポイントを経由している場合、Amazon S3 はアクセスポイントのパブリックアクセスブロック設定も確認します。リクエストされたアクセスを禁止する既存のパブリックアクセスブロック設定がある場合、Amazon S3 はそのリクエストを拒否します。

コンソールを見るとパブリックアクセスブロックには4つほど設定できる項目があることがわかるかと思います。
それらがどういう条件でアクセスブロックをするかは上記ドキュメント内に記載があります。

多分、今回のケースではBlockPublicPolicyに引っかかったんでしょうかね。

さて、もしこれを読まずに言葉だけの意味を考えたとして
「ブロックパブリックアクセス」とは「パブリックアクセスに対するブロック」であって、
単純に考えるとそれは「すべてのアクセスをブロックする」とは意味が異なるので

「バケットポリシーに書かれたあらゆる許可を否定」

という意味にはならないでしょう。その点でまず誤解があるかと思います。
本当に言葉の意味だけ考えればプライベートなアクセスをコントロールするものではないですからね。
公開していないバケットやオブジェクトに対して権限を持っているユーザやロールがアクセスするようなものはパブリックアクセスには該当しないでしょう。

投稿2021/12/25 08:41

yu_1985

総合スコア7440

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ketuge

2021/12/26 13:44 編集

ありがとうございます!! 下記の記事から コンソールの内容の「任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介して...アクセスをブロックする」を 「すべてのポリシーの設定自体をブロックするか否かの設定する」という意味にとらえてました。 でも、公式ドキュメントでは違う内容でした。公式ドキュメントを正として解釈を考えなおします。 https://zenn.dev/ymasutani/articles/019959e7c990b1
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問