DVAセキュリティ

モバイルアプリ開発チームは、ユーザー認証にGoogleやFacebookなどのサードパーティ製Identity Provider(IdP)を利用したいと考えています。ログインに成功したユーザーに対し、アプリケーションからAWS上のAmazon S3バケットへ直接画像をアップロード・閲覧できる一時的なアクセス権限(IAMロール)を付与する必要があります。Amazon Cognitoのコンポーネントを適切に使い分ける構成はどれですか。

A
Amazon Cognito ユーザープールで外部IdPとの認証を行い、取得したJWTトークンを直接S3のバケットポリシーに設定してアクセス制御する。
ユーザープールが発行するJWTトークンをそのままS3バケットポリシーで直接評価してアクセス制御することは不可能です。
B
Amazon Cognito ユーザープールでユーザー認証を行い、発行されたトークンをAmazon Cognito アイデンティティプールに渡してAWS一時クレデンシャルを取得する。
✓ 正解
ユーザープールで認証を行ってトークンを取得し、それをアイデンティティプールに渡してS3操作に必要なIAM一時クレデンシャルを取得するのが正解です。
C
Amazon Cognito アイデンティティプールのみを使用し、ユーザーのサインアップ機能や属性データベース管理もすべてアイデンティティプール内で処理する。
アイデンティティプールはAWS一時認証情報を発行する機能を提供しますが、ユーザー情報や属性を保持するデータベース機能は持っていません。
D
モバイルアプリ内に永続的なIAMユーザーのアクセスキーを埋め込み、認証成功時にAWS STSのGetSessionTokenを直接呼び出して権限を取得する。
モバイルアプリ内に永続的なIAMアクセスキーを埋め込むことはセキュリティ上の重大なアンチパターンであり、絶対に避けるべきです。

解説

Amazon Cognito ユーザープールはユーザーのサインアップ、ログイン、外部IdP(Google等)との連携といった「認証(Authentication)」を担当し、JWTトークンを発行します。一方、Amazon Cognito アイデンティティプール(IDプール)は、ユーザープールや外部IdPの認証トークンと引き換えに、AWSリソース(S3等)へ直接アクセスするための「認可(Authorization)」情報としてIAM一時クレデンシャルを発行します。したがって、両者を組み合わせるのが正しいアーキテクチャです。

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

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

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