

# 使用策略模拟器所需的权限
<a name="permissions-required_policy-simulator"></a>

您所需的权限取决于您使用的是 Amazon CLI、Amazon API 还是 IAM 控制台，以及您使用的模式。

------
#### [ Console ]

需要具备调用 `iam:GetContextKeysForCustomPolicy` 的权限，才能在控制台上使用 IAM 策略模拟器。

所需的其他权限取决于所用模式。在主体模式下，您需要额外的读取权限，以列出账户中的身份并读取其附加的策略。若要减少需授予的权限，在只需测试粘贴的策略时，使用自定义模式。

**自定义模式**  
要使用自定义模式（在此模式下，需粘贴要测试的策略），还需要 `iam:SimulateCustomPolicy`

**主体模式**  
要使用主体模式（在此模式下，控制台会加载并显示账户中的身份和策略），您需要通用权限以及以下权限。这是一组较大的权限，因为控制台必须发现身份并读取其附加的策略。

模拟：
+ `iam:SimulatePrincipalPolicy`

列出身份：
+ `iam:ListUsers`, `iam:ListRoles`, `iam:ListGroups`
+ `iam:ListGroupsForUser`

列出附加的策略：
+ `iam:ListPolicies`, `iam:ListUserPolicies`, `iam:ListRolePolicies`, `iam:ListGroupPolicies`
+ `iam:ListAttachedUserPolicies`, `iam:ListAttachedRolePolicies`, `iam:ListAttachedGroupPolicies`

获取策略文档：
+ `iam:GetPolicyVersion`, `iam:GetUserPolicy`, `iam:GetRolePolicy`, `iam:GetGroupPolicy`

获取权限边界：
+ `iam:GetUser`, `iam:GetRole`

**用于模拟基于资源的策略的主体模式下的额外权限**  
要在主体模式模拟中包含资源的策略，请为该资源类型添加读取权限：
+ `s3:GetBucketPolicy`, `sns:GetTopicAttributes`, `sqs:GetQueueUrl`, `sqs:GetQueueAttributes`, `glacier:GetVaultAccessPolicy`

有关授予模拟器访问权限的示例策略，请参阅[示例策略：Amazon Identity and Access Management (IAM)](access_policies_examples.md#policy_library_IAM)。

------
#### [ Amazon CLI and Amazon API ]

对于 Amazon CLI 和 Amazon API，您只需拥有为待测试策略类型调用模拟操作的权限。如果先使用 `iam:GetContextKeysForCustomPolicy` 和 `iam:GetContextKeysForPrincipalPolicy` 来发现上下文密钥，则还需授予这些操作权限。出于安全考虑，操作分为以下两种模式。仅授予与待模拟内容相匹配的权限。

**模拟以字符串形式直接传递给 API 的策略（自定义策略）**  

+ `iam:SimulateCustomPolicy`
+ `iam:GetContextKeysForCustomPolicy`（仅适用于使用上下文密钥发现步骤时）

通过这些操作，您可以测试尚未附加到用户、用户组或角色的策略。您可以将策略作为字符串传递，这些策略仅在模拟中使用。

**模拟附加到指定 IAM 用户、用户组、角色或资源的策略**  

+ `iam:SimulatePrincipalPolicy`
+ `iam:GetContextKeysForPrincipalPolicy`（仅适用于使用上下文密钥发现步骤时）

------

这些操作可能会显示分配给其他 IAM 实体的权限，因此建议限制可以调用这些操作的用户。例如，要向名为 Bob 的用户授予权限，以便模拟已分配给名为 Alice 的用户的策略，请向 Bob 授予访问以下资源的权限：`arn:aws:iam::777788889999:user/alice`。

要查看允许为当前 Amazon Web Services 账户 中已附加策略和未附加的策略使用策略模拟器 API 的示例策略，请参阅 [IAM：访问策略模拟器 API](reference_policies_examples_iam_policy-sim.md)。要查看范围限定为具有特定路径的用户的策略示例，请参阅 [IAM：基于用户路径访问策略模拟器 API](reference_policies_examples_iam_policy-sim-path.md)。