你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Policy 定义 auditIfNotExists 效果

auditIfNotExists效果允许审核与与条件匹配if的资源相关的资源,但不具有条件中指定的detailsthen属性。

AuditIfNotExists 评估

auditIfNotExists 在资源提供程序处理创建或更新资源请求并返回成功状态代码之后运行。 如果没有相关资源,或者未评估为 true 的资源, ExistenceCondition 则会发生审核。 对于新的和更新的资源,Azure Policy 会将作 Microsoft.Authorization/policies/audit/action 添加到活动日志,并将资源标记为不符合。 触发时,满足 if 条件的资源是标记为不符合的资源。

AuditIfNotExists 属性

details AuditIfNotExists 效果的属性具有定义要匹配的相关资源的所有子属性。

  • type(必需)
    • 指定要匹配的相关资源的类型。
    • 如果 typeif 条件资源下的一种资源类型,则策略会在评估的资源范围内查询此类型的 type 资源。 否则,策略将根据 existenceScope 在与已评估资源相同的资源组或订阅中进行查询。
  • name(可选)
    • 指定要匹配的资源的确切名称,并导致策略提取一个特定资源,而不是指定类型的所有资源。
    • if.field.typethen.details.type 的条件值匹配时,name 变为必需且必须为 或子资源的 [field('name')][field('fullName')]。 但是,应改为考虑 审核 效果。

注释

typename 段可以组合在一起,以一般方式检索嵌套资源。

若要检索特定资源,可以使用 "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType""name": "parentResourceName/nestedResourceName"

若要检索嵌套资源的集合,可以提供通配符 ? 代替最后一段。 例如,"type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType""name": "parentResourceName/?"。 这可以与字段函数结合使用,以访问与评估的资源相关的资源,例如 "name": "[concat(field('name'), '/?')]"

  • resourceGroupName(可选)
    • 允许相关资源的匹配来自不同的资源组。
    • 如果 type 资源位于条件资源下 if ,则不适用。
    • 默认值为 if 条件资源的资源组。
  • existenceScope(可选)
    • 允许的值是 SubscriptionResourceGroup
    • 设置范围以确定从何处获取要匹配的相关资源。
    • 如果 type 资源位于条件资源下 if ,则不适用。
    • 对于 ResourceGroup,如果指定,则限制为 resourceGroupName 中的资源组。 resourceGroupName如果未指定,将限制为if条件资源的资源组,即默认行为。
    • 对于 订阅,查询整个订阅以获取相关资源。 应在订阅级别或更高级别设置分配范围,以便进行适当的评估。
    • 默认值为 ResourceGroup
  • evaluationDelay(可选)
    • 应指定何时评估相关资源的存在性。 延迟仅用于作为创建或更新资源请求的结果的评估。
    • 允许的值为 AfterProvisioningAfterProvisioningSuccessAfterProvisioningFailure0 到 360 分钟之间的 ISO 8601 持续时间。
    • AfterProvisioning 值检查策略规则if条件中评估的资源的预配结果。 AfterProvisioning 预配完成后即运行,无论结果如何。 确定 AfterProvisioning 评估延迟时,用时超过 6 小时的预配会被视作失败。
    • 默认值为 PT10M (10 分钟)。
    • 指定长时间的评估延迟可能会导致资源记录的符合性状态在下次 评估触发器之前不会更新。
  • existenceCondition(可选)
    • 如果未指定,则任何相关资源 type 都满足效果,并且不会触发审核。
    • 使用与 if 条件的策略规则相同的语言,但会分别针对每个相关资源进行评估。
    • 如果任何匹配的相关资源计算结果为 true,则满足效果,并且不会触发审核。
    • 可以使用 [field()] 检查条件中的 if 值的等效性。
    • 例如,可用于验证父资源(条件 if 中)是否与匹配相关资源位于同一资源位置。

AuditIfNotExists 示例

示例:评估虚拟机以确定是否存在反恶意软件扩展,然后在缺少时进行审核。

{
  "if": {
    "field": "type",
    "equals": "Microsoft.Compute/virtualMachines"
  },
  "then": {
    "effect": "auditIfNotExists",
    "details": {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "existenceCondition": {
        "allOf": [
          {
            "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
            "equals": "Microsoft.Azure.Security"
          },
          {
            "field": "Microsoft.Compute/virtualMachines/extensions/type",
            "equals": "IaaSAntimalware"
          }
        ]
      }
    }
  }
}

后续步骤