View a markdown version of this page

如何模拟策略 - AWS Identity and Access Management

如何模拟策略

您可以在 IAM 控制台中运行模拟,也可以使用 AWS CLI 和 AWS API 运行模拟。如需有关模拟器评估的内容、两种模式以及如何得出结果的概述,请参阅使用 IAM policy simulator 测试 IAM 策略。有关所需权限,请参阅使用策略模拟器所需的权限

模拟策略(控制台)

您可以通过 IAM 控制台中的策略模拟器运行模拟。在导航窗格中,选择策略模拟器

注意

https://policysim.aws.amazon.com/ 中的独立策略模拟器控制台已不再维护。在 IAM 控制台中使用策略模拟器。

主体模式

选择身份

首先,您需要选择身份。您可以在该账户中选择 IAM 用户、角色或组。选择后,侧面板将填充附加到这些身份的策略。

包含或排除策略

侧面板列出了模拟范围内的策略,包括内联策略、AWS 托管式策略和客户管理型策略,以及任何权限边界。您可以排除某个策略,以查看无此策略时结果会如何变化,然后再将其重新包含策略。排除授予了访问权限的策略会将结果更改为隐式拒绝。

添加操作和资源

主体模式下的 IAM 策略模拟器控制台。

在左侧面板中选择身份和策略后,添加要测试的操作。对于支持资源选择的操作,可以针对所有资源进行测试,也可以输入一个或多个特定的资源 ARN。多项操作使用相同的资源类型时,您可以将一个资源同时应用于所有这些操作,也可以将其范围限定为一项操作。

IAM 策略模拟器中的操作,只需要一种资源类型。

某些操作需要一组相关的资源类型,模拟器才能对其进行评估。例如,在模拟 ec2:RunInstances 时,控制台会提示您同时指定映像、实例和安全组,并指定子网或卷(取决于使用场景)。

IAM 策略模拟器中的操作,需要多种资源类型。

提供条件键值

如果您测试的策略包含条件键,模拟器会列出相关的键,并允许您在运行模拟之前设置值。显示的键反映了当前选择的策略,因此选择或取消选择策略,都会相应地添加或移除其键。如果某个值不满足条件,则操作将被拒绝。

模拟器在两个位置提供条件键的值。全局请求条件适用于整个模拟请求。这些键以 aws: 开头,例如 aws:MultiFactorAuthPresentaws:PrincipalServiceNamesList,您只需在全局条件区域中设置其值一次即可。选择或清除策略会添加或移除其全局键,您输入的值在调整范围内策略时将予以保留。特定于服务的条件适用于单项操作。每个操作行都会显示其引用的条件数量,您可以打开该行,为该操作设置特定于服务的键,例如 cloudwatch:namespace 用于 cloudwatch:PutMetricData,或 ram:PermissionResourceType 用于 ram:ListPermissionAssociations。操作行可以同时包含全局键和特定于服务的键,如果任何值不满足条件,则该操作将被拒绝。

IAM 策略模拟器会自动为您填充部分主体和组织上下文键,其余键的值则需由您提供。有关自动填充的键列表以及条件键评估方式的更多信息,请参阅 IAM 策略模拟器中的条件键评估的工作原理

要了解如何使用条件键,请参阅 AWS 全局条件上下文键

测试权限边界

身份具有权限边界时,权限边界将显示在侧面板中,并默认包含在内。如果您想确定边界是否是某项操作被拒绝的原因,也可以排除该边界,然后再次运行模拟。

例如,假设您针对其边界不允许 iam:DeleteRole 的身份运行模拟。结果是拒绝,归因于权限边界。如果您随后添加了允许该操作且排除边界的策略,结果将变为允许。这证实了边界是阻止该操作的唯一控制因素。

IAM 策略模拟器中归因于权限边界的模拟结果。

包含服务控制策略

如果您的账户是某个组织的成员,则可以通过侧面板将服务控制策略(SCP)包含在模拟中。模拟器会在确定结果时评估 SCP 中自动填充的条件键和资源范围。当 SCP 明确拒绝某项操作时,结果为归因于 AWS Organizations 的显式拒绝,且其他策略中的允许无法覆盖该拒绝。关闭该控制因素再重新运行模拟,以查看不受组织控制因素影响时的结果。有关自动填充的条件键列表,请参阅 IAM 策略模拟器中的条件键评估的工作原理

注意

出于安全考虑,模拟器不会显示 SCP 评估的详细信息。仅供 SCP 引用的条件键不会列出来供您设置值,且针对某一结果返回的匹配语句也不包含来自 SCP 的语句。键和匹配语句来自附加到身份的基于身份的策略,以及您提供的任何策略。

测试基于资源的策略

要在控制台模拟中加入基于资源的策略,请输入特定的资源 ARN,然后选择可包含资源策略的选项。基于资源的策略会显示在侧面板中,并在结果中进行评估。在控制台中,此功能适用于 Amazon S3 存储桶、Amazon SQS 队列、Amazon SNS 主题和 Amazon Glacier 保管库。

注意

IAM 角色不支持基于资源的策略模拟。

查看结果

结果表中的每一行均显示操作是被允许、隐式拒绝还是显示拒绝,并附有对结果的简短说明。使用说明来确定由哪个策略或控制因素决定了结果,例如显示允许、缺少匹配语句、权限边界或组织控制因素。

自定义模式

在自定义模式下,您可以使用 IAM 策略编辑器编写或粘贴基于身份的策略和权限边界。这些策略不会附加到任何身份,可在应用之前对其进行评估。您可以包含多个基于身份的策略,但只能包含一个用于模拟的权限边界。

注意

在自定义模式下,控制台不支持传入自定义 SCP 或模拟基于资源的策略。要模拟自定义 SCP 或基于资源的策略,请使用 AWS CLI 或 AWS API。

自定义模式下的 IAM 策略模拟器控制台。

模拟策略(AWS CLI 和 AWS API)

使用 AWS CLI 或 AWS API 模拟策略通常需要两个步骤:

  1. 评估策略并返回策略引用的上下文键列表,以便您了解需要提供哪些上下文键值。此为可选步骤。

  2. 模拟策略,在模拟过程中提供要使用的操作、资源和上下文键值。

每个操作都与每个资源配对,模拟将确定策略对该资源是允许还是拒绝该操作。您还可以为策略引用的任何上下文键提供值。如果没有为上下文键提供值,模拟仍会运行并返回隐式拒绝,缺少的键将在 missingContextValues 中返回,以便您了解需要添加哪些值。如果缺少的上下文键仅供 SCP 引用,则出于安全原因,该键不会返回,但您仍会收到决策结果。

API 操作分为两组:

这些操作还支持:

  • SimulateCustomPolicy 上的 OrderedOrganizationPolicyInputList,您可以在不使用实际主体的情况下模拟组织 SCP 层次结构的效果。

  • SimulatePrincipalPolicy 上的 PolicyExclusionList,您可以测试“如果我删除此策略会怎样?” 的使用场景,无需更改附加到主体的策略。

  • 响应会为每个操作返回一个 EvaluationResult,顶层为汇总决策,ResourceSpecificResults 中为每个资源的详细信息。

AWS CLI 和 AWS API 参考

有关模拟策略的 AWS CLI 命令示例,请参阅以下内容: