Q50 — AWS SAA-C03 第2章
第 50/65 問 | ← 第2章
Q115. ある企業が、ファイル共有アプリケーションを開発しています。このアプリケーションでは、ストレージとしてAmazon S3バケットを使用します。同社は、すべてのファイルをAmazon CloudFrontディストリビューション経由で配信したいと考えています。また、S3の直接URL(例:https://bucket-name.s3.amazonaws.com/object-key)によるファイルへの直接アクセスを許可したくありません。これらの要件を満たすために、ソリューションズアーキテクトは何を行うべきですか?
- A. 各S3バケットに対して個別のバケットポリシーを作成し、CloudFrontからのアクセスのみに読み取り権限を付与する
- B. IAMユーザーを作成し、そのユーザーにS3バケット内のオブジェクトに対する読み取り権限を付与した後、そのユーザーをCloudFrontに割り当てる
- C. S3バケットポリシーを作成し、PrincipalとしてCloudFrontディストリビューションIDを指定し、対象S3バケットのARNをリソースとして指定する
- D. オリジンアクセスアイデンティティ(OAI)を作成し、それをCloudFrontディストリビューションに割り当てる。その後、S3バケットのアクセス許可を設定して、OAIのみが読み取り権限を持つようにする ✓
正解: D. オリジンアクセスアイデンティティ(OAI)を作成し、それをCloudFrontディストリビューションに割り当てる。その後、S3バケットのアクセス許可を設定して、OAIのみが読み取り権限を持つようにする
解説
CloudFront経由でのみS3オブジェクトにアクセス可能にし、S3の直接URLによるアクセスを防ぐには、オリジンアクセスアイデンティティ(OAI)を使用するのが標準的なベストプラクティスです。OAIはCloudFront専用の特殊なCloudFront IDであり、これをS3バケットポリシーで信頼されたプリンシパルとして指定することで、CloudFront経由以外のアクセス(S3の直接URLや他のサービスからのアクセス)を効果的にブロックできます。選択肢Aは「個別のポリシー」という曖昧な表現で、実際にはOAIを用いたバケットポリシーが必要であり不正確です。選択肢BはIAMユーザーをCloudFrontに割り当てることは技術的に不可能です(CloudFrontはIAMユーザーではなくOAIまたはIAMロールを用いてS3と連携します)。選択肢Cは、PrincipalにCloudFrontディストリビューションIDを指定することはできません(OAIのCanonical User IDまたはCloudFrontのAWSアカウントIDを指定する必要があります)。したがって、正解はDです。