ある企業は S3 に保存されたデータを KMS カスタマーマネージドキー(CMK)で暗号化しています。セキュリティ監査で「CMK のキーポリシーに kms:* を Allow するステートメントがあるため、意図しないプリンシパルがキーを使える可能性がある」と指摘されました。最小権限を維持しながら適切にキーポリシーを修正する方法として最も適切なものはどれですか?
- A. CMK を廃止して AWS マネージドキー(aws/s3)に切り替え、キーポリシーの管理を不要にする
- B. キーポリシーで実際に使用するアクション(kms:GenerateDataKey・kms:Decrypt・kms:DescribeKey など)のみを列挙し、Principal も S3 サービスと必要なロール ARN のみに限定する
- C. キーポリシーに「Principal: 全アカウントユーザー(arn:aws:iam::ACCOUNT_ID:root)への kms:* の Allow」を残しつつ IAM ポリシーで各プリンシパルを絞る
- D. キーポリシーをすべて削除して IAM ポリシーだけでキーへのアクセスを制御する
解答と解説を見る
正解: B
キーポリシーに最小権限を適用するには、Action を実際に必要な操作(S3 の SSE-KMS では kms:GenerateDataKey と kms:Decrypt が主に必要)のみに絞り、Principal も S3 サービスプリンシパルや特定の IAM ロール ARN のみに限定します。D の「キーポリシーをすべて削除」はできません。KMS キーには必ずキーポリシーが必要で、削除すると「デフォルトキーポリシー」が適用されます(実際は削除自体がエラーになる)。C の root ユーザーへの kms:* 許可は IAM ポリシーで制御できるため許容範囲ですが、kms:* という過剰なアクションを残すことは指摘された問題の解決になりません。A はカスタムキーポリシーが使えなくなり制御の柔軟性を失います。
📚 関連サービスの解説: Amazon S3