Azure Policy 中的适用性是什么?
将策略定义分配到某个范围后,Azure Policy 会确定该范围内的哪些资源应进行合规性评估。 仅当认为某个资源适用于给定的策略分配时,才会评估其合规性。
适用性取决于多种因素:
- 策略规则的
if
块中的条件。 - 策略定义的模式。
- 分配中指定的排除范围。
- 分配中指定的“资源选择器”。
- 资源或资源层次结构的例外。
评估策略规则的 if
块中的条件适用性的方式根据效果而略有不同。
注意
适用性与合规性不同,用于确定两者的逻辑也不同。 如果某个资源适用,则意味着它与策略相关。 如果某个资源合规,则意味着它符合策略。 有时,只有策略规则中的某些条件会影响适用性,而策略规则的所有条件都会影响合规性状态。
资源管理器模式
ifNotExists 策略效果
AuditIfNotExists
和 DeployIfNotExists
策略的适用性取决于策略规则的整个 if
条件。 当 if
计算为 false 时,该策略不适用。
其他所有策略类型
Azure Policy 仅计算策略规则 if
表达式中的 type
、name
和 kind
条件,并将其他条件视为 true(否定时为 false)。 如果最终计算结果为 true,则该策略适用, 否则不适用。
下面是前面所述适用性逻辑的特殊情况:
方案 | 结果 |
---|---|
if 条件中的任何无效别名 |
策略不适用 |
当 if 条件仅由 kind 条件组成时 |
该策略适用于所有资源 |
当 if 条件仅由 name 条件组成时 |
该策略适用于所有资源 |
当 if 条件仅由 type 和 kind 条件组成时 |
在确定适用性时只考虑 type 条件 |
当 if 条件仅由 type 和 name 条件组成时 |
在确定适用性时只考虑 type 条件 |
当 if 条件由 type 、kind 及其他条件组成时 |
在确定适用性时考虑 type 和 kind 条件 |
当 if 条件由 type 、name 及其他条件组成时 |
在确定适用性时考虑 type 和 name 条件 |
当任何条件(包括部署参数)包含 location 条件时 |
不适用于订阅 |
资源提供程序模式
Microsoft.Kubernetes.Data
Microsoft.Kubernetes.Data
策略的适用性取决于策略规则的整个 if
条件。 当 if
计算为 false 时,该策略不适用。
Microsoft.KeyVault.Data、Microsoft.DataFactory.Data
如果策略规则的 type
条件评估为 true,则带有这些资源提供程序模式的策略适用。 type
表示组件类型。
密钥保管库组件类型:
Microsoft.KeyVault.Data/vaults/certificates
Microsoft.KeyVault.Data/vaults/keys
Microsoft.KeyVault.Data/vaults/secrets
Azure 数据工厂组件类型:
Microsoft.DataFactory.Data/factories/outboundTraffic
不适用的资源
在某些情况下,根据条件或范围,资源适用于分配,但由于业务原因,它们不应适用。 此时,最好应用排除项或豁免项。 若要详细了解何时使用每一种,请查看范围比较
注意
根据设计,Azure Policy 不会通过策略评估来评估 Microsoft.Resources
资源提供程序下的资源(订阅和资源组除外)。
后续步骤
- 了解如何将资源标记为不适用。
- 详细了解适用性限制
- 了解如何获取 Azure 资源的合规性数据。