c1.12 ストレージへのパブリックアクセスをブロックする
S3 ブロックパブリックアクセスをすべてのアカウントでアカウントレベルで有効化し、AMI と EBS スナップショットのパブリックアクセスもブロックします。SCP で強制し、こっそり無効化されないようにします。
実装ガイダンス
S3 ブロックパブリックアクセス
S3 ブロックパブリックアクセス (BPA) は、アカウントレベル(新規アカウントの既定)とバケットレベルでバケットへのパブリックアクセスをブロックします。組織にパブリックバケットが不要なら、すべてのアカウントでアカウントレベルの BPA を有効化します。あるアカウントが本当にパブリックバケットを必要とする場合は、そのアカウントの他のすべてのバケットで BPA を有効に保ちます。アカウントレベルの BPA はバケットポリシーを上書きするため、設定ミスのポリシーに対する堅固な最後の砦になります。
不要な場所で誰も BPA を外せないよう Service Control Policy で強制し、AWS Security Hub CSPM のS3.1 と S3.8 コントロールで BPA が無効なアカウントやバケットを見つけます。
CLI で有効化する
アカウントレベルの Block Public Access の 4 つの設定をすべて有効化します(各アカウントで、その account id を指定して実行):
aws s3control put-public-access-block \
--account-id 111122223333 \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true
現在の設定を確認する:
aws s3control get-public-access-block --account-id 111122223333
AMI と EBS スナップショットも忘れずに
パブリックアクセスは S3 だけの問題ではありません。共有する明確でレビュー済みの理由がない限り、AMI のパブリックアクセスと EBS スナップショットのパブリックアクセスもブロックしてください。パブリックな AMI やスナップショットは、マシンイメージやディスク全体を漏洩させ得ます。
コンテンツを公開する必要がある場合
パブリックコンテンツ(例:静的ウェブサイト)を配信するには、バケットを開放しないでください。Amazon CloudFront ディストリビューションと AWS WAF の背後に置き、BPA を有効に保ちつつ前段で保護を追加します。
How to validate
- S3 ブロックパブリックアクセスは、組織のすべてのアカウントでアカウントレベルで有効ですか?
- AMI と EBS スナップショットのパブリックアクセスブロックを有効化しましたか?
- 不要な場所での BPA の解除を SCP で防いでいますか?
- パブリックにする必要があるバケットについて:正当性はありますか。そのアカウントの他のすべてのバケットで BPA は有効のままですか。代わりに CloudFront + WAF で配信できませんか?
Threats addressed
- ATT&CK Exfiltration 設定ミスの S3 バケット、パブリックな AMI、パブリックな EBS スナップショットは、データやマシンイメージ全体をインターネット上の誰にでも露出させ得ます。アカウントレベルのブロックパブリックアクセスは、この種のミスを排除します。
AWS サービス
料金
ブロックパブリックアクセスの有効化に追加料金はありません。
Framework mappings
AWS CAF
Well-Architected
- waf-identity-and-access-management Identity and access management
- waf-data-protection Data protection
Cloud Security Maturity Model