Q84 — AWS SAA-C03 第13章

第 84/100 問 | ← 第13章

Q984. ある企業が、アプリケーションの展開に Amazon CloudFront ディストリビューションを使用する計画です。この CloudFront ディストリビューションは、Amazon S3 バケットをオリジンとして使用します。アプリケーションへのアクセスは、承認されたユーザーのみに許可される必要があります。また、企業がエッジロケーションでキャッシュするファイルは、ユーザーが認証済みの場合にのみアクセス可能でなければなりません。ソリューションアーキテクトは、これらの要件を満たす安全かつ低遅延のソリューションを設計する必要があります。どのソリューションがこれらの要件を満たしますか?

正解: D. CloudFront のビューアーリクエスト(viewer request)Lambda@Edge 関数を使用して、認証および承認を処理する。

解説

正解は D です。D. CloudFront のビューアーリクエスト(viewer request)Lambda@Edge 関数を使用して、認証および承認を処理する。解説:A. CloudFront に Application Load Balancer (ALB) を第2のオリジンとして追加し、ユーザーを ALB でまず認証させる。— この方法では、ユーザーが ALB で認証した後で初めて S3 バケットからコンテンツにアクセスできるため、余分な複雑さとレイテンシが発生します。B. CloudFront のオリジン応答(origin response)Lambda@Edge 関数を使用して、認証および承認を処理する。— オリジン応答関数は、オリジン(S3)からコンテンツを取得した後、キャッシュおよびユーザーへの配信の前に実行されます。つまり、認証チェックがコンテンツ取得後に実行されるため、不正なアクセスを事前に防ぐことができず、効率的ではありません。C. CloudFront に Network Load Balancer (NLB) を第2のオリジンとして追加し、ユーザーを NLB でまず認証させる。— ALB を用いる場合と同様に、余分なレイテンシと複雑さを引き起こします。D. CloudFront のビューアーリクエスト(viewer request)Lambda@Edge 関数を使用して、認証および承認を処理する。— これは要件を満たす正しいソリューションです。ビューアーリクエスト Lambda@Edge 関数は、ユーザーが CloudFront に対してコンテンツを最初に要求した直後に実行され、オリジン(S3 バケット)へのアクセスより前に処理されます。これにより、コンテンツの取得・キャッシュ・配信の前に、ユーザーの認証および承認チェックを実行できます。結果として、エッジロケーションでキャッシュされたコンテンツへのアクセスを、承認済みユーザーのみに制限しつつ、追加のレイテンシを発生させることなくセキュアなアクセス制御を実現できます。よって、最も適切なソリューションは、ビューアーリクエスト Lambda@Edge 関数を用いて認証および承認を処理することです。