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

開発者が API Gateway(REST API)を公開しています。社内の独自 OAuth 2.0 認証サーバーで発行された Bearer トークン(JWTではなく独自形式)を持つクライアントのみアクセスを許可し、かつ認証結果のユーザーID とロール情報をバックエンドの Lambda 関数に渡す必要があります。最も適切なアプローチはどれですか?

A
API Gateway の IAM 認証を有効にし、クライアントに AWS 署名バージョン 4(SigV4)でリクエストに署名させる
IAM 認証は SigV4(署名バージョン 4)署名を外部クライアントに配布する必要があり、独自 OAuth フローとは相容れません。
B
API Gateway の Lambda オーソライザー(トークンタイプ)を実装し、独自ロジックでトークンを検証して IAM ポリシーとコンテキスト変数を返す
✓ 正解
API Gateway の Lambda オーソライザー(トークンタイプ)を実装し、受け取ったトークンを独自ロジックで検証して IAM ポリシーとコンテキスト変数(ユーザーID・ロール情報)を返す Lambda オーソライザー(旧称:カスタムオーソライザー)は API Gateway に届いたトークンをカスタムロジックで検証し、IAM ポリシーと任意のコンテキスト変数($context.authorizer.*)を返します。このコンテキスト変数はバックエンド Lambda のイベントオブジェクトに含まれ、ユーザーID やロール情報を後段に伝達できます。
C
API Gateway の Cognito ユーザープールオーソライザーを設定し、独自 OAuth サーバーのトークンを検証させる
Cognito オーソライザーは Cognito User Pools が発行した JWT のみ対応しており、独自 OAuth サーバーのトークンは検証できません。
D
API Gateway のリソースポリシーでクライアントの IP アドレスを許可リストに追加し、バックエンド Lambda でトークン検証を行う
リソースポリシーは IP アドレスや VPC エンドポイントによるアクセス制御を行うものであり、Bearer トークンの検証には対応していません。また、バックエンド Lambda でトークン検証を行う構成では、未認証リクエストも Lambda の起動コストが発生し、API Gateway 層での早期拒否ができません。

解説

API Gateway の Lambda オーソライザー(トークンタイプ)を実装し、受け取ったトークンを独自ロジックで検証して IAM ポリシーとコンテキスト変数(ユーザーID・ロール情報)を返す Lambda オーソライザー(旧称:カスタムオーソライザー)は API Gateway に届いたトークンをカスタムロジックで検証し、IAM ポリシーと任意のコンテキスト変数($context.authorizer.*)を返します。このコンテキスト変数はバックエンド Lambda のイベントオブジェクトに含まれ、ユーザーID やロール情報を後段に伝達できます。 選択肢C の Cognito オーソライザーは Cognito User Pools が発行した JWT のみ対応しており、独自 OAuth サーバーのトークンは検証できません。 選択肢A の IAM 認証は SigV4(署名バージョン 4)署名を外部クライアントに配布する必要があり、独自 OAuth フローとは相容れません。 選択肢D のリソースポリシーは IP アドレスや VPC エンドポイントによるアクセス制御を行うものであり、Bearer トークンの検証には対応していません。また、バックエンド Lambda でトークン検証を行う構成では、未認証リクエストも Lambda の起動コストが発生し、API Gateway 層での早期拒否ができません。

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

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

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