DVAセキュリティ
モバイルアプリケーション開発チームは、ユーザーに対してGoogle等のソーシャルログインを提供する認証基盤を構築しています。ユーザーがサインインに成功した後、モバイルアプリから直接Amazon S3バケットへ限定的なアクセスを行えるようにする必要があります。AWSのベストプラクティスに沿った適切なサービスの組み合わせはどれですか。
ACognitoユーザープールで認証し、取得したトークンをCognitoアイデンティティプールに渡してIAMの一時認証情報を取得する。
✓ 正解
ユーザープールで認証を行ってJWTトークンを取得し、それをアイデンティティプールに渡してAWSの一時的なクレデンシャルを発行させるアプローチがベストプラクティスです。
BCognitoユーザープールのみを利用し、ログイン成功時に発行されるJWTアクセストークンをS3のバケットポリシーで直接評価する。
S3バケットポリシーやIAMポリシーは、Cognitoが発行したJWTトークンを直接パースして条件評価することはできないため、この方法でアクセス制御を行うことは不可能です。
CCognitoアイデンティティプールのみを利用し、ソーシャルIdPとの連携からS3アクセス用IAMロールの付与までを単独で処理させる。
アイデンティティプール単独でもGoogleトークンを直接Loginsに渡してAWS一時認証情報を取得できますが、ユーザーディレクトリ管理・MFA・メール確認などのユーザーライフサイクル機能を持たず、ユーザープールとの併用がベストプラクティスです。
DCognitoユーザープールで認証し、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生成のオリジナル問題。
無料で演習を始める →