Share via


Azure 原則 定義 auditIfNotExists 效果

效果auditIfNotExists可稽核與符合if條件之資源相關的資源,但沒有條件中指定的detailsthen屬性。

AuditIfNotExists 評估

auditIfNotExists 會在資源提供者處理建立或更新資源要求並傳回成功狀態代碼之後執行。 如果沒有相關的資源,或所 ExistenceCondition 定義的資源未評估為 true,就會發生稽核。 針對新的和更新的資源,Azure 原則 將作業新增Microsoft.Authorization/policies/audit/action至活動記錄,並將資源標示為不符合規範。 觸發時,符合 if 條件的資源是標示為不符合規範的資源。

AuditIfNotExists 屬性

details AuditIfNotExists 效果的 屬性具有定義要比對之相關資源的所有子屬性。

  • type (必要)
    • 指定要比對之相關資源的型別。
    • 如果 type 是條件資源下 if 的資源類型,則原則會在評估的資源範圍內查詢此 type 資源。 否則,根據 ,在與評估的資源 existenceScope相同的資源群組或訂用帳戶內的原則查詢。
  • name (選擇性)
    • 指定要比對的資源確切名稱,並讓原則擷取一個特定資源,而不是指定類型的所有資源。
    • 當和 then.details.type 符合的條件值if.field.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 (選擇性)
    • 指定何時應該評估相關資源。 延遲僅適用於建立或更新資源要求結果的評估。
    • 允許的值為 AfterProvisioningAfterProvisioningSuccessAfterProvisioningFailure或 ISO 8601 持續時間,介於 0 到 360 分鐘之間。
    • AfterProvisioning 值會檢查在原則規則if條件中評估的資源布建結果。 AfterProvisioning 在布建完成之後執行,不論結果為何。 當判斷 AfterProvisioning 評估延遲時,布建需要超過六個小時,就會被視為失敗。
    • 預設值為 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"
          }
        ]
      }
    }
  }
}

下一步