了解 Azure Policy 中的范围

有许多设置用于确定哪些资源可以接受评估以及哪些资源由 Azure Policy 评估。 这些控制措施的首要概念是范围。 Azure Policy 中的范围基于 Azure 资源管理器中范围的工作方式。 有关综合概述,请参阅 Azure 资源管理器中的范围

本文介绍了 Azure Policy 中范围的重要性,以及它的相关对象和属性。

定义位置

Azure Policy 使用第一个实例范围的时间是在创建策略定义的时候。 该定义可以保存在管理组或订阅中。 该位置确定计划或策略可以分配到的范围。 资源必须位于作为分配目标的定义位置的资源层次结构之内。 Azure Policy 涵盖的资源介绍了如何评估策略。

如果定义位置是:

  • 订阅 - 定义策略的订阅,并且该订阅中的资源可以分配给策略定义。
  • 管理组 - 定义策略的管理组,并且子管理组和子订阅中的资源可以分配给策略定义。 如果你计划将此策略定义应用于多个订阅,该位置必须是包含每个订阅的管理组。

该位置应该是由你想要对其使用策略定义(如果存在)的所有资源共享的资源容器。 此资源容器通常是位于根管理组附近的某个管理组。

分配范围

一个分配具有多个用于设置范围的属性。 对这些属性的使用决定了要评估哪个 Azure Policy 资源以及哪些资源会计入符合性。 这些属性映射到以下概念:

  • 包含 - 应该按定义来评估资源层次结构或单个资源的符合性。 分配对象的 properties.scope 属性确定针对符合性要包含和评估什么内容。 有关详细信息,请参阅分配定义

  • 排除 - 不应该按定义来评估资源层次结构或单个资源的符合性。 某个分配对象的 properties.notScopes 数组属性确定要排除什么内容。 这些范围内的资源不会被评估,也不会包含在符合性计算中。 有关详细信息,请参阅分配定义 - 排除的范围

除了策略分配的属性外,还有一个策略豁免对象。 豁免提供一种方法来识别某个分配中不进行评估的部分,从而增强范围描述。

  • 豁免- 应该按定义来评估资源层次结构或单个资源的符合性,但由于某种原因(如通过其他方法得到豁免或缓解)而不会对其进行评估。 处于这种状态的资源在符合性报告中会显示为“已豁免”,以便可对这些资源进行跟踪。 豁免对象在资源层次结构或单个资源上创建为子对象,从而确定了豁免的范围。 资源层次结构或单个资源可以从多个分配豁免。 通过使用 expiresOn 属性,可以将豁免配置为按计划过期。 有关详细信息,请参阅豁免定义

    注意

    由于为资源层次结构或单个资源授予豁免会产生影响,因此豁免还具有更多的安全措施。 除了需要对资源层次结构或单个资源执行 Microsoft.Authorization/policyExemptions/write 操作外,豁免的创建者还必须在目标分配上使用 exempt/Action 谓词。

范围对比

下表是范围选项的对比:

包含 排除 (notScopes) 例外
资源接受评估 - -
资源管理器对象 - -
需要修改策略分配对象 -

那么,如何选择是使用排除还是豁免呢? 通常,建议将排除项永久绕过广泛范围的评估,例如不需要相同级别治理的测试环境。 对于存在时间限制或更具体的方案(其中仍应对资源或资源层次结构进行跟踪,否则将对其进行评估,但有特定原因不应评估其合规性),建议使用排除。

后续步骤