無限ノック › DVA 練習問題一覧 › 問題
DVAセキュリティ

あなたはAPI GatewayのREST APIを構築しており、Cognito User Poolsで認証されたユーザーのみがアクセスできるよう保護する必要があります。クライアント(モバイルアプリ)はCognitoから取得したIDトークン(JWT形式)をAuthorizationヘッダーに付与してリクエストを送信します。JWT署名検証のカスタムコードを書かずに、最も運用負荷が低い方法で実装するには何を選択すべきですか?(※JWT=JSON Web Token、ユーザー認証情報をJSON形式でエンコードした標準的なトークン規格)

A
LambdaオーソライザーでJWT署名の検証ロジックをカスタム実装し、IAMポリシードキュメントを返す
LambdaオーソライザーはJWT検証ロジックをカスタムコードで実装し、IAMポリシードキュメントを返す仕組みです。柔軟性は高いものの、署名検証の実装・テスト・保守が必要であり、カスタムコードを書かないという要件に反します。
B
API GatewayのリソースにCognito User Poolsオーソライザーを設定し、対象のUser Pool ARNとクライアントIDを指定する
✓ 正解
API GatewayのCognito User Poolsオーソライザーは、User Pool ARNとクライアントIDを設定するだけでJWTの署名検証・有効期限チェック・クライアントID照合を自動実施します。カスタムコード不要でCognito認証をネイティブに統合できる最も運用負荷の低い方法です。
C
API GatewayのIAMオーソライザーを有効にし、クライアントにAWS署名バージョン4(SigV4)でリクエストを署名させる
IAMオーソライザー(AWS署名バージョン4:SigV4)はAWS SDKやIAMクレデンシャルを利用するサービス間通信向けの認証方式です。Cognito JWTトークンを使うモバイルアプリのユーザー認証には不適切で、クライアント側でのSigV4署名実装も必要になります。
D
AWS WAF(Web Application Firewall)にJWT検証用のカスタムルールを作成してAPI Gatewayの前段に配置する
AWS WAFはIPアドレスやHTTPヘッダーのパターンに基づくL7ファイアウォールであり、JWT署名の暗号的な検証を行う認証機能はありません。APIへのアクセス認証・認可の用途には使用できず、この要件には適していません。

解説

API GatewayのリソースにCognito User Poolsオーソライザーを設定し、対象のUser Pool ARNとクライアントIDを指定する。 API GatewayはCognito User Poolsとのネイティブ統合をオーソライザーとして提供しており、カスタムコード不要でJWTトークンの署名検証・有効期限チェック・クライアントID確認を自動的に行います。User Pool ARNとクライアントIDを設定するだけで機能します。 選択肢A は LambdaオーソライザーでJWT署名の検証ロジックをカスタム実装する方法は、カスタムコードが必要であり運用負荷が高い。 選択肢C は API GatewayのIAMオーソライザーを有効にし、クライアントにAWS署名バージョン4(SigV4)でリクエストを署名させる方法はAWS SDKを使ったサービス間通信向けであり、モバイルアプリのJWT認証には不適切。 選択肢D は AWS WAF(Web Application Firewall)にJWT検証用のカスタムルールを作成してAPI Gatewayの前段に配置する方法はWAFはL7ファイアウォールであり認証機能はない。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る