有许多设置可确定哪些资源可以接受评估,以及 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 管理组来组织资源。