ある企業が AWS Organizations を使用して複数の AWS アカウントを管理している。開発チームが誤って S3 バケットをパブリックに設定するリスクを排除するため、組織内の全アカウントで S3 のパブリックアクセスを予防的に禁止したい。各アカウントの IAM 管理者であっても、この設定を変更できないようにする必要がある。最小限の管理コストで実現する最も適切な方法はどれか。
- A. AWS Organizations の SCP(Service Control Policy)で s3:PutBucketPublicAccessBlock の Condition に s3:PublicAccessBlockConfiguration の各フラグが false であることを Deny する条件を設定し、組織のルートにアタッチする。
- B. 各アカウントの S3 アカウントレベルのパブリックアクセスブロック設定を AWS Systems Manager Automation ドキュメントで定期的に確認・修復する。
- C. AWS Control Tower の必須ガードレール「S3 バケットのパブリックアクセスの禁止」を有効化し、管理アカウントから全アカウントに強制適用する。
- D. 各アカウントに AWS Config ルール(s3-bucket-public-read-prohibited)をデプロイし、非準拠バケットを自動修復する Lambda 関数をトリガーする。
解答と解説を見る
正解: A
AWS Organizations の SCP は、組織のルートまたは OU にアタッチすることで、配下の全メンバーアカウントに一律に適用される予防的制御である。SCP で s3:PutBucketPublicAccessBlock アクションの Condition を使い、パブリックアクセスブロックフラグを false に設定しようとするリクエストを Deny することで、IAM 管理者を含む全 IAM エンティティがパブリックアクセスを有効化できなくなる。これにより各アカウントへの個別設定不要で一元管理できる。選択肢Dは AWS Config による検出・修復だが、設定変更後に修復されるまでの窓口が存在する(事後対応)。選択肢Cの Control Tower 必須ガードレールは有力だが、Control Tower をすでに使用していることが前提であり、本問では最も一般的な手段として SCP が正解となる。選択肢Bの Systems Manager Automation も定期実行のため、リアルタイムの予防的制御にはならない。
📚 関連サービスの解説: AWS Organizations