無限ノック › DVA 練習問題一覧 › 問題
DVAセキュリティ

モバイルアプリがAmazon Cognito User Poolsで認証を行っています。認証済みユーザーが一時的なAWS認証情報を取得してAmazon DynamoDBテーブルに直接アクセスできるようにしたいと考えています。最も適切な実装方法はどれですか?

A
Cognito User PoolのJWTトークンをDynamoDB APIリクエストのAuthorizationヘッダーに含めて送信する
Cognito User PoolのJWTトークンをDynamoDB APIリクエストのAuthorizationヘッダーに含めるのはDynamoDBネイティブ非対応です。
B
Cognito Identity Poolsを設定しUser Poolsをプロバイダーとして追加する。認証後に取得したIDトークンをGetIdおよびGetCredentialsForIdentityに渡し、STSから一時的なIAM認証情報を取得してDynamoDBにアクセスする
✓ 正解
Cognito Identity Pools(旧称:Federated Identities)はCognito User Poolsと連携し、認証済みユーザーに一時的なIAM認証情報(STS: Security Token Service経由)を払い出す仕組みです。User Poolsで取得したIDトークンをIdentity Poolsに渡すことで、事前に定義したIAMロールにスコープされた認証情報が発行されます。DynamoDB条件式でcognito-identity.amazonaws.com:subキーを使うことでユーザーごとのデータアクセス制御も可能です。
C
IAMユーザーのアクセスキーとシークレットキーをモバイルアプリにハードコードし、DynamoDBに直接アクセスする
IAMユーザー認証情報をアプリに埋め込むことは漏洩リスクが高く厳禁です。
D
DynamoDB操作をすべてAPI Gateway経由でLambda関数にプロキシし、Lambda関数のIAMロールでDynamoDBにアクセスする
DynamoDB操作をすべてLambda経由でプロキシする方式は可能ですが、クライアント直接アクセスの要件に合致しません。

解説

正解: Cognito Identity Poolsを設定しUser Poolsをプロバイダーとして追加する。認証後に取得したIDトークンをGetIdおよびGetCredentialsForIdentityに渡し、STSから一時的なIAM認証情報を取得してDynamoDBにアクセスする。 Cognito Identity Pools(旧称:Federated Identities)はCognito User Poolsと連携し、認証済みユーザーに一時的なIAM認証情報(STS: Security Token Service経由)を払い出す仕組みです。User Poolsで取得したIDトークンをIdentity Poolsに渡すことで、事前に定義したIAMロールにスコープされた認証情報が発行されます。DynamoDB条件式でcognito-identity.amazonaws.com:subキーを使うことでユーザーごとのデータアクセス制御も可能です。 選択肢Aは Cognito User PoolのJWTトークンをDynamoDB APIリクエストのAuthorizationヘッダーに含めるのはDynamoDBネイティブ非対応です。 選択肢Cは IAMユーザー認証情報をアプリに埋め込むことは漏洩リスクが高く厳禁です。 選択肢Dは DynamoDB操作をすべてLambda経由でプロキシする方式は可能ですが、クライアント直接アクセスの要件に合致しません。

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

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

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