Q41 — AWS SAA-C03 第8章
第 41/65 問 | ← 第8章
Q536. サーバーレスアプリケーションが Amazon API Gateway、AWS Lambda、Amazon DynamoDB を使用しています。Lambda 関数は、DynamoDB テーブルに対する読み取りおよび書き込み権限を必要としています。 この要件を満たす最も安全な解決策はどれですか?
- A. プログラムによるアクセスを有効にした IAM ユーザーを作成し、Lambda 関数からそのユーザーを利用できるようにします。このユーザーに DynamoDB テーブルへの読み取りおよび書き込みアクセスを許可するポリシーをアタッチします。access_key_id および secret_access_key を Lambda の環境変数として保存します。他の AWS ユーザーが Lambda 関数の設定を読み書きできないよう、適切なアクセス制御を確保します。
- B. 信頼されたサービスとして Lambda を含む IAM ロールを作成します。このロールに DynamoDB テーブルへの読み取りおよび書き込みアクセスを許可するポリシーをアタッチします。Lambda 関数の設定を更新し、この新しいロールを実行ロールとして使用するように指定します。 ✓
- C. プログラムによるアクセスを有効にした IAM ユーザーを作成し、Lambda 関数からそのユーザーを利用できるようにします。このユーザーに DynamoDB テーブルへの読み取りおよび書き込みアクセスを許可するポリシーをアタッチします。access_key_id および secret_access_key を AWS Systems Manager Parameter Store のセキュア文字列パラメーターとして保存します。Lambda 関数のコードを更新し、DynamoDB に接続する前にこれらのセキュア文字列パラメーターを取得するようにします。
- D. 信頼されたサービスとして DynamoDB を含む IAM ロールを作成します。このロールに Lambda 関数からの読み取りおよび書き込みアクセスを許可するポリシーをアタッチします。Lambda 関数のコードを更新し、この新しいロールを実行ロールとしてアタッチするようにします。
正解: B. 信頼されたサービスとして Lambda を含む IAM ロールを作成します。このロールに DynamoDB テーブルへの読み取りおよび書き込みアクセスを許可するポリシーをアタッチします。Lambda 関数の設定を更新し、この新しいロールを実行ロールとして使用するように指定します。
解説
Lambda 関数が AWS リソース(ここでは DynamoDB)にアクセスするには、実行ロール(execution role)として IAM ロールを使用するのが最も安全かつ推奨される方法です。このロールは、Lambda サービスが信頼するエンティティ(trusted entity)として定義され、必要な最小限の権限を持つポリシーがアタッチされます。オプション A および C は、IAM ユーザーのアクセスキーを環境変数や Parameter Store に格納する手法ですが、これは資格情報の管理・ローテーション・セキュリティ面でリスクが高く、ベストプラクティスに反します。オプション D は、信頼されたサービスを DynamoDB と誤って設定しており、Lambda 関数がロールを「コード内でアタッチ」することは技術的に不可能です(実行ロールはデプロイ時に設定されるものであり、実行時には変更できません)。したがって、正解は B です。