AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

检查 IAM 策略

除了密钥策略和授权,您还可以结合使用 IAM 策略和 CMK 密钥策略来允许访问 CMK。有关 IAM 策略和密钥策略如何协同工作的更多信息,请参阅密钥访问故障排除

要确定当前可通过 IAM 策略访问 CMK 的委托人,可以使用基于浏览器的IAM 策略模拟器工具,也可以向 IAM API 发出请求。

使用 IAM 策略模拟器检查 IAM 策略

IAM 策略模拟器可帮助您了解哪些委托人可以通过 IAM 策略访问 KMS CMK。

使用 IAM 策略模拟器确定对 KMS CMK 的访问权限

  1. 登录 AWS 管理控制台,然后打开位于 https://policysim.aws.amazon.com/ 的 IAM 策略模拟器。

  2. 用户、组和角色窗格中,选择您要模拟其策略的用户、组或角色。

  3. (可选) 清除您要从模拟中忽略的任何策略旁边的复选框。要模拟所有策略,则将所有策略保持选中状态。

  4. 策略模拟器窗格中,执行以下操作:

    1. 对于选择服务,请选择 Key Management Service

    2. 要模拟特定 AWS KMS 操作,对于选择操作,请选择要模拟的操作。要模拟所有 AWS KMS 操作,请选择全选

  5. (可选) 默认情况下,策略模拟器会模拟对所有 KMS CMK 的访问。要模拟对特定 KMS CMK 的访问,请选择 Simulation Settings (模拟设置),然后键入要模拟的 KMS CMK 的 Amazon 资源名称 (ARN)。

  6. 选择 Run Simulation (运行模拟)

您可以在结果部分查看模拟的结果。对 IAM 账户中的每个 AWS 用户、组和角色重复步骤 2 到 6。

使用 IAM API 检查 IAM 策略

您可以使用 IAM API 以编程方式检查 IAM 策略。以下步骤提供了如何执行该操作的一般概述:

  1. 针对 CMK 密钥策略中列为委托人的每个 AWS 账户(即以如下方式列出的每个根账户"Principal": {"AWS": "arn:aws:iam::111122223333:root"}),使用 IAM API 中的 ListUsersListRoles 操作检索账户中所有 IAM 用户和角色的列表。

  2. 对于列表中的每个 IAM 用户和角色,使用 IAM API 中的 SimulatePrincipalPolicy 操作以传入以下参数:

    • 对于 PolicySourceArn,指定列表中用户或角色的 Amazon 资源名称 (ARN)。您只能为每个 SimulatePrincipalPolicy API 请求指定一个 PolicySourceArn,因此必须多次调用此 API,针对列表中的每个 IAM 用户和角色分别调用一次。

    • 对于 ActionNames 列表,指定要模拟的每个 AWS KMS API 操作。要模拟所有 AWS KMS API 操作,请使用 kms:*。要测试单独的 AWS KMS API 操作,请在每个 API 操作之前添加“kms:”,例如“kms:ListKeys”。有关所有 AWS KMS API 操作的完整列表,请参阅 AWS Key Management Service API Reference 中的操作

    • (可选)要确定 IAM 用户或角色是否有权访问特定的 KMS CMK,请使用 ResourceArns 参数指定 CMK 的 Amazon 资源名称 (ARN) 的列表。要确定 IAM 用户或角色是否有权访问任何 CMK,请勿使用 ResourceArns 参数。

IAM 通过以下评估决策来响应每个 SimulatePrincipalPolicy API 请求:allowedexplicitDenyimplicitDeny。对于每个包含评估决策 allowed 的响应,其中包含允许的特定 AWS KMS API 操作的名称。它还包括评估中使用的 CMK 的 ARN(如果有)。