SAAセキュアなアーキテクチャの設計
ある企業はマルチアカウント環境を運用しています。アカウントA(データ保管用)のS3バケットは、アカウントAが所有するKMSカスタマーマネージドキー(CMK)で暗号化されています。アカウントB(分析用)のLambda関数が、このS3オブジェクトを読み取って復号する必要があります。最小権限の原則に従い、確実に復号を許可できる構成はどれですか。
AアカウントAのCMKのキーポリシーでアカウントBのLambda実行ロールにkms:Decryptを許可し、アカウントB側でも同ロールのIAMポリシーにkms:Decryptを付与する
✓ 正解
KMSのクロスアカウント復号にはキーポリシーでアカウントBのプリンシパルを許可し、かつB側IAMポリシーでもkms:Decryptを付与する両面の設定が必須です。対象ロールにkms:Decryptのみを与えることで最小権限も満たします。
BアカウントB側のLambda実行ロールのIAMポリシーにkms:Decryptを付与すれば、アカウントAのキーポリシーを変更しなくても復号できる
キーポリシーはKMSにおける権限の最終的な判断根拠であり、アカウントAのキーポリシーで許可がない限り、B側のIAMポリシーだけでは復号は拒否されます。設定が片面のみで不十分です。
CアカウントAのCMKをAWS RAMでアカウントBに共有し、IAMポリシーの設定なしにLambda実行ロールへ自動的に復号権限を付与する
AWS RAMが共有できるリソースにKMS CMKは含まれません。RAM経由でキーを共有して自動的に権限を付与するという仕組みは存在せず、この方法では復号権限を与えられません。
DアカウントAのキーポリシーでアカウントBのルートユーザーにkms:*を許可し、アカウントB側のIAMポリシーは設定しない
キーポリシーでルートユーザーにkms:*を許可するのは過剰権限で最小権限に反します。さらにアカウントBのIAMポリシー設定を省略しているため、実行ロールには権限が伝播せず復号できません。
解説
KMSのクロスアカウントアクセスでは、キーを所有するアカウントAのキーポリシーで対象プリンシパル(アカウントBの実行ロール)を明示的に許可し、かつアカウントB側のIAMポリシーでもkms:Decryptを付与する必要があります。両方が揃って初めて復号が可能になり、特定ロールにkms:Decryptのみを与えることで最小権限を実現できます。
選択肢BのIAMポリシーのみの構成は、キーポリシーがKMSの最終的な権限判断を担うため、キーポリシーでの許可がないと復号できません。
選択肢CのAWS RAMはKMSキーの共有に対応しておらず、この方法では権限を付与できません。
選択肢Dのルートユーザーへkms:*を許可する方式は過剰権限で最小権限に反し、ロール側のIAMポリシー設定も省略しているため復号できません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →