SAA-C03セキュアなアーキテクチャの設計MEDIUM単一選択

ある企業が、EC2 インスタンスで動作するアプリケーションに対して、AWS KMS を使って特定のデータを暗号化/復号する機能を実装したい。最小権限の原則に従い、そのアプリケーションの EC2 インスタンスにだけ KMS キーの使用を許可し、他の IAM エンティティからは使用できないようにしたい。最も適切な方法はどれか。

  1. A. KMS キーポリシーで AWS アカウントのルートユーザーを Principal に指定して全権限を付与し、IAM ポリシーで対象ロールのみに KMS 使用を許可する。
  2. B. AWS Secrets Manager でデータを暗号化し、KMS キーは使用しない。
  3. C. KMS キーポリシーで EC2 インスタンスにアタッチされた IAM ロールの ARN を Principal に指定し、kms:Encrypt と kms:Decrypt のみを Allow する。
  4. D. KMS キーを EC2 インスタンスのリージョンと異なるリージョンに作成し、クロスリージョンアクセスを設定する。
解答と解説を見る

正解: C

KMS キーポリシーで EC2 インスタンスのIAMロール ARN を Principal に直接指定し、必要な kms:Encrypt と kms:Decrypt のアクションのみを Allow することで、そのロールを持つ EC2 のみがキーを使用できる最小権限の構成が実現できる。他の IAM エンティティは明示的に許可されていないためアクセスできない。選択肢Aはルートユーザーに全権限を付与してから IAM ポリシーで制限する方法で技術的には動作するが、キーポリシーで Principal を明示的に絞る方が最小権限の原則に沿っており、セキュリティ上より望ましい。選択肢Dはクロスリージョンでの KMS 利用はレイテンシーが増加し、AWS KMS のリージョン構成として一般的ではない。KMS マルチリージョンキーという仕組みはあるが、今回の要件には不要な複雑さを加える。選択肢BのSecrets Manager は認証情報の管理に使うサービスであり、任意データの暗号化/復号には直接使用しない。

▸ この試験を本気で演習する(全150問・無料)