Web・インターネットの用語一覧へ
このページの目次

バケットポリシーとは?

読み方:バケットポリシー

最終更新:2026/08/18

3秒でわかる

S3バケットに直接付けるJSON形式のアクセス制御ルール。誰がどの操作を許されるかをバケット側でまとめて決められ、別アカウントへの許可も出せます。

もう少し詳しく

どういうものか

バケットポリシーは、Amazon S3 のバケットに直接付けるアクセス制御の設定です。JSONで記述し、Effect Principal Action Resource Condition の要素で「誰が」「何に」「何をできるか」を表します。リソース側に付ける権限なので、AWSアカウントの外にいる相手にも許可を出せる点が特徴です。

なぜ必要か

IAMポリシーは利用者や役割に付ける権限で、自分のアカウント内の相手にしか効きません。別のアカウントからの読み取りを許したい、CloudFront経由のときだけ配信を許したい、暗号化されていないアップロードを拒否したい、といった要件はバケット側で決める必要があります。オブジェクト1つずつにACLを付ける方法もありますが、数が増えると管理できません。バケットポリシーなら、バケット全体の方針を1か所にまとめられます。

具体例

特定のアカウントにだけ読み取りを許可する形です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPartnerRead", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::my-report-bucket/reports/*" }, { "Sid": "DenyInsecureTransport", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::my-report-bucket", "arn:aws:s3:::my-report-bucket/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }

後半の記述はHTTPでのアクセスを拒否するもので、多くの構成で定的に入ります。

つまずきやすいところ

Resource の書き分けを間違えると動きません。オブジェクトへの操作は arn:aws:s3:::bucket/*ListBucket のようにバケット自体への操作は arn:aws:s3:::bucket を指定します。片方だけ書いてアクセス拒否になる相談が非常に多いところです。

評価順も重要で、明示的な Deny はどんな Allow よりも優先されます。組織のポリシーやパブリックアクセスブロックの設定に Deny があると、バケットポリシーで Allow を書いても通りません。

そして最大の事故は "Principal": "*"s3:GetObject を全体に許してしまう公開設定です。静的サイト配信のつもりで付けた設定が、置いた覚えのある全ファイルを世界中から読める状態にします。配信はCloudFrontを前面に置き、バケットは非公開のままにする構成が現在の定石です。

似た用語との違い

仕組み付ける先主な用途
バケットポリシーバケットバケット全体の方針、アカウント外への許可
IAMポリシー利用者や役割自アカウント内の権限設計
ACLバケットやオブジェクト旧来の方式で、現在は無効化が推奨

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地バケットポリシーWeb

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

AWSクラウドコースの全編を見る