有许多设置可确定哪些资源可以接受评估,以及 Azure Policy 评估哪些资源。 这些控制措施的首要概念是范围。 Azure Policy 中的范围基于 Azure 资源管理器中范围的工作方式。 有关综合概述,请参阅 Azure 资源管理器中的范围。
本文介绍了 Azure Policy 中范围的重要性,以及它的相关对象和属性。
定义位置
Azure Policy 使用第一个实例范围的时间是在创建策略定义的时候。 该定义可以保存在管理组或订阅中。 该位置确定计划或策略可以分配到的范围。 资源必须位于作为分配目标的定义位置的资源层次结构之内。 Azure Policy 涵盖的资源介绍了如何评估策略。
如果定义位置是:
- 订阅:定义策略的订阅,并且该订阅中的资源可以分配给策略定义。
- 管理组:定义策略的管理组,并且子管理组和子订阅中的资源可以分配给策略定义。 如果你计划将此策略定义应用于多个订阅,该位置必须是包含每个订阅的管理组。
该位置应该是由你想要对其使用策略定义(如果存在)的所有资源共享的资源容器。 此资源容器通常是位于根管理组附近的某个管理组。
分配范围
一个分配具有多个用于设置范围的属性。 对这些属性的使用决定了要评估哪个 Azure Policy 资源以及哪些资源会计入符合性。 这些属性映射到以下概念:
- 包含:定义将评估资源层次结构或单个资源的合规性。 分配对象的范围确定了要包含哪些内容并评估其合规性。 有关详细信息,请参阅 Azure Policy 分配结构。
- 排除:定义不应评估资源层次结构或单个资源的合规性。 某个分配对象的
properties.notScopes
数组属性确定要排除什么内容。 这些范围内的资源不会被评估,也不会包含在符合性计算中。 有关详细信息,请参阅 Azure Policy 分配结构排除范围。
除了策略分配的属性外,还有一个 Azure Policy 豁免结构对象。 豁免提供一种方法来识别某个分配中不进行评估的部分,从而增强范围描述。
豁免:定义将评估资源层次结构或单个资源的合规性,但出于某种原因(例如通过其他方法得到豁免或缓解)不会对其进行评估。 处于这种状态的资源在符合性报告中会显示为“已豁免”,以便可对这些资源进行跟踪。 豁免对象在资源层次结构或单个资源上创建为子对象,从而确定了豁免的范围。 资源层次结构或单个资源可以从多个分配豁免。 通过使用 expiresOn
属性,可以将豁免配置为按计划过期。 有关详细信息,请参阅 Azure Policy 豁免结构。
注意
由于为资源层次结构或单个资源授予豁免会产生影响,因此豁免还具有更多的安全措施。 除了需要对资源层次结构或单个资源执行 Microsoft.Authorization/policyExemptions/write
操作外,豁免的创建者还必须在目标分配上使用 exempt/Action
谓词。
范围对比
下表是范围选项的对比:
资源 | 包含 | 排除 (notScopes) | 例外 |
---|---|---|---|
资源接受评估 | ✔ | - | - |
资源管理器对象 | - | - | ✔ |
需要修改策略分配对象 | ✔ | ✔ | - |
那么,如何选择是使用排除还是豁免呢? 通常,建议将排除项永久绕过广泛范围的评估,例如不需要相同级别治理的测试环境。 对于存在时间限制或更具体的方案(其中仍应对资源或资源层次结构进行跟踪,否则将对其进行评估,但有特定原因不应评估其合规性),建议使用排除。
后续步骤
- 了解策略定义结构。
- 了解如何以编程方式创建策略。
- 了解如何获取符合性数据。
- 了解如何修正不符合的资源。
- 详细了解如何使用 Azure 管理组来组织资源。