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

モバイルアプリのユーザーが Google アカウントでログインし、そのユーザー専用の S3 プレフィックス(例:user-data/{userId}/)にのみアクセスできるようにしたいと考えています。AWS の認証・認可の仕組みを使って最小権限の原則を守りながら実装するとき、最も適切なアーキテクチャはどれですか?

A
Google の ID トークン(JWT)を Lambda 関数に渡し、Lambda 内で IAM ユーザーのアクセスキーを使って S3 にアクセスする
Lambda 内に IAM ユーザーのアクセスキーを保持する形となり、キー漏洩リスクが高く最小権限の原則に反します。
B
Amazon Cognito ユーザープールで Google フェデレーションを設定し、発行された JWT を直接 S3 のバケットポリシーで検証する
S3 バケットポリシーが Cognito ユーザープールの JWT を直接検証する仕組みを持たないため機能しません。
C
Amazon Cognito ID プール(フェデレーテッドアイデンティティ)を使って Google 認証後に STS から一時的な AWS 認証情報を取得し、その認証情報で S3 にアクセスする
✓ 正解
Cognito ID プール(フェデレーテッドアイデンティティ)は、Google などの外部 IdP(Identity Provider)で認証されたユーザーに対して、STS を通じて一時的な IAM 認証情報を払い出します。IAM ロールポリシーの条件キー「cognito-identity.amazonaws.com:sub」を使えば、各ユーザーが自分の S3 プレフィックスのみにアクセスできる最小権限を実現できます。
D
Google の OAuth トークンを API Gateway のヘッダーに付与し、API Gateway のリソースポリシーで直接 S3 へのアクセスを許可する
API Gateway のリソースポリシーが OAuth トークンをもとに S3 へのアクセスを直接許可する機能を持たず、AWS 標準の認可フローとして成立しません。

解説

正解: Amazon Cognito ID プール(フェデレーテッドアイデンティティ)を使って Google 認証後に STS から一時的な AWS 認証情報を取得し、その認証情報で S3 にアクセスする Cognito ID プール(フェデレーテッドアイデンティティ)は、Google などの外部 IdP(Identity Provider)で認証されたユーザーに対して、STS を通じて一時的な IAM 認証情報を払い出します。IAM ロールポリシーの条件キー「cognito-identity.amazonaws.com:sub」を使えば、各ユーザーが自分の S3 プレフィックスのみにアクセスできる最小権限を実現できます。 選択肢Aは、Lambda 内に IAM ユーザーのアクセスキーを保持する形となり、キー漏洩リスクが高く最小権限の原則に反します。 選択肢Bは、S3 バケットポリシーが Cognito ユーザープールの JWT を直接検証する仕組みを持たないため機能しません。 選択肢Dは、API Gateway のリソースポリシーが OAuth トークンをもとに S3 へのアクセスを直接許可する機能を持たず、AWS 標準の認可フローとして成立しません。

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

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

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