【正解】B、D
【0からの解説】
要件は3つです。(1)保存時暗号化、(2)転送時暗号化、(3)認可された担当者だけがアクセスできること。
(1)保存時暗号化は、SQS と SNS の両方でサーバー側暗号化(SSE)を有効にすれば実現できます。ここで KMS の「カスタマーマネージドキー(CMK)」を使うと、誰がそのキーを使えるかを「キーポリシー」で細かく制御でき、認可されたプリンシパルだけに限定できます(=要件3も満たす)。
(2)転送時暗号化は、キューポリシー/トピックポリシーに「aws:SecureTransport が true(=TLS)」の場合のみ許可する条件を入れることで、暗号化されていない接続を拒否できます。
したがって、SNS 側を CMK で暗号化しキーポリシーで制限する B と、SQS 側を CMK で暗号化しキーポリシーで制限したうえキューポリシーで TLS 強制する D の組み合わせが、SQS と SNS の双方をカバーしつつ全要件を満たします。
【誤りの選択肢】
A:CMK ではなく「デフォルトのキーポリシー」を更新する前提で、認可プリンシパルへの制限が CMK ほど厳密に管理できず、さらに TLS 強制(転送時暗号化)の設定がありません。
C:SNS について TLS 強制まで含む点は良いものの、暗号化に CMK を明示せずデフォルトキーポリシーの更新としており、B のように CMK + キーポリシーで認可を厳密に制御する構成のほうが要件に適合します。SQS 側を担保する D と組み合わせるべきは、SNS 側を CMK で固める B です。
E:キーの使用制限を「IAM ポリシー」で行うとしていますが、KMS キーの使用可否を制御する正しい場所は「キーポリシー」です(キーポリシーが KMS アクセス制御の基盤)。この点が誤りです。
【参考】
Amazon SQS のサーバー側暗号化(SSE)KMS のキーポリシー