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

モバイルアプリケーションの開発者が、ユーザーがGoogleアカウントでサインインした後に、ユーザーごとに専用のS3プレフィックスへ直接アクセスできる機能を実装したいと考えています。IAMユーザーを作成せずに一時的なAWS認証情報をモバイルクライアントに付与する最適な方法はどれですか?

A
Amazon Cognito ユーザープールでGoogleをIDプロバイダーとして設定し、発行されたJWTトークンをS3バケットポリシーで直接検証する
Amazon Cognito ユーザープールでGoogleをIDプロバイダーとして設定し、発行されたJWTトークンをS3バケットポリシーで直接検証することは、ユーザー管理機能であり、JWT(JSON Web Token)をS3バケットポリシーで直接検証してAWS認証情報を付与する仕組みはサポートしていません。
B
Amazon Cognito IDプール(フェデレーテッドID)を設定してGoogleのOIDC(OpenID Connect)トークンを受け取り、STSが発行する一時的なAWS認証情報をクライアントに返す
✓ 正解
Cognito IDプール(フェデレーテッドID)は、Google・Facebook・Amazon等のサードパーティIDプロバイダーのトークンを受け取り、STS経由で一時的なAWS認証情報を発行します。IAMポリシー変数(cognito-identity.amazonaws.com:sub)でユーザーごとのS3プレフィックスアクセス制御も実現できます。
C
クライアントからSTS AssumeRoleWithWebIdentity APIを直接呼び出し、GoogleのOIDCトークンでAWSロールを引き受ける
クライアントからSTS AssumeRoleWithWebIdentity APIを直接呼び出し、GoogleのOIDCトークンでAWSロールを引き受けることは技術的に可能だが、Cognito IDプールが提供する認証済み/未認証ユーザーの統合管理・スケーラブルなID連携管理機能が欠如するため最適ではなく、Cognito IDプールがこの呼び出しをマネージドに代行するのがベストプラクティスです。
D
Lambda関数をプロキシとして使用し、Googleでの認証成功後にLambdaがIAMユーザーのアクセスキーをクライアントに返す
Lambda関数をプロキシとして使用し、Googleでの認証成功後にLambdaがIAMユーザーのアクセスキーをクライアントに返すことは、IAMユーザーの長期認証情報をモバイルに配布するのはセキュリティ上のアンチパターンです。

解説

Cognito IDプール(フェデレーテッドID)は、Google・Facebook・Amazon等のサードパーティIDプロバイダーのトークンを受け取り、STS経由で一時的なAWS認証情報を発行します。IAMポリシー変数(cognito-identity.amazonaws.com:sub)でユーザーごとのS3プレフィックスアクセス制御も実現できます。 選択肢AのAmazon Cognito ユーザープールでGoogleをIDプロバイダーとして設定し、発行されたJWTトークンをS3バケットポリシーで直接検証することは、ユーザー管理機能であり、JWT(JSON Web Token)をS3バケットポリシーで直接検証してAWS認証情報を付与する仕組みはサポートしていません。 選択肢CのクライアントからSTS AssumeRoleWithWebIdentity APIを直接呼び出し、GoogleのOIDCトークンでAWSロールを引き受けることは技術的に可能だが、Cognito IDプールが提供する認証済み/未認証ユーザーの統合管理・スケーラブルなID連携管理機能が欠如するため最適ではなく、Cognito IDプールがこの呼び出しをマネージドに代行するのがベストプラクティスです。 選択肢DのLambda関数をプロキシとして使用し、Googleでの認証成功後にLambdaがIAMユーザーのアクセスキーをクライアントに返すことは、IAMユーザーの長期認証情報をモバイルに配布するのはセキュリティ上のアンチパターンです。

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

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

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