Azure-Richtliniendefinitionen auditIfNotExists-Effekt

Der Effekt auditIfNotExists ermöglicht die Überwachung von Ressourcen, die zwar mit der Ressource, die die Bedingung if erfüllt, zusammenhängen, für die aber keine Eigenschaften in den details der Bedingung then angegeben sind.

Auswertung von „AuditIfNotExists“

auditIfNotExists wird ausgeführt, nachdem ein Ressourcenanbieter eine Erstellungs- oder Aktualisierungsressourcenanforderung verarbeitet und einen Erfolgsstatuscode zurückgegeben hat. Die Überprüfung findet statt, wenn keine entsprechenden Ressourcen vorhanden sind oder wenn die über ExistenceCondition definierten Ressourcen nicht als TRUE ausgewertet werden. Bei neuen und aktualisierten Ressourcen fügt Azure Policy dem Aktivitätsprotokoll einen Microsoft.Authorization/policies/audit/action-Vorgang hinzu und markiert die Ressource als nicht konform. Bei Auslösung ist die Ressource, die die if-Bedingung erfüllt hat, die Ressource, die als nicht konform markiert wird.

Eigenschaften von „AuditIfNotExists“

Die details-Eigenschaft der Auswirkung „AuditIfNotExists“ umfasst die folgenden Untereigenschaften zur Definition der entsprechenden Ressourcen für den Abgleich.

  • type (erforderlich)
    • Gibt den Typ der entsprechenden abzugleichenden Ressource an.
    • Wenn es sich bei type um einen Ressourcentyp unterhalb der Bedingungsressource if handelt, fragt die Richtlinie Ressourcen von diesem typeinnerhalb des Bereichs der ausgewerteten Ressource ab. Andernfalls werden Richtlinienabfragen innerhalb derselben Ressourcengruppe oder desselben Abonnements wie die ausgewertete Ressource je nach existenceScope durchgeführt.
  • name (optional)
    • Gibt den exakten Namen der Ressource für den Abgleich an und führt dazu, dass die Richtlinie nicht alle Ressourcen des angegebenen Typs, sondern eine bestimmte Ressource abruft.
    • Wenn die Bedingungswerte für if.field.type und then.details.type übereinstimmen, wird name jetzt erforderlich und muss[field('name')] oder [field('fullName')] für eine untergeordnete Ressource sein. Allerdings sollte stattdessen ein audit-Effekt in Erwägung gezogen werden.

Hinweis

Segmente type und name können kombiniert werden, um geschachtelte Ressourcen generisch abzurufen.

Um eine bestimmte Ressource abzurufen, können Sie "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" und "name": "parentResourceName/nestedResourceName" verwenden.

Zum Abrufen einer Sammlung geschachtelter Ressourcen kann anstelle des letzten Namenssegments ein Platzhalterzeichen ? angegeben werden. Beispiel: "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" und "name": "parentResourceName/?". Dieses kann mit Feldfunktionen kombiniert werden, um auf Ressourcen zuzugreifen, die mit der ausgewerteten Ressource in Zusammenhang stehen, z. B. "name": "[concat(field('name'), '/?')]"".

  • resourceGroupName (optional)
    • Hierdurch ist es möglich, für den Abgleich eine Ressource aus einer anderen Ressourcengruppe festzulegen.
    • Diese Einstellung ist nicht anwendbar, wenn type eine Ressource unterhalb der if-Bedingungsressource ist.
    • Standardmäßig wird die Ressourcengruppe der if-Bedingungsressource verwendet.
  • existenceScope (optional)
    • Zulässige Werte sind Subscription und ResourceGroup.
    • Legt den Bereich fest, aus dem die entsprechende Ressource für den Abgleich abgerufen werden soll.
    • Diese Einstellung ist nicht anwendbar, wenn type eine Ressource unterhalb der if-Bedingungsressource ist.
    • Bei ResourceGroup würde die Ressourcengruppe in resourceGroupName, falls angegeben, beschränkt. Wenn resourceGroupName nicht angegeben ist, wird der Bereich auf die Ressourcengruppe der if-Bedingungsressource begrenzt. Dies ist das Standardverhalten.
    • Für Subscription wird das gesamte Abonnement nach der entsprechenden Ressource abgefragt. Der Zuweisungsbereich sollte für die ordnungsgemäße Auswertung auf das Abonnement oder höher festgelegt werden.
    • Die Standardeinstellung ist ResourceGroup.
  • evaluationDelay (optional)
    • Hiermit wird angegeben, wann die Existenz der zugehörigen Ressourcen ausgewertet werden soll. Die Verzögerung wird nur bei Auswertungen verwendet, die das Ergebnis einer Erstell- oder Aktualisierungsanforderung für die Ressource sind.
    • Zu den zulässigen Werten zählen AfterProvisioning, AfterProvisioningSuccess und AfterProvisioningFailure sowie eine Dauer gemäß ISO 8601 zwischen 0 und 360 Minuten.
    • Die AfterProvisioning-Werte untersuchen die Bereitstellungsergebnisse der Ressource, die in der if-Bedingung der Richtlinienregel ausgewertet wurde. AfterProvisioning wird unabhängig vom Ergebnis nach der Bereitstellung ausgeführt. Die Bereitstellung, die mehr als sechs Stunden dauert, wird beim Ermitteln von Verzögerungen bei der Nachbereitstellungsauswertung als Fehler behandelt.
    • Der Standardwert ist PT10M (zehn Minuten).
    • Eine lange Auswertungsverzögerung kann dazu führen, dass der aufgezeichnete Konformitätszustand der Ressource bis zur nächsten Auswertungsauslösung nicht aktualisiert wird.
  • existenceCondition (optional)
    • Sofern nicht angegeben, erfüllt jede Ressource mit entsprechendem type die Bedingung der Auswirkung und löst keine Überwachung aus.
    • Verwendet dieselbe Sprachsyntax wie die Richtlinienregel für die if-Bedingung, wird jedoch für jede entsprechende Ressource einzeln ausgeführt.
    • Wenn eine übereinstimmende Ressource als TRUE ausgewertet wird, ist die Auswirkung erfüllt und löst keine Überwachung aus.
    • [field()] kann verwendet werden, um auf Äquivalenz mit Werten in der if-Bedingung zu überprüfen.
    • Beispielsweise könnte so überprüft werden, ob die übergeordnete Ressource (in der if-Bedingung) sich am selben Ressourcenstandort befindet wie die übereinstimmende Ressource.

Beispiel für „AuditIfNotExists“

Beispiel: Wertet Virtual Machines aus, um zu bestimmen, ob die Antischadsoftware-Erweiterung vorhanden ist, und überprüft, wenn sie fehlt.

{
  "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ächste Schritte