Q39 — AWS SAA-C03 第15章

第 39/100 問 | ← 第15章

Q1139. あるアプリケーションでは、Amazon SQS キューと 2 つの AWS Lambda 関数が使用されています。そのうち 1 つの Lambda 関数がメッセージをキューにプッシュし、もう 1 つの関数がキューをポーリングしてキューに格納されたメッセージを受信します。ソリューションアーキテクトは、このキューへの読み書きを、この 2 つの Lambda 関数のみに制限する必要があります。これらの要件を満たす解決策はどれですか?

正解: B. SQS キューにリソースベースポリシーをアタッチし、各 Lambda 関数のプリンシパル以外のエンティティに対してキューの読み取りおよび書き込みアクセスを明示的に拒否します。さらに、各 Lambda 関数の実行ロールに IAM ポリシーをアタッチし、キューに対する読み取りおよび書き込みアクセスを許可します。

解説

SQS キューへの読み書きを指定された 2 つの Lambda 関数のみに制限するための最も適切な解決策は、選択肢 B です。つまり、「SQS キューにリソースベースポリシーをアタッチし、各 Lambda 関数のプリンシパル以外のエンティティに対してキューの読み取りおよび書き込みアクセスを明示的に拒否します。さらに、各 Lambda 関数の実行ロールに IAM ポリシーをアタッチし、キューに対する読み取りおよび書き込みアクセスを許可します」です。 解説: ・リソースベースポリシー:SQS キューにリソースベースポリシーを設定することで、指定された Lambda 関数のプリンシパル以外のあらゆるエンティティからのアクセスを明示的に拒否できます。これにより、キューとのやり取りを厳密に制御し、許可された関数のみがアクセス可能になります。 ・Lambda 実行ロールの IAM ポリシー:各 Lambda 関数の実行ロールにキューへの読み書きアクセスを許可する IAM ポリシーを付与することで、必要な操作を実行できるようになりながら、セキュアな構成を維持できます。 他の選択肢が不適切な理由: A:IAM ポリシーによる拒否(Deny)は、キュー自体のアクセス制御としては効果的ではなく、不正なエンティティがキューにアクセスを試みる可能性を完全に排除できません。 C:Lambda 関数のプリンシパルへのアクセス許可は重要ですが、他のエンティティへの明示的な拒否がないため、セキュリティレベルが十分ではありません。 D:リソースレベルで「すべてのアクセスを拒否」するポリシーを設定すると、Lambda 関数の実行ロールがリソースポリシーと整合しなければ、関数自身もキューにアクセスできなくなります。これは意図した動作ではなく、運用不能につながります。 したがって、選択肢 B は、指定された Lambda 関数のみが SQS キューにアクセスできるよう、最も安全かつ確実に制御する解決策です。