SCSアイデンティティとアクセス管理
あるモバイルアプリ開発企業では以下の要件があります。
・アプリユーザーがメールアドレスとパスワードでサインインできること
・認証済みユーザーは自分専用のS3フォルダのみアクセスでき、他ユーザーのフォルダにはアクセスできないこと
・ユーザー管理はAWSサービスのみで完結させること
これらの要件を最小限の構成で満たすアーキテクチャはどれか。
AAmazon Cognitoユーザープールで認証し、取得したIDトークンをAPI Gatewayで検証したうえでバックエンドのLambda関数がS3に代理アクセスする構成を採用する
API Gateway + Lambdaを介したS3代理アクセスは機能的に実現できるが、バックエンドサービスの構築・維持が必要で最小限の構成という要件に対してコストと複雑性が増大し適切ではない。
BAmazon CognitoユーザープールとIDプールを連携させ、認証済みユーザーにIAM一時認証情報を発行してユーザーIDをプレフィックスとしたS3パスにのみアクセスを許可する
✓ 正解
CognitoユーザープールとIDプールの連携により認証ユーザーにIAM一時認証情報を発行でき、IAMポリシーのcognito-identity.amazonaws.com:sub変数でユーザー単位のS3パス制限が実現できる。バックエンド不要で最小構成。
CAWS IAM Identity Centerでユーザーを管理しモバイルアプリ用のOAuthクライアントを設定して、S3バケットポリシーでユーザーのプリンシパルARNを指定してアクセスを制御する
IAM Identity Centerは企業の従業員向けSSO管理サービスであり、モバイルアプリのコンシューマー向けユーザー認証とS3パス単位のきめ細かいアクセス制御の用途には設計されておらず適さない。
DAmazon Cognitoユーザープールで認証後、バックエンドのLambda関数がユーザーIDに基づいた署名付きURLを動的に生成しモバイルアプリに返すことでS3ファイルへのアクセスを実現する
Lambda関数による署名付きURL生成は動作するが、バックエンドサービスが必須となり最小構成にならない。またユーザーごとのパス制御はLambda側の実装に依存し、IDプールによる直接制御より複雑になる。
解説
Amazon CognitoのIDプール(フェデレーティッドアイデンティティ)は、ユーザープールで認証済みのユーザーに対してIAMロールを介した一時的なAWS認証情報を発行します。IAMポリシーの条件に `cognito-identity.amazonaws.com:sub` を使用することで、S3バケット内の各ユーザー専用パス(例: `bucket/users/${cognito-identity.amazonaws.com:sub}/`)にのみアクセスを制限でき、他ユーザーのファイルへのアクセスを防げます。バックエンドサーバーを介さずモバイルアプリから直接S3にアクセスするため、最小限の構成で要件を満たします。
選択肢AのAmazon API Gateway + AWS Lambdaを使った代理アクセスは機能するが、バックエンドサービスが必要となり最小限の実装という要件に合わない。
選択肢CのAWS IAM Identity Centerは従業員向けのSSOサービスであり、モバイルアプリの一般ユーザー認証やS3パス単位のきめ細かいアクセス制御には適していない。
選択肢DのAWS Lambda+署名付きURLは動作するが、URL生成にバックエンドLambdaが必要で構成が複雑になり、IDプールによる直接アクセスより運用コストが高くなる。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSCSを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →