IAM Access Analyzer 自定义策略检查 - AWS Identity and Access Management

IAM Access Analyzer 自定义策略检查

您可以使用 AWS Identity and Access Management Access Analyzer 自定义策略检查,根据指定的安全标准验证策略。您可以运行下列类型的自定义策略检查:

  • 对照参考策略检查:编辑策略时,您可以检查与参考策略(如现有版本的策略)相比,更新后的策略是否授予新的访问。在 IAM 控制台中使用 AWS Command Line Interface(AWS CLI)、IAM Access Analyzer API(API)或 JSON 策略编辑器编辑策略时,可以运行此检查。

  • 对照 IAM 操作或资源列表进行检查:您可以检查以确保策略不允许特定 IAM 操作或资源。如果只指定了操作,则 IAM Access Analyzer 会检查是否对策略中的所有资源具有操作访问权限。如果只指定了资源,则 IAM Access Analyzer 会检查哪些操作可以访问指定的资源。如果同时指定了操作和资源,则 IAM Access Analyzer 会检查哪些指定操作可以访问指定的资源。使用 AWS CLI 或 API 创建或编辑策略时,可以运行此检查。

  • 检查是否具有公共访问权限:您可以检查资源策略是否可以授予对指定的资源类型的公共访问权限。使用 AWS CLI 或 API 创建或编辑策略时,可以运行此检查。这种类型的自定义策略检查与预览访问权限不同,因为该检查不需要任何账户或外部访问分析器上下文。访问预览允许您在部署资源权限之前预览 IAM Access Analyzer 调查发现,而自定义检查确定策略是否可以授予公共访问权限。

每次自定义策略检查都会产生费用。有关定价的更多详细信息,请参阅 IAM Access Analyzer 定价

自定义策略检查的工作原理

您可以对基于身份和基于资源的策略运行自定义策略检查。自定义策略检查不依赖模式匹配技术或检查访问日志来确定策略是否允许新的访问或指定访问。与外部访问调查发现类似,自定义策略检查是基于 Zelkova 构建的。Zelkova 将 IAM policy 转换为等效逻辑语句,并针对问题运行一套通用和专门逻辑求解器(可满足性模理论)。为了检查新的访问或指定访问,IAM Access Analyzer 将 Zelkova 重复应用于策略。查询变得越来越具体,可以根据策略的内容来表征策略允许的行为类别。有关可满足性模理论的更多信息,请参阅可满足性模理论

在极少数情况下,IAM Access Analyzer 无法完全确定策略语句是授予新的访问权限还是指定访问权限。在这种情况下,如果自定义策略检查失败,就会导致声明误报。IAM Access Analyzer 旨在提供全面的策略评估,并尽量减少误报。这种方法意味着 IAM Access Analyzer 提供了高度的保证,即通过检查意味着策略未授予访问权限。您可以查看 IAM Access Analyzer 响应中报告的策略语句,手动检查失败的检查。

参考策略示例以检查新的访问

您可以在 GitHub 上的 IAM Access Analyzer 自定义策略检查示例存储库中找到参考策略示例,了解如何为新的访问设置和运行自定义策略检查。

在使用这些示例之前

在使用这些示例参考策略之前,请执行以下操作:

  • 仔细查看并根据您的独特需求自定义参考策略。

  • 通过您所用的 AWS 服务 在您的环境中全面测试参考策略。

    参考策略演示了自定义策略检查的实现和使用。这些示例策略并是要完全按照所示实施的官方AWS建议或最佳实践。您有责任仔细测试参考策略是否适合满足您环境中的安全要求。

  • 自定义策略检查的分析与环境无关。其分析只考虑输入策略中包含的信息。例如,自定义策略检查无法检查账户是否是特定 AWS 组织的成员。因此,自定义策略检查无法根据 aws:PrincipalOrgIdaws:PrincipalAccount 条件键的条件键值来比较新的访问。

检查失败的自定义策略检查

当自定义策略检查失败时,IAM Access Analyzer 的响应包括导致检查失败的策略语句的语句 ID(Sid。虽然语句 ID 是一个可选的策略元素,但我们建议您为每个策略语句添加一个语句 ID。自定义策略检查还会返回语句索引,以帮助确定检查失败的原因。语句索引遵循从零开始的编号,其中第一条语句的编号为 0。当有多个语句导致检查失败时,检查一次只返回一个语句 ID。我们建议您修复原因中突出显示的语句,然后重新运行检查,直到检查通过。

使用自定义策略检查验证策略(控制台)

作为一个可选步骤,在 IAM 控制台的 JSON 策略编辑器中编辑策略时,您可以运行自定义策略检查。您可以检查与现有版本相比,更新后的策略是否授予新的访问权限。

要在编辑 IAM JSON 策略时检查新的访问
  1. 登录 AWS Management Console,然后使用以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在左侧的导航窗格中,选择策略

  3. 在策略列表中,选择要编辑的策略的策略名称。您可以使用搜索框筛选策略列表。

  4. 选择权限选项卡,然后选择编辑

  5. 选择 JSON 选项并更新您的策略。

  6. 在策略下方的策略验证窗格中,选择检查新访问选项卡,然后选择检查策略。如果修改后的权限授予新的访问权限,则该语句将在策略验证窗格中突出显示。

  7. 如果不打算授予新的访问权限,请更新策略声明并选择检查策略,直到检测不到新的访问。

    注意

    每次检查新的访问都会产生费用。有关定价的更多详细信息,请参阅 IAM Access Analyzer 定价

  8. 选择下一步

  9. 查看和保存页面上,查看此策略中定义的权限,然后选择保存更改

使用自定义策略检查验证策略(AWS CLI 或 API)

您可以从 AWS CLI 或 IAM Access Analyzer API 运行 IAM Access Analyzer 自定义策略检查。

要运行 IAM Access Analyzer 自定义策略检查(AWS CLI)

  • 要检查与现有策略相比,更新后的策略是否允许新的访问,请运行以下命令:check-no-new-access

  • 要检查策略是否不允许指定访问,请运行以下命令:check-access-not-granted

  • 要检查资源策略是否可以授予对指定的资源类型的公共访问权限,请运行以下命令:check-no-public-access

要运行 IAM Access Analyzer 自定义策略检查(API)

  • 要检查与现有策略相比,更新后的策略是否允许新的访问,请使用 CheckNoNewAccess API 操作。

  • 要检查策略是否不允许指定访问,请使用 CheckAccessNotGranted API 操作。

  • 要检查资源策略是否可以授予对指定的资源类型的公共访问权限,请使用 CheckNoPublicAccess API 操作。