無限ノック › SCS 練習問題一覧 › 問題
SCSアイデンティティとアクセス管理

モバイルゲームアプリを開発しています。以下の要件があります: ①ゲストユーザー(未ログイン)はS3バケット内のleaderboard/プレフィックスのオブジェクトを読み取りのみ可能、 ②ログイン済みユーザーは自分のユーザーIDに対応するS3プレフィックス(例:userdata/<ユーザーID>/)のオブジェクトのみ読み書き可能。長期的なAWS認証情報をクライアントアプリに埋め込まずに最小限のインフラで実装する最も適切な方法はどれですか?

A
Amazon Cognitoユーザープールを使用してログインを実装し、認証済みユーザーのS3アクセスはLambda関数を介して署名付きURLを都度発行することでユーザーごとのプレフィックスアクセスを制限する
IDプールなしのユーザープール単体ではSTSトークンを発行できず、AWSリソースへの直接アクセスが不可能です。Lambda経由の署名付きURL方式はインフラが増え、ユーザーごとのプレフィックス分離も複雑になり、実装負荷が大きいです。
B
Amazon Cognito IDプール(フェデレーテッドアイデンティティ)を設定し、未認証ロールにleaderboard/の読み取りポリシーを付与し、認証済みロールのIAMポリシーにはポリシー変数${cognito-identity.amazonaws.com:sub}を使用してユーザーのCognito Identity IDに対応するS3プレフィックスへのアクセスのみを許可する
✓ 正解
IDプールは認証済み・未認証ユーザーに直接STSトークンを発行でき、IAMポリシーのポリシー変数${cognito-identity.amazonaws.com:sub}を使うことで各ユーザーが自分のプレフィックスのみへ動的にアクセスを制限できます。長期認証情報不要でセキュアです。
C
AWS IAM Identity Centerでモバイルユーザーを管理し、属性ベースのアクセス制御(ABAC)のPermission Setsを使用してS3プレフィックスをユーザー属性にマッピングする
IAM Identity Centerはエンタープライズ向けのSSOサービスで、コンシューマー向けモバイルアプリの数百万規模のエンドユーザー管理に設計されていません。大規模ユーザー数への対応やスケーラビリティに課題があります。
D
S3バケットポリシーにAPIゲートウェイのIPアドレス条件(aws:SourceIp)を設定し、ゲストと認証済みユーザーを別のAPIエンドポイント経由でS3にアクセスさせる
S3バケットポリシーのIPアドレス条件(aws:SourceIp)は、モバイルユーザーのIPが動的に変化するため実用的ではなく、ユーザーごとのプレフィックス分離にも対応できません。

解説

Amazon Cognito IDプール(フェデレーテッドアイデンティティ)は、認証済み・未認証の両方のモバイルユーザーに一時的なAWS認証情報(STSトークン)を直接発行できます。未認証ロールには制限されたポリシー(leaderboard/読み取りのみ)を設定し、認証済みロールのIAMポリシーではポリシー変数${cognito-identity.amazonaws.com:sub}を使用することで、各ユーザーが自分のCognito Identity IDに対応するS3プレフィックスのみに動的にアクセスを制限できます。長期クレデンシャル不要でセキュアに実装できます。 選択肢AのCognitoユーザープール単体ではAWSリソースへの一時認証情報を直接発行できません(IDプールとの組み合わせが必要)。またLambda経由の署名付きURL方式はインフラが増え、ユーザーごとのプレフィックス分離実装も複雑になります。 選択肢CのIAM Identity Centerはエンタープライズ向けSSOサービスであり、コンシューマー向けモバイルアプリの数百万規模のエンドユーザー管理には設計されていません。 選択肢DはIPアドレスベースの制御であり、モバイルユーザーのIPは動的に変化するため実用的でなく、ユーザーごとのプレフィックス分離も実現できません。

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

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

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