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