Azure Policy 中的适用性是什么?

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

适用性取决于多种因素:

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

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

注意

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

资源管理器模式

ifNotExists 策略效果

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

其他所有策略类型

Azure Policy 仅计算策略规则 if 表达式中的 typenamekind 条件,并将其他条件视为 true(否定时为 false)。 如果最终计算结果为 true,则该策略适用, 否则不适用。

下面是前面所述适用性逻辑的特殊情况:

方案 结果
if 条件中的任何无效别名 策略不适用
if 条件仅由 kind 条件组成时 该策略适用于所有资源
if 条件仅由 name 条件组成时 该策略适用于所有资源
if 条件仅由 typekind 条件组成时 在确定适用性时只考虑 type 条件
if 条件仅由 typename 条件组成时 在确定适用性时只考虑 type 条件
if 条件由 typekind 及其他条件组成时 在确定适用性时考虑 typekind 条件
if 条件由 typename 及其他条件组成时 在确定适用性时考虑 typename 条件
当任何条件(包括部署参数)包含 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 资源提供程序下的资源(订阅和资源组除外)。

后续步骤