Azure Policy 中的适用性是什么?

将策略定义分配到某个范围后,Azure Policy 会确定该范围内的哪些资源应进行合规性评估。 仅当认为某个资源适用于给定的策略分配时,才会评估其合规性。

适用性取决于多种因素:

  • 策略规则的 if 块中的条件。
  • 策略定义的模式。
  • 分配中指定的排除范围。
  • 分配中指定的“资源选择器”。
  • 资源或资源层次结构的例外。

评估策略规则的 if 块中的条件适用性的方式根据效果而略有不同。

注意

适用性与合规性不同,用于确定两者的逻辑也不同。 如果某个资源适用,则意味着它与策略相关。 如果某个资源合规,则意味着它符合策略。 有时,只有策略规则中的某些条件会影响适用性,而策略规则的所有条件都会影响合规性状态。

资源管理器模式

ifNotExists 策略效果

AuditIfNotExists 和 DeployIfNotExists 策略的适用性取决于策略规则的整个 if 条件。 当 if 计算为 false 时,该策略不适用。

其他所有策略类型

Azure Policy 仅计算策略规则 type 表达式中的 name、kind 和 if 条件,并将其他条件视为 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 资源提供程序下的资源(订阅和资源组除外)。

后续步骤