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

マルチアカウント構成で、アカウント A の Lambda 関数がアカウント B にある DynamoDB テーブルにアクセスする必要があります。長期的な認証情報(アクセスキー)を使わず、最小権限の原則に従って実装するための正しい手順を2つ選んでください。

A
アカウント B に IAM ロールを作成し、その信頼ポリシー(Trust Policy)でアカウント A の Lambda 実行ロール ARN をプリンシパルとして許可する
✓ 正解
アカウントBでIAMロールを作成し、信頼ポリシー(Trust Policy)でアカウントAのLambda実行ロールARNをプリンシパルとして許可することが、クロスアカウントアクセスの第一段階です。これでAssumeが可能になります。
B
アカウント A の Lambda 実行ロールに sts:AssumeRole 権限を付与し、Lambda コード内でアカウント B のロールを Assume して一時認証情報を取得する
✓ 正解
アカウントAのLambda実行ロールに sts:AssumeRole 権限を付与し、Lambda コード内でアカウントBのロールをAssumeして一時認証情報を取得します。この一時認証情報でDynamoDBにアクセスするのが正しい実装です。
C
アカウント B の DynamoDB テーブルのリソースベースポリシーにアカウント A の IAM ユーザーのアクセスキー ID を直接記述する
リソースベースポリシーにIAMユーザーのアクセスキーIDを直接記述することはセキュリティ上非常に危険です。長期アクセスキーの露出リスクが高く、使用すべきではありません。
D
アカウント A のルートユーザーの認証情報を Lambda の環境変数に設定してアカウント B の DynamoDB にアクセスする
ルートユーザーの認証情報を環境変数に設定するのはセキュリティ上最悪のプラクティスです。認証情報の露出リスクが極めて高く、絶対に避けるべき方法です。

解説

クロスアカウントアクセスはSTS AssumeRoleで実現します。アカウントBにIAMロールを作成して信頼ポリシーでアカウントAのLambda実行ロールを信頼エンティティとして設定し、アカウントAのLambda実行ロールにsts:AssumeRole権限を付与してコード内でassumeRoleを呼び出します。取得した一時認証情報でアカウントBのDynamoDBにアクセスします。 選択肢A(アカウントBのIAMロール作成): 信頼ポリシーでアカウントAのLambda実行ロールARNをプリンシパルとして設定することでクロスアカウントのAssumeRoleが許可されます。長期認証情報を使用せず最小権限を維持できる正しい手法です。 選択肢B(sts:AssumeRole権限の付与): Lambda実行ロールにsts:AssumeRole権限を持たせ、コード内でアカウントBのロールを引き受けて一時認証情報を取得します。一時認証情報は短期間で失効するため長期認証情報よりセキュアです。 選択肢C(リソースベースポリシーへのアクセスキーID記述): IAMポリシーのプリンシパルにはIAM ARNを指定するものであり、アクセスキーIDを記述することはできません。仮にDynamoDBリソースベースポリシーを使用する場合でも、Lambda実行ロールのARNで制御します。 選択肢D(ルートユーザーの認証情報を環境変数に設定): ルートユーザーの認証情報の使用はAWSのセキュリティベストプラクティスに絶対に反します。環境変数への長期認証情報の設定も認証情報漏洩リスクが高く、最小権限の原則にも違反します。

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

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

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