Azure Policy-definitioner auditIfNotExists-effekt

Effekten auditIfNotExists möjliggör granskning av resurser som är relaterade till resursen som matchar villkoret if , men som inte har de egenskaper som anges i details villkoret then .

AuditIfNotExists-utvärdering

auditIfNotExists körs efter att en resursprovider bearbetat en begäran om att skapa eller uppdatera resursen och returnerat statuskoden lyckades. Granskningen sker om det inte finns några relaterade resurser eller om de resurser som definieras av ExistenceCondition inte utvärderas till true. För nya och uppdaterade resurser lägger Azure Policy till en Microsoft.Authorization/policies/audit/action åtgärd i aktivitetsloggen och markerar resursen som icke-kompatibel. När den utlöses är resursen som uppfyllde villkoret if den resurs som har markerats som icke-kompatibel.

AuditIfNotExists-egenskaper

Egenskapen details för AuditIfNotExists-effekterna har alla underegenskaper som definierar de relaterade resurser som ska matchas.

  • type (krävs)
    • Anger vilken typ av relaterad resurs som ska matchas.
    • Om type är en resurstyp under villkorsresursen if frågar principen efter resurser för detta type inom omfånget för den utvärderade resursen. Annars kan principfrågor inom samma resursgrupp eller prenumeration som den utvärderade resursen existenceScope, beroende på .
  • name (valfritt)
    • Anger det exakta namnet på resursen som ska matchas och gör att principen hämtar en specifik resurs i stället för alla resurser av den angivna typen.
    • När villkorsvärdena för if.field.type och then.details.type matchar blir det name obligatoriskt och måste vara [field('name')], eller [field('fullName')] för en underordnad resurs. En granskningseffekt bör dock övervägas i stället.

Kommentar

type och name segment kan kombineras för att allmänt hämta kapslade resurser.

Om du vill hämta en specifik resurs kan du använda "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" och "name": "parentResourceName/nestedResourceName".

Om du vill hämta en samling kapslade resurser kan ett jokertecken ? anges i stället för efternamnssegmentet. Till exempel "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" och "name": "parentResourceName/?". Detta kan kombineras med fältfunktioner för att få åtkomst till resurser som är relaterade till den utvärderade resursen, till exempel "name": "[concat(field('name'), '/?')]".

  • resourceGroupName (valfritt)
    • Tillåter matchning av den relaterade resursen att komma från en annan resursgrupp.
    • Gäller inte om type är en resurs som skulle finnas under villkorsresursen if .
    • Standard är villkorsresursens if resursgrupp.
  • existenceScope (valfritt)
    • Tillåtna värden är Prenumeration och ResourceGroup.
    • Anger omfånget för var den relaterade resursen ska matchas.
    • Gäller inte om type är en resurs som skulle finnas under villkorsresursen if .
    • För ResourceGroup begränsar du till resursgruppen i resourceGroupName om det anges. Om resourceGroupName inte anges begränsar du till villkorsresursens if resursgrupp, vilket är standardbeteendet.
    • För Prenumeration frågar hela prenumerationen efter den relaterade resursen. Tilldelningsomfånget bör anges i prenumerationen eller högre för korrekt utvärdering.
    • Standardvärdet är ResourceGroup.
  • evaluationDelay (valfritt)
    • Anger när förekomsten av de relaterade resurserna ska utvärderas. Fördröjningen används endast för utvärderingar som är ett resultat av en begäran om att skapa eller uppdatera resurser.
    • Tillåtna värden är AfterProvisioning, AfterProvisioningSuccess, AfterProvisioningFailureeller en ISO 8601-varaktighet mellan 0 och 360 minuter.
    • Värdena för AfterProvisioning inspekterar etableringsresultatet för resursen som utvärderades i principregelns if villkor. AfterProvisioning körs när etableringen är klar, oavsett utfall. Etablering som tar mer än sex timmar behandlas som ett fel när utvärderingsfördröjningar för AfterProvisioning fastställs.
    • Standardvärdet är PT10M (10 minuter).
    • Om du anger en lång utvärderingsfördröjning kan det leda till att resursens registrerade efterlevnadstillstånd inte uppdateras förrän nästa utvärderingsutlösare.
  • existenceCondition (valfritt)
    • Om den inte anges uppfyller alla relaterade resurser type effekten och utlöser inte granskningen.
    • Använder samma språk som principregeln för villkoret if , men utvärderas mot varje relaterad resurs individuellt.
    • Om någon matchande relaterad resurs utvärderas till true uppfylls effekten och utlöser inte granskningen.
    • Kan använda [field()] för att kontrollera ekvivalensen med värden i villkoret if .
    • Kan till exempel användas för att verifiera att den överordnade resursen (i villkoret if ) finns på samma resursplats som den matchande relaterade resursen.

Exempel på AuditIfNotExists

Exempel: Utvärderar virtuella datorer för att avgöra om tillägget mot skadlig kod finns och granskar sedan när det saknas.

{
  "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"
          }
        ]
      }
    }
  }
}

Nästa steg