[アップデート]AWS OrganizationsにアカウントレベルのS3 ブロックパブリックアクセス(BPA)が統合管理できる「S3ポリシー」が登場しました
あしざわです。
AWS OrganizationsでS3ポリシーが利用可能になり、組織全体でS3リソースの設定を一元管理できるようになりました。
それでは詳しくみていきましょう。
概要
Organizationsポリシーとは
S3ポリシーはAWS Organizationsの管理ポリシーの一つです。
管理ポリシーとは、一部のAWSサービスや機能をOU・AWSアカウント単位で一元管理できる機能です。
Organizationsのポリシーといえば、SCP(Service Control Policy)やRCP(Resource Control Policy)を想起する方も少なくないと思いますが、それらは承認ポリシーと呼ばれるものです。
管理ポリシーは2025年11月28日現在で10種類あります。
- EC2の宣言型ポリシー
- バックアップポリシー
- タグポリシー
- チャットアプリケーションポリシー
- AIサービスのオプトアウトポリシー
- Security Hubポリシー
- Amazon Bedrockポリシー
- Amazon Inspectorポリシー
- アップグレード展開ポリシー
- Amazon S3ポリシー
管理ポリシーは最近のアップデートで多数追加されており、今後のマルチアカウント環境のガバナンスを担う非常にホットな機能だと言えます。
- [アップデート]AWS OrganizationsにAmazon Inspectorのスキャン設定が柔軟に管理できる「Inspectorポリシー」が登場しました | DevelopersIO
- [アップデート] AWS Organizations に AWS サービスの自動アップグレードに優先順位を設定できる「アップグレードロールアウトポリシー」が追加されました | DevelopersIO
これまでのS3 ブロックパブリックアクセス(BPA)
S3のブロックパブリックアクセス(BPA) は以下の4つの設定で構成される、S3リソースのパブリックアクセスを制限するための設定です。
BlockPublicAcls:アクセスコントロールリスト (ACL)がパブリック公開されるように設定されることを禁止するIgnorePublicAcls:S3バケットやオブジェクトに設定されたパブリックなアクセスコントロールリスト (ACL)を無視するBlockPublicPolicy:バケットポリシーがパブリック公開されるように設定されることを禁止するRestrictPublicBuckets:バケットポリシーがパブリックになっていても、S3バケットへのパブリックアクセスやクロスアカウントアクセスできないようにする
これまでのBPAは、バケットレベル(単体のS3バケット) もしくは アカウントレベル (AWSアカウント全体) のいずれか設定できました。
単体のS3バケットに設定する「バケットレベルのBPA」は、現在新規で作成されるS3バケットのデフォルト設定です。
AWSアカウント全体を対象に設定できる「アカウントレベルのBPA」を設定すると、バケット単位のBPA無効化を防止できます。
ただしアカウントレベルのBPAでも設定そのものを無効化されてしまえば無力です。AWS OrganizationsのSCPによって管理下のAWSアカウントに対しBPAを無効化するAPI(s3:PutBucketPublicAccessBlock、s3:PutAccountPublicAccessBlock) の実行を禁止して対策する必要がありました。
また、新規のAWSアカウントを作成した際は、アカウントレベルのBPA設定を何らかの手段で明示的に有効化する必要がありました。
S3ポリシーについて
S3ポリシーの機能は以下です。
- 組織のAWSアカウントへのアカウントレベルのBPA設定
- アカウントレベルのBPAの設定変更の防止
これまでの課題だった、アカウントレベルのBPA設定と変更予防対策のどちらもカバーされています。皆が待望した、神のような機能ですね!
S3ポリシーの構文がこちら
{
"s3_attributes": {
"public_access_block_configuration": {
"@@assign": "all"
}
}
}
@@assignのバリューとして選択可能なものは以下の2つです。
"all":組織レベルで4つのBPA設定をすべて有効化する"none":組織レベルのBPA設定の制御を無効化する
シンプルですね。
やってみた
検証環境で実際に設定してみました。
検証環境には既存のOrganizations組織を利用します。
以下の環境で検証します。

ポリシー適用の対象となるSandbox OU配下の2つのアカウントのS3 BPA設定が無効化されていることを確認します。

Organizations管理アカウントに切り替えて、ポリシータブからS3ポリシーを選択します。

S3ポリシーを有効化します。

有効化できました。ポリシーを作成します。

ポリシー名を入力、S3 ブロックパブリックアクセスの設定のすべてのパブリックアクセスをブロックにチェックを入れます。ビジュアルエディタで入力できて楽でした。

設定はJSONエディタでも表示できます。チェックを入れると"@@assign": "all"、外すと"@@assign": "none"になります。

JSONエディタから編集もできて、JSONエディタで編集した内容がビジュアルエディタの設定に反映されました。
そのままポリシーを作成し、ポリシーのアタッチを選択します。

Sandbox OUを選択して、ポリシーをアタッチします。

Sandbox OUにポリシーをアタッチできました。

Sandbox OU配下のメンバーアカウントに切り替えて、S3 BPA設定を確認してみましょう。
アカウントレベルのS3 BPA設定が有効化されていました。

設定を無効化してみようとしたところ、以下のAPIエラーが出てアクセスが拒否されました。想定通りですね。
This account does not allow changes to its account-level S3 Block Public Access settings due to an organizational S3 Block Public Access policy in effect.

最後に
本ブログでは、アップデートで追加されたAWS Organizationsの管理ポリシーである「S3ポリシー」について、概要の紹介と検証を行いました。
これまでS3のBPA設定をOrganizations配下で統制するには、アカウントレベルのBPAを有効化した上でSCPで変更を禁止する、という二段構えの対応が必要でした。さらに新規アカウント作成時には都度BPAを有効化する仕組みも別途用意しなければならず、地味に手間がかかるポイントでした。
今回のS3ポリシーによって、これらがワンストップで実現できるようになったのは非常にありがたいですね。設定もシンプルで、ビジュアルエディタからポチポチするだけで完結するのも嬉しいです。
直近でOrganizationsの管理ポリシーが続々と追加されており、マルチアカウント環境のガバナンス強化がどんどんやりやすくなっている印象です。今後もこの流れが続くことを期待しています。
S3のパブリックアクセス設定でお悩みの方は、ぜひ試してみてください。
以上です。







