Azure 原則補救工作結構

Azure 原則補救工作功能可用來讓資源符合從定義和指派建立的合規性。 不符合 modifydeployIfNotExists 定義指派規範的資源,可以使用補救工作來變得符合規範。 補救工作會使用指派中指定的身分識別,將 deployIfNotExists 範本或 modify 作業部署到所選定不符合規範的資源。 如需詳細資訊,請參閱 原則指派結構以了解身分識別的定義方式,以及參閱補救不符合規範的資源教學課程以設定身分識別。

補救工作會補救不符合規範的現有資源。 針對適用於 deployIfNotExistsmodify 定義指派的新建或更新資源,系統會自動進行補救。

注意

Azure 原則服務會刪除自上次修改後已過 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
    }
  }
}

如何補救不符合規範的資源指南會說明如何觸發補救工作的步驟。 補救工作開始後,就無法變更這些設定。

原則指派識別碼

此欄位必須是原則指派或計劃指派的完整路徑名稱。 policyAssignmentId 是字串,而不是陣列。 此屬性會定義父代資源階層或個別資源會補救的指派。

原則定義識別碼

如果 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
  },
}

下一步