DVAセキュリティ

モバイルアプリはS3バケットの users/{ユーザーID}/ 配下に画像を保存する。メールとパスワードで認証したユーザーが自分のプレフィックスのみ操作できるようにしたい。バックエンドAPIサーバーやLambdaを経由せずモバイルから直接S3にアクセスさせる設計の場合、最適な認証・認可の実装はどれか。

A
Cognito User Poolsで認証後、Identity Poolsで一時的なAWS認証情報を取得し、IAMロールポリシーのプレフィックス条件でS3アクセスをユーザーごとに制限する
✓ 正解
Cognito Identity Poolsを介してSTS一時認証情報を発行し、IAMロールのcognito-identity.amazonaws.com:sub条件キーでS3プレフィックスをユーザーIDに限定できる。
B
Cognito User PoolsのIDトークンをS3バケットポリシーのCondition要素に直接組み込み、JWTのsubクレームと一致するユーザーIDのプレフィックスへのアクセスのみを許可するよう設定する
Cognito User PoolsのIDトークンはS3バケットポリシーの条件キーとして直接指定できず、S3はCognitoのJWTを直接認証する機能を持たない。
C
Cognito Identity Poolsの認証済みロールにS3バケット全体の読み書き権限を付与し、アプリ側SDKコードでプレフィックスフィルタリングを強制する
Cognito Identity Poolsの認証済みロールにバケット全体権限を付与するとすべての認証済みユーザーが他ユーザーのプレフィックスにアクセスできてしまう。
D
IAMユーザーをアプリユーザーごとに作成してアクセスキーをモバイルに配布し、S3バケットポリシーでユーザーARNに基づいてプレフィックスへの操作を制限する
IAMユーザーのアクセスキーをモバイルアプリに配布するとリバースエンジニアリングによる漏洩リスクがあり、スケーラビリティと権限管理も困難になる。

解説

Cognito User PoolsとIdentity Poolsを組み合わせてSTS一時認証情報を発行し、IAMロールのcognito-identity.amazonaws.com:sub条件キーでS3プレフィックスを各ユーザーIDに限定できる。

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

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

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