Azure Policy 修正任务结构

Azure Policy 修正任务功能用于确保资源满足从定义和分配制定的合规规定。 使用修正任务,可以将不符合 modifydeployIfNotExists 定义分配的资源修改为符合状态。 修正任务可使用分配中指定的标识将 deployIfNotExists 模板或 modify 操作部署到所选的不符合资源。 有关详细信息,请参阅策略分配结构以了解如何定义标识,并参阅修正不符合资源教程以配置标识。

修正任务可修正现有的不符合资源。 适用于 deployIfNotExistsmodify 定义分配的新建或更新后的资源将会自动修正。

注意

Azure Policy 服务会在最后一次修改修正任务资源后 60 天内删除它们。

使用 JavaScript 对象表示法 (JSON) 创建策略修正任务。 策略修正任务包含以下各项的元素:

例如,以下 JSON 显示了名为 requiredTags 的策略定义的策略修正任务,该策略定义是名为 resourceShouldBeCompliantInit 且具有所有默认设置的计划分配的一部分。

{
  "id": "/subscriptions/{subId}/resourceGroups/ExemptRG/providers/Microsoft.PolicyInsights/remediations/remediateNotCompliant",
  "apiVersion": "2021-10-01",
  "name": "remediateNotCompliant",
  "type": "Microsoft.PolicyInsights/remediations",
  "properties": {
    "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
    "policyDefinitionReferenceId": "requiredTags",
    "resourceCount": 42,
    "parallelDeployments": 6,
    "failureThreshold": {
      "percentage": 0.1
    }
  }
}

有关如何触发修正任务的步骤,请参阅如何修正不合规的资源指南。 修正任务开始后,无法更改这些设置。

显示名称和说明

你将使用 displayNamedescription 来标识策略修正任务,并提供上下文来供其使用。 displayName 的最大长度为 128 个字符,description 的最大长度为 512 个字符。

策略分配 ID

此字段必须是策略分配或计划分配的完整路径名称。 policyAssignmentId 是字符串,而不是数组。 此属性定义父级资源层次结构或单个资源要修正的分配。

策略定义 ID

如果将 policyAssignmentId 用于计划分配,则必须使用 policyDefinitionReferenceId 属性在要修正主题资源的计划中指定策略定义。 由于修正只能在一个定义的范围内进行修正,因此,此属性是一个字符串,而不是数组。 该值必须与 policyDefinitions.policyDefinitionReferenceId 字段中的计划定义中的值匹配,而不是与策略定义 Id 的全局标识符匹配。

资源计数和并行部署

使用 resourceCount 来确定给定修正任务中要修正的不符合资源数量。 默认值为 500,最大数字为 50,000。 parallelDeployments 会确定要同时修正的资源的数量。 允许的范围在 1 到 30 之间,默认值为 10。

并行部署是单个修正任务中的部署数量(不超过 30 个)。 对于计划内的单个策略定义或策略引用,最多可并行运行 100 个修正任务。

失败阈值

用于指定如果失败百分比超过给定的阈值,修正任务是否应该失败的可选属性。 failureThreshold 表示为介于 0 到 100 的百分数。 默认情况下,失败阈值为 100%,这意味着即使资源无法修正,修正任务也会继续修正其他资源。

修正筛选器

一个可选属性,可以优化哪些资源适用于修正任务。 允许的筛选器是资源位置。 除非指定,否则可以修正来自任何区域的资源。

资源发现模式

此属性决定如何发现符合修正条件的资源。 资源必须不合规才符合修正条件。 默认情况下,此属性设置为 ExistingNonCompliant。 也可以将其设置为 ReEvaluateCompliance,这会触发对该分配的新的符合性扫描,并修正所发现的任何不符合资源。

预配状态和部署摘要

创建修正任务后,将会填充 ProvisioningStateDeploymentSummary 属性。 ProvisioningState 指示了修正任务的状态。 允许值为 RunningCanceledCancellingFailedCompleteSucceededDeploymentSummary 是一个数组属性,用于指示部署数量以及成功和失败的部署数。

成功完成的修正任务示例:

{
  "id": "/subscriptions/{subId}/resourceGroups/ExemptRG/providers/Microsoft.PolicyInsights/remediations/remediateNotCompliant",
  "Type": "Microsoft.PolicyInsights/remediations",
  "Name": "remediateNotCompliant",
  "PolicyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
  "policyDefinitionReferenceId": "requiredTags",
  "resourceCount": 42,
  "parallelDeployments": 6,
  "failureThreshold": {
    "percentage": 0.1
  },
  "ProvisioningState": "Succeeded",
  "DeploymentSummary": {
    "TotalDeployments": 42,
    "SuccessfulDeployments": 42,
    "FailedDeployments": 0
  },
}

后续步骤