医療機関がAmazon S3バケット(アカウントA)にPHI(患者の健康情報)を保存しており、KMSカスタマー管理キー(CMK)でSSE-KMS暗号化を適用しています。アカウントBのIAMロール(AppRole)がこれらのオブジェクトを読み取る必要があります。セキュリティエンジニアはアカウントAのS3バケットポリシーに、AppRoleに対するs3:GetObjectを許可する記述を追加しました。しかしアプリケーションは「Access Denied」エラーを受け取り続けています。この問題の最も可能性が高い原因と解決策はどれですか?
正解: アカウントAのKMSキーポリシーにAppRoleへのkms:Decrypt権限を追加し、かつアカウントBのAppRoleのIAMポリシーにCMKのARNに対するkms:Decrypt権限を追加する必要がある。 SSE-KMSで暗号化されたS3オブジェクトにクロスアカウントでアクセスするには、S3バケットポリシーの許可だけでは不十分です。KMSは呼び出し元の権限を独立して評価します。アカウントA側のKMSキーポリシーでAppRoleへのkms:Decrypt権限を付与すること、さらにアカウントBのIAMポリシーで同キーへのkms:Decrypt権限を付与すること——この2つが両方必要です。どちらか一方だけでは不十分です。 選択肢Bは誤りです。AWS Resource Access Manager(RAM)はKMS CMKの共有をサポートしていません。クロスアカウントKMSアクセスはキーポリシーで直接制御します。 選択肢Cは誤りです。s3:GetObjectVersionはバージョン管理されたオブジェクトの特定バージョン取得に必要なアクションであり、今回の暗号化に起因するAccess Deniedとは無関係です。 選択肢Dは誤りです。KMSマルチリージョンキーは複数リージョンでの暗号化の一貫性を目的としたものであり、クロスアカウントアクセスの解決策ではありません。既存データの再暗号化も不要です。