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

ある企業がスマートフォン向けヘルスケアアプリを開発しています。アプリユーザーは自分自身の健康データのみを閲覧・更新でき、他のユーザーのデータには一切アクセスできない要件があります。データはDynamoDBテーブルに保存されており、パーティションキーは各ユーザーの一意のIDです。アクセス制御はAWSサービスレベルで強制する必要があり、アプリケーションコードのみへの依存は許容されません。最も適切な実装方法はどれですか?

A
Cognito ユーザープールでユーザーを認証し、API GatewayのCognitoオーソライザーでトークン検証を行う。Lambda関数でJWTのsub属性からuserIdを取得し、DynamoDBクエリのフィルタ式にユーザーIDを指定して該当データのみを返す。
Cognito ユーザープールとAPI GatewayオーソライザーによるJWT検証はユーザー認証として有効だが、DynamoDBへのアクセス制御はLambda内コードのフィルタリングに依存しており、AWSサービスレベルの強制ではない。Lambda迂回時やコードの不備時に制御が無効化されるリスクがある。
B
Cognito IDプールで認証済みユーザーにIAMロールを割り当て、そのロールポリシーの`dynamodb:LeadingKeys`条件として`${cognito-identity.amazonaws.com:sub}`を設定し、自身のパーティションキーのアイテムのみ操作できるよう制限する。
✓ 正解
Cognito IDプールが発行するIAM一時認証情報のロールポリシーに`dynamodb:LeadingKeys`条件として`${cognito-identity.amazonaws.com:sub}`を設定することで、IAMがサービスレベルでユーザー自身のパーティションキー以外へのアクセスを直接拒否する。アプリケーションコード非依存の強制が実現できる。
C
Cognito ユーザープールのカスタム属性でユーザーIDを管理し、AppSyncのリゾルバーマッピングテンプレートにユーザーIDフィルタを実装することでDynamoDBの閲覧・更新範囲をアプリケーション層で制限する。
AppSyncリゾルバーでのアクセスフィルタリングはアプリケーション層の実装であり、DynamoDBへの直接アクセスやリゾルバーロジックの迂回には対応できない。AWSサービスレベルでの強制を要件とする本シナリオには適合しない。
D
Cognito IDプールのルールベースロールマッピングでユーザーごとに異なるIAMロールを動的に割り当て、各ロールに対してDynamoDBテーブルのリソースARNとパーティションキー値を指定したアクセスポリシーを設定する。
DynamoDBテーブルのリソースARNはテーブルまたはインデックスレベルの指定が可能だが、特定のパーティションキー値をARNに組み込んでアイテムレベルにスコープを絞ることはできない。アイテムレベル制御には`dynamodb:LeadingKeys`等の条件キーの使用が必要。

解説

Amazon Cognito IDプール(Federated Identities)は、認証されたユーザーにAWS STSを通じた一時的なIAM認証情報を発行するサービスです。認証済みユーザーに紐づくIAMロールのポリシーに`dynamodb:LeadingKeys`条件キーを使用することで、DynamoDBのパーティションキーへのアクセスをAWSサービスレベルで制限できます。 `${cognito-identity.amazonaws.com:sub}`はCognito IDのユーザー識別子(Cognito Identity ID)を参照するIAMポリシー変数です。この設定により、各ユーザーが保有するIAM一時認証情報は、自分のCognito Identity IDと一致するパーティションキーを持つアイテムへのアクセスのみIAMが許可するため、アプリケーションコードとは独立したAWSサービスレベルのアクセス強制が実現します。 選択肢AのCognito ユーザープール+LambdaフィルタリングはDynamoDBへのアクセス制御がLambda内コードへの依存となりAWSサービスレベルの強制ではない。Lambda迂回時やDynamoDBへの直接アクセス時に制御が無効化される。 選択肢CのAppSyncリゾルバーによるフィルタも同様にアプリケーション層の制御であり、IAMレベルでDynamoDBアクセスを直接制限するものではない。 選択肢DのCognito IDプールの動的ロールマッピングは有効な機能だが、DynamoDBリソースARNにはパーティションキー値を含めることができないため、この方法でアイテムレベルの制御は実現できない。

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

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

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