認可(Lambdaオーソライザー・Cognitoオーソライザー・IAM認可)難易度 標準無料
API Gateway(REST API)で利用できる主な認可方式に関する記述として正しいものを2つ選べ。
- ALambdaオーソライザーは、独自ロジックでトークンやリクエスト内容を検証し、IAMポリシードキュメントを返すことで認可を制御できる。判定結果はデフォルトでキャッシュ可能(TTL設定可)
- BCognitoオーソライザーは、Cognitoユーザープールに限らず任意のOIDC準拠のIDプロバイダーが発行したJWTを検証できる汎用的な機能である
- CIAM認可(
AWS_IAM)は、呼び出し元がSigV4でリクエストに署名し、そのIAMプリンシパルの権限に基づいてアクセス可否を判定する方式である - DLambdaオーソライザーはリクエストのたびに必ずLambda関数を実行する必要があり、判定結果をキャッシュする機能は存在しない
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
REST APIでは主に3種類の認可方式が使える。
- Lambdaオーソライザー(
TOKEN/REQUEST型):任意のトークン形式・独自ロジックで認可判定でき、 IAMポリシードキュメントを返すことでリクエストの許可/拒否を制御する柔軟な方式。判定結果は既定でキャッシュ可能(TTL設定)。 - Cognitoオーソライザー:Cognitoユーザープールが発行したJWT(IDトークン)を検証する組み込み方式で、 独自のLambdaコードを書かずにユーザープールのグループ/スコープに基づく認可が行える。
- IAM認可(
AWS_IAM):SigV4署名されたリクエストのIAM権限を検証する。呼び出し元がAWS内部のサービス/IAMプリンシパルである場合に向く。
Lambdaオーソライザーの判定結果はデフォルトで最大3600秒(1時間)までキャッシュ可能で、同一の認可トークンに対する繰り返し呼び出しのレイテンシとコストを削減できる。
- BCognitoオーソライザーはCognitoユーザープール専用。他のOIDCプロバイダーのJWTを検証したい場合はHTTP APIのJWTオーソライザーかLambdaオーソライザーを使う。
- D誤り。Lambdaオーソライザーは既定で認可結果のキャッシュ(最大3600秒)が有効であり、同一キーの呼び出しではLambda実行をスキップできる。
ひっかけ: 「Lambdaオーソライザーは毎回必ずLambdaを呼び出す(キャッシュ不可)」という誤解に注意。既定でキャッシュが有効かつ設定可能であり、
キャッシュキー(Authorizationヘッダー等)が同一ならLambdaを再実行せず結果を再利用できる。また「Cognitoオーソライザーは任意のOIDCプロバイダーのトークンを検証できる」というのも誤り
(CognitoオーソライザーはCognitoユーザープールのトークン専用。他のOIDCプロバイダーはHTTP APIのJWTオーソライザーかLambdaオーソライザーで対応する)。
公式ドキュメント・関連Amazon API Gateway Developer Guide ― Use API Gateway Lambda authorizers↗Amazon API Gateway Developer Guide ― Control access to a REST API using Amazon Cognito user pools as authorizer↗
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)