ある企業は CloudFront + S3 で静的ウェブサイトを提供しています。S3 バケットへの直接アクセスを禁止し、CloudFront 経由のみに限定したいと考えています。この要件を満たす方法を 2 つ選択してください。
- A. S3 バケットポリシーの Principal を CloudFront のサービスプリンシパル(cloudfront.amazonaws.com)に限定し aws:SourceArn 条件で特定のディストリビューションを指定する
- B. S3 バケットを静的ウェブサイトホスティングモードで公開し CloudFront でキャッシュする
- C. S3 バケットをパブリックアクセスブロックで非公開にし、CloudFront の Origin Access Control(OAC)を使って CloudFront からのみ S3 にアクセスできるようにする
- D. S3 バケットポリシーで CloudFront の IP アドレスレンジのみを許可する
- E. CloudFront のカスタムヘッダーを S3 バケットポリシーの Condition で検証する
解答と解説を見る
正解: A, C
C の Origin Access Control(OAC)は最新の推奨方式で、CloudFront がリクエストに署名して S3 に送るため、バケットを非公開のまま CloudFront からのみアクセスを許可できます。A はバケットポリシーで Principal を cloudfront.amazonaws.com に限定し、aws:SourceArn で特定の CloudFront ディストリビューション ARN を条件にする方法で、C と組み合わせて実現します(実際には A+C が OAC の仕組みです)。D の IP レンジ許可は CloudFront の IP が変動するため維持が困難です。E のカスタムヘッダー検証は古い方法で OAC より脆弱です。B はバケットを公開してしまうため要件に反します。
📚 関連サービスの解説: Amazon S3 ・ Amazon CloudFront