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

モバイルアプリケーション開発チームは、ユーザーに対してGoogle等のソーシャルログインを提供する認証基盤を構築しています。ユーザーがサインインに成功した後、モバイルアプリから直接Amazon S3バケットへ限定的なアクセスを行えるようにする必要があります。AWSのベストプラクティスに沿った適切なサービスの組み合わせはどれですか。

A
Cognitoユーザープールで認証し、取得したトークンをCognitoアイデンティティプールに渡してIAMの一時認証情報を取得する。
✓ 正解
ユーザープールで認証を行ってJWTトークンを取得し、それをアイデンティティプールに渡してAWSの一時的なクレデンシャルを発行させるアプローチがベストプラクティスです。
B
Cognitoユーザープールのみを利用し、ログイン成功時に発行されるJWTアクセストークンをS3のバケットポリシーで直接評価する。
S3バケットポリシーやIAMポリシーは、Cognitoが発行したJWTトークンを直接パースして条件評価することはできないため、この方法でアクセス制御を行うことは不可能です。
C
Cognitoアイデンティティプールのみを利用し、ソーシャルIdPとの連携からS3アクセス用IAMロールの付与までを単独で処理させる。
アイデンティティプール単独でもGoogleトークンを直接Loginsに渡してAWS一時認証情報を取得できますが、ユーザーディレクトリ管理・MFA・メール確認などのユーザーライフサイクル機能を持たず、ユーザープールとの併用がベストプラクティスです。
D
Cognitoユーザープールで認証し、AWS STSのGetSessionToken APIを直接呼び出して一時的なアクセスキーを取得する。
GetSessionToken APIはIAMユーザーのMFAシナリオ向けに一時的な認証情報を返すAPIであり、Cognitoで認証したモバイルアプリユーザーへのAWSアクセス権限付与にはアイデンティティプール経由が正しいアプローチです。

解説

Amazon Cognitoの「ユーザープール」は、ユーザーのサインアップ/サインイン、ソーシャルIdPとの連携など「認証(Authentication)」を担当し、JWTトークンを発行します。一方、「アイデンティティプール(IDプール)」は、それらのトークンを評価し、AWSサービス(S3やDynamoDBなど)に直接アクセスするためのIAMの一時的な「認可(Authorization)」クレデンシャルを発行します。AWSサービスへの直接アクセスにはこの2つの組み合わせが標準的なベストプラクティスです。

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

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

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