DVA-C02セキュリティMEDIUM単一選択

ある企業はモバイルアプリでユーザーが Google アカウントでサインインできる機能を実装しています。Google 認証後に AWS リソース(S3・DynamoDB)に直接アクセスできる一時認証情報を取得させたいと考えています。IAM ユーザーを作成せずに最小構成で実現するアーキテクチャはどれですか?

  1. A. Google から受け取った OAuth トークンを Lambda に渡し、Lambda が IAM ユーザーのアクセスキーをクライアントに返す
  2. B. Google のアクセストークンを STS の AssumeRole API に直接渡して一時認証情報を取得する
  3. C. Cognito ID プールに Google を外部 ID プロバイダとして設定し、Google の ID トークンを Cognito に渡して STS の AssumeRoleWithWebIdentity で一時認証情報を取得する
  4. D. Google 認証後に Cognito ユーザープールのカスタム属性にアクセスキーを保存し、アプリが取得して使用する
解答と解説を見る

正解: C

Cognito ID プール(フェデレーテッドアイデンティティ)は Google・Facebook・Amazon などの外部 IdP の OIDC トークンを受け取り、内部で STS の AssumeRoleWithWebIdentity を呼び出して IAM ロールの一時認証情報を返します。これにより IAM ユーザーを作成せずに AWS リソースへのアクセスを実現できます。A は Lambda がアクセスキーを返す設計はキー漏洩リスクがあり、IAM ユーザーの作成も必要になります。B の STS AssumeRole は Google トークンを直接受け付けません(AssumeRoleWithWebIdentity が正しい API ですが、Cognito を介さない場合は IdP との信頼関係設定が別途必要です)。D は Cognito ユーザープールにアクセスキーを保存する設計は極めて危険で、設計として成立しません。

▸ この試験を本気で演習する(全150問・無料)