無限ノック › SAA 練習問題一覧 › 問題
SAAセキュアなアーキテクチャの設計

あるスタートアップ企業が、React Nativeで構築したモバイルアプリにユーザー認証機能を追加しようとしています。要件は以下の通りです。 ①ユーザーは自前のメール/パスワードアカウントまたはGoogleアカウントでサインインできる ②認証後、ユーザーはAWS上の自分専用のS3フォルダーにファイルを直接アップロードできる ③アプリ内にAWSの長期的なアクセスキーをハードコードしてはならない ④最小の運用負荷で実装する。この要件をすべて満たすアーキテクチャはどれですか?

A
Amazon Cognito ユーザープールで認証を管理し、Amazon Cognito IDプール(フェデレーテッドアイデンティティ)を使用して認証済みユーザーに一時的なAWS認証情報を払い出す。S3バケットポリシーでCognitoのIDに基づいてユーザーごとのフォルダーアクセスを制限する
✓ 正解
Cognito ユーザープールはユーザーディレクトリとして機能し、メール/パスワード認証やGoogleなどのソーシャルIDプロバイダーとのフェデレーションを管理します。IDプール(フェデレーテッドアイデンティティ)は認証済みユーザーにSTS経由で一時的なAWS認証情報を付与し、S3への直接アクセスを可能にします。S3バケットポリシーで「${cognito-identity.amazonaws.com:sub}」変数を使うことでユーザーごとのフォルダーアクセスを細かく制御でき、すべての要件を最小運用負荷で満たします。
B
各モバイルユーザーに対してIAMユーザーを作成し、長期的なアクセスキーをアプリに配布する。S3バケットポリシーでIAMユーザー単位でアクセスを制限する
長期的なアクセスキーをアプリに埋め込むため漏洩リスクが高く要件に違反します。
C
Amazon Cognito ユーザープールのみを使用してJWTトークンを発行する。モバイルアプリはこのトークンをAPI Gateway Lambdaオーソライザーに送り、Lambda内でS3への署名付きURL(Presigned URL)を生成してクライアントに返す
有効なパターンですが、API Gateway + LambdaというサーバーサイドコンポーネントをS3直接アクセスとは別に維持する必要があり、最小運用負荷に反します。
D
AWS IAM Identity Center(旧AWS SSO)を使用して、モバイルユーザーにAWSポータルへのフェデレーテッドアクセスを提供する
IAM Identity CenterはAWSコンソールや企業内アプリへのSSO向けサービスであり、モバイルエンドユーザー向けの認証には適していません。

解説

正解: Amazon Cognito ユーザープールで認証を管理し、Amazon Cognito IDプール(フェデレーテッドアイデンティティ)を使用して認証済みユーザーに一時的なAWS認証情報を払い出す。S3バケットポリシーでCognitoのIDに基づいてユーザーごとのフォルダーアクセスを制限する Cognito ユーザープールはユーザーディレクトリとして機能し、メール/パスワード認証やGoogleなどのソーシャルIDプロバイダーとのフェデレーションを管理します。IDプール(フェデレーテッドアイデンティティ)は認証済みユーザーにSTS経由で一時的なAWS認証情報を付与し、S3への直接アクセスを可能にします。S3バケットポリシーで「${cognito-identity.amazonaws.com:sub}」変数を使うことでユーザーごとのフォルダーアクセスを細かく制御でき、すべての要件を最小運用負荷で満たします。 選択肢Bは、長期的なアクセスキーをアプリに埋め込むため漏洩リスクが高く要件に違反します。 選択肢Cは、有効なパターンですが、API Gateway + LambdaというサーバーサイドコンポーネントをS3直接アクセスとは別に維持する必要があり、最小運用負荷に反します。 選択肢Dは、IAM Identity CenterはAWSコンソールや企業内アプリへのSSO向けサービスであり、モバイルエンドユーザー向けの認証には適していません。

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

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

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