Q16 — AWS SAA-C03 第4章
第 16/105 問 | ← 第4章
Q211. ある企業がアプリケーションをAWS上でホストしています。同社は、ユーザー管理にAmazon Cognitoを使用しています。ユーザーがアプリケーションにログインすると、アプリケーションはAmazon API GatewayでホストされているREST APIを介して、必要なデータをAmazon DynamoDBから取得します。同社は、開発工数を削減できるAWSマネージドなソリューションを用いて、このREST APIへのアクセスを制御したいと考えています。これらの要件を満たし、かつ運用オーバーヘッドが最も少ないソリューションはどれですか?
- A. API Gateway内で承認者(authorizer)としてAWS Lambda関数を設定し、どのユーザーがリクエストを行ったかを検証します。
- B. 各ユーザーごとにAPIキーを作成・割り当て、すべてのリクエストにそのAPIキーを含めるよう要求します。AWS Lambda関数を用いて、そのキーの有効性を検証します。
- C. すべてのリクエストのヘッダーにユーザーのメールアドレスを送信させ、AWS Lambda関数を呼び出して、そのメールアドレスを持つユーザーが適切なアクセス権限を持っているかを検証します。
- D. API GatewayでAmazon Cognitoユーザープール承認者(authorizer)を設定し、各リクエストの検証をAmazon Cognitoに委任します。 ✓
正解: D. API GatewayでAmazon Cognitoユーザープール承認者(authorizer)を設定し、各リクエストの検証をAmazon Cognitoに委任します。
解説
Amazon Cognitoユーザープール承認者は、API GatewayとAmazon Cognitoをネイティブ統合するAWSマネージドなソリューションであり、JWTトークンの検証やユーザー認証状態の確認を自動的に行います。これにより、カスタムLambda関数の作成・管理や、APIキーの発行・ローテーション、メールアドレスによる手動検証などの追加開発・運用作業が不要となり、運用オーバーヘッドが最小になります。他の選択肢(A、B、C)はいずれもカスタムロジックや追加コンポーネントを必要とし、保守負荷やセキュリティリスクが高まります。