DVAセキュリティ
あるモバイルアプリケーションの開発チームは、ユーザー認証およびバックエンドリソース(Amazon S3やAmazon DynamoDBなど)へのアクセス制御を実装しています。サードパーティのIDプロバイダー(GoogleやFacebook)でログインした認証済みユーザーに対して、一時的なAWS IAM資格情報を発行し、権限付与された範囲でAWSリソースへ直接安全にアクセスさせたいと考えています。この要件を満たすAmazon Cognitoの適切なアーキテクチャ構成はどれですか。
ACognito ユーザープールでユーザーのサインインを処理し、Cognito アイデンティティプールを使用して一時的なAWS IAM資格情報を付与する。
✓ 正解
Cognitoユーザープールによる認証(JWT発行)と、Cognitoアイデンティティプールによる一時的なAWS IAM資格情報の発行を連携させる構成がAWSの標準的なベストプラクティスです。
BCognito ユーザープールのみを使用してJWTトークンを発行し、そのトークンを直接AWS IAMのAssumeRole APIに渡して検証させる。
Cognitoユーザープールが発行するJWTトークンをそのままIAM AssumeRoleに直接渡して代替させることはできず、アイデンティティプールを仲介させる必要があります。
CCognito アイデンティティプールでユーザーの認証管理を行い、発行されたJWTトークンを直接S3やDynamoDBのアクセス権限に変換する。
アイデンティティプール単体で独自ユーザーのディレクトリ管理や直接的な認証処理を行うことはできず、またJWTトークン自体が直接IAMの権限として機能するわけではありません。
DAWS STS(Security Token Service)をアプリケーション内で直接呼び出して自前で認証を行い、Cognito ユーザープールに認可情報を書き込む。
Cognitoを使用せずにSTSをモバイルアプリから直接呼び出す設計は、認証・認可ロジックが複雑化しセキュリティリスクが高まるため、専用サービスであるCognitoを使うべきです。
解説
Amazon Cognitoでは役割が明確に分かれています。「ユーザープール(User Pool)」はユーザーの登録・ログイン認証およびJWTトークンの発行を担当し、「アイデンティティプール(Identity Pool)」は認証されたユーザー(外部IDPやユーザープール経由)に対して一時的なAWS IAM資格情報を払い出す役割を担います。両者を組み合わせることで、AWSリソースへの安全な直接アクセスが可能になります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →