Azure Policy 修正任务结构
Azure Policy 修正任务功能用于确保资源满足从定义和分配制定的合规规定。 使用修正任务,可以将不符合 modify 或 deployIfNotExists 定义分配的资源修改为符合状态。 修正任务可使用分配中指定的标识将 deployIfNotExists
模板或 modify
操作部署到所选的不符合资源。 有关详细信息,请参阅策略分配结构以了解如何定义标识,并参阅修正不符合资源教程以配置标识。
修正任务可修正现有的不符合资源。 适用于 deployIfNotExists
或 modify
定义分配的新建或更新后的资源将会自动修正。
注意
Azure Policy 服务会在最后一次修改修正任务资源后 60 天内删除它们。
使用 JavaScript 对象表示法 (JSON) 创建策略修正任务。 策略修正任务包含以下各项的元素:
例如,以下 JSON 显示了名为 requiredTags
的策略定义的策略修正任务,该策略定义是名为 resourceShouldBeCompliantInit
且具有所有默认设置的计划分配的一部分。
{
"id": "/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/remediations/remediateNotCompliant",
"apiVersion": "2021-10-01",
"name": "remediateNotCompliant",
"type": "Microsoft.PolicyInsights/remediations",
"properties": {
"policyAssignmentId": "/subscriptions/{subID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
"policyDefinitionReferenceId": "requiredTags",
"resourceCount": 42,
"parallelDeployments": 6,
"failureThreshold": {
"percentage": 0.1
}
}
}
有关如何触发修正任务的步骤,请参阅如何修正不合规的资源指南。 修正任务开始后,无法更改这些设置。
策略分配 ID
此字段必须是策略分配或计划分配的完整路径名称。 policyAssignmentId
是字符串,而不是数组。 此属性定义父级资源层次结构或单个资源要修正的分配。
策略定义 ID
如果将 policyAssignmentId
用于计划分配,则必须使用 policyDefinitionReferenceId
属性在要修正主题资源的计划中指定策略定义。 由于修正只能在一个定义的范围内进行修正,因此,此属性是一个字符串,而不是数组。 该值必须与 policyDefinitions.policyDefinitionReferenceId
字段中的计划定义中的值匹配,而不是与策略定义 Id
的全局标识符匹配。
资源计数和并行部署
使用 resourceCount
来确定给定修正任务中要修正的不符合资源数量。 默认值为 500,最大数字为 50,000。 parallelDeployments
会确定要同时修正的资源的数量。 允许的范围在 1 到 30 之间,默认值为 10。
并行部署是单个修正任务中的部署数量(不超过 30 个)。 对于计划内的单个策略定义或策略引用,最多可并行运行 100 个修正任务。
失败阈值
用于指定如果失败百分比超过给定的阈值,修正任务是否应该失败的可选属性。 failureThreshold
表示为介于 0 到 100 的百分数。 默认情况下,失败阈值为 100%,这意味着即使资源无法修正,修正任务也会继续修正其他资源。
修正筛选器
一个可选属性,可以优化哪些资源适用于修正任务。 允许的筛选器是资源位置。 除非指定,否则可以修正来自任何区域的资源。
资源发现模式
此属性决定如何发现符合修正条件的资源。 资源必须不合规才符合修正条件。 默认情况下,此属性设置为 ExistingNonCompliant
。 也可以将其设置为 ReEvaluateCompliance
,这会触发对该分配的新的符合性扫描,并修正所发现的任何不符合资源。
预配状态和部署摘要
创建修正任务后,将会填充 ProvisioningState
和 DeploymentSummary
属性。 ProvisioningState
指示了修正任务的状态。 允许值为 Running
、Canceled
、Cancelling
、Failed
、Complete
或 Succeeded
。 DeploymentSummary
是一个数组属性,用于指示部署数量以及成功和失败的部署数。
成功完成的修正任务示例:
{
"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
},
}