使用 IAM 策略模拟器测试 IAM 策略

Posted cloudrivers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 IAM 策略模拟器测试 IAM 策略相关的知识,希望对你有一定的参考价值。

使用 IAM 策略模拟器,您可以通过以下方式对 IAM 和基于资源的策略进行测试和问题排查:

  • 测试附加到您 AWS 账户中的 IAM 用户、组或角色的策略。如果多个策略附加到用户、组或角色,您可以测试所有策略,也可以选择单个策略进行测试。您可以测试为特定资源所选的策略允许或拒绝哪些操作。

  • 测试附加到 AWS 资源(如 Amazon S3 存储桶、Amazon SQS 队列、Amazon SNS 主题或 Amazon S3 Glacier 文件库)的策略。

  • 如果您的 AWS 账户是 AWS Organizations 中的组织的成员,则您可以测试服务控制策略 (SCP) 对您的 IAM 策略和资源策略的影响。

  • 通过将尚未附加到用户、组或角色的新策略键入或复制到模拟器中,对这些新策略进行测试。这些仅在模拟中使用,不会保存。请注意:您不能将基于资源的策略键入或者复制到模拟器中。要在模拟器中使用基于资源的策略,您必须将相关资源包含在模拟中,并且选中复选框将该资源的策略包含在模拟中。

  • 使用所选服务、操作和资源测试策略。例如,您可以通过测试确保策略允许某个实体在 Amazon S3 服务中对特定存储桶执行 ListAllMyBucketsCreateBucket 和 DeleteBucket 操作。

  • 通过提供上下文键 (如 IP 地址或日期,包含在被测试策略的 Condition 元素中) 模拟真实方案。

  • 识别策略中导致允许或拒绝访问特定资源或操作的特定语句。

  • IAM 策略模拟器的工作方式

    模拟器评估您选择的策略,为您指定的每项操作确定有效权限。模拟器使用真实 AWS 服务请求期间所用的同一策略评估引擎。只是在以下几方面与真实 AWS 环境不同:

    • 模拟器不发出真实 AWS 服务请求,因此,您可以安全地测试在真实 AWS 环境中会进行不需要的更改的请求。

    • 因为模拟器不模拟运行所选操作,所以它不能报告对模拟请求的任何响应。返回的唯一结果是请求的操作是被允许还是被拒绝。

    • 如果您在模拟器内编辑策略,所做的更改只影响模拟器。您的 AWS 账户中的相应策略保持不变。

    使用 IAM 策略模拟器(AWS CLI 和 AWS API)

    策略模拟器命令通常需要调用 API 操作以执行两项操作:

    1. 评估策略并返回策略引用的上下文键的列表。您需要了解引用了哪些上下文键,以便在下一个步骤中提供它们的值。

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

    出于安全原因,API 操作已分为两个组:

    在这两种情况下,API 操作都将模拟一个或多个策略对操作和资源的列表的影响。每个操作都与每个资源配对,模拟将确定策略对该资源是允许还是拒绝该操作。您还可以为您的策略引用的任何上下文键提供值。通过首先调用GetContextKeysForCustomPolicy 或 GetContextKeysForPrincipalPolicy,可以获取策略引用的上下文密钥的列表。如果不提供上下文键值,模拟仍会运行。但结果可能不可靠,这是因为模拟器无法在评估中包含该上下文键。

    获取上下文密钥的列表(AWS CLI、AWS API)

    使用以下命令评估策略列表,返回策略中使用的上下文键的列表。

以上是关于使用 IAM 策略模拟器测试 IAM 策略的主要内容,如果未能解决你的问题,请参考以下文章

AWS IAM 策略模拟器:如果至少有一个区域允许操作,如何返回 true

AWS IAM 策略:按用户/角色限制存储桶/文件夹访问?

Cloudformation 的最低权限 AWS IAM 策略

使用 Pulumi 将 IAM 托管策略附加到 IAM 用户不起作用

创建附加到用户的 IAM 策略,限制用户使用某些操作创建自定义托管策略

使用 IAM 策略创建堆栈时出现 InsufficientCapabilitiesException [CAPABILITY_NAMED_IAM]