DVAAWSのサービスを使用した開発
ある会社はモバイルアプリのユーザー管理基盤を構築しています。ユーザーには一般的なソーシャルログイン(GoogleやFacebook)でログインさせ、ログイン成功後にAWS上のAmazon S3バケットへ直接ファイルをアップロードできる一時的なアクセス権限を安全に付与したいと考えています。適切な構成はどれですか。
AAmazon Cognito ユーザープールでIdP連携を行い、取得したJWTアクセストークンを直接S3バケットポリシーの条件文に埋め込んで認可する。
Cognito ユーザープールが発行するJWTトークンを直接S3バケットポリシーの条件で判定してアクセスを制御することはできません。
BAmazon Cognito ユーザープールで認証を行った後、Cognito アイデンティティプールを使用してアクセス用のIAM一時認証情報を取得させる。
✓ 正解
ユーザープールで認証(IdP連携含む)を行い、アイデンティティプールでAWSリソース操作用のIAM一時クレデンシャルを取得するのが正しい設計です。
CAWS STSのAssumeRole APIをモバイルアプリから直接呼び出し、固定のIAMアクセスキーを用いて一時クレデンシャルを取得する。
モバイルアプリ内に永続的なIAMアクセスキーを埋め込んでSTSを呼び出す設計はセキュリティ上の重大なアンチパターンです。
DAmazon Cognito アイデンティティプールのみを使用し、認証機能とユーザー属性データベースをすべてアイデンティティプール内で完結させる。
アイデンティティプール自体はユーザーディレクトリ(ユーザー情報管理機能)を持たないため、単体で認証基盤を完結させることは不可能です。
解説
Amazon Cognito ユーザープールはユーザーのサインアップ・サインイン認証を担当し、トークン(JWT)を発行します。一方、Cognito アイデンティティプール(IDプール)はそのトークンを評価して、AWSリソース(S3やDynamoDBなど)に直接アクセスするためのIAMロールと一時的なAWS認証情報を発行します。両者を組み合わせることで、安全にS3へのダイレクトアクセスを許可できます。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →