Efekt auditIfNotExists definicji usługi Azure Policy

Efekt auditIfNotExists umożliwia inspekcję zasobów związanych z zasobem zgodnym if z warunkiem, ale nie ma właściwości określonych w detailsthen warunku.

Ocena auditIfNotExists

auditIfNotExists uruchamiane po przetworzeniu żądania utworzenia lub zaktualizowania zasobu przez dostawcę zasobów i zwrócenie kodu stanu powodzenia. Inspekcja występuje, jeśli nie ma powiązanych zasobów lub jeśli zasoby zdefiniowane przez ExistenceCondition program nie są obliczane na wartość true. W przypadku nowych i zaktualizowanych zasobów usługa Azure Policy dodaje operację Microsoft.Authorization/policies/audit/action do dziennika aktywności i oznacza zasób jako niezgodny. Po wyzwoleniu zasób spełniający if warunek jest zasobem oznaczonym jako niezgodny.

Właściwości AuditIfNotExists

Właściwość details efektów AuditIfNotExists ma wszystkie podwłaściwości definiujące powiązane zasoby, które mają być zgodne.

  • type (wymagane)
    • Określa typ powiązanego zasobu, który ma być zgodny.
    • Jeśli type jest typem if zasobu pod warunkiem, zasady wysyłają zapytania o zasoby tego type zasobu w zakresie ocenianego zasobu. W przeciwnym razie zapytania dotyczące zasad w tej samej grupie zasobów lub subskrypcji co oceniony zasób w zależności od existenceScope.
  • name (opcjonalnie)
    • Określa dokładną nazwę zasobu do dopasowania i powoduje, że zasady pobierają jeden konkretny zasób zamiast wszystkich zasobów określonego typu.
    • Gdy wartości warunku dla if.field.type i then.details.type są zgodne, staje name się wymagane i musi mieć [field('name')]wartość , lub [field('fullName')] dla zasobu podrzędnego. Należy jednak rozważyć efekt inspekcji .

Uwaga

type segmenty i name można łączyć w celu ogólnego pobierania zagnieżdżonych zasobów.

Aby pobrać określony zasób, możesz użyć elementów "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" i "name": "parentResourceName/nestedResourceName".

Aby pobrać kolekcję zasobów zagnieżdżonych, można podać symbol ? wieloznaczny zamiast segmentu nazwiska. Przykład: "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" i "name": "parentResourceName/?". Można to połączyć z funkcjami pól w celu uzyskania dostępu do zasobów związanych z ocenianym zasobem, takimi jak "name": "[concat(field('name'), '/?')]"."

  • resourceGroupName (opcjonalnie)
    • Umożliwia dopasowanie powiązanego zasobu z innej grupy zasobów.
    • Nie ma zastosowania, jeśli type jest zasobem, który znajduje się pod zasobem if warunku.
    • Wartość domyślna if to grupa zasobów zasobu warunku.
  • existenceScope (opcjonalnie)
    • Dozwolone wartości to Subscription i ResourceGroup.
    • Ustawia zakres, z którego ma być pobierany powiązany zasób, z którego ma być zgodny.
    • Nie ma zastosowania, jeśli type jest zasobem, który znajduje się pod zasobem if warunku.
    • W przypadku grupy zasobów należy ograniczyć grupę zasobów, jeśli resourceGroupName zostanie określona. Jeśli resourceGroupName nie zostanie określony, ograniczenie do if grupy zasobów zasobu warunku, która jest zachowaniem domyślnym.
    • W polu Subskrypcja wysyła zapytanie do całej subskrypcji powiązanego zasobu. Zakres przypisania należy ustawić w subskrypcji lub wyższej w celu odpowiedniej oceny.
    • Wartość domyślna to ResourceGroup.
  • evaluationDelay (opcjonalnie)
    • Określa, kiedy należy ocenić istnienie powiązanych zasobów. Opóźnienie jest używane tylko w przypadku ocen, które są wynikiem żądania utworzenia lub zaktualizowania zasobu.
    • Dozwolone wartości to AfterProvisioning, AfterProvisioningSuccess, AfterProvisioningFailurelub ISO 8601 czas trwania od 0 do 360 minut.
    • Wartości AfterProvisioning sprawdzają wynik aprowizacji zasobu, który został oceniony w warunku reguły if zasad. AfterProvisioning przebiegi po zakończeniu aprowizacji, niezależnie od wyniku. Aprowizowanie, które trwa dłużej niż sześć godzin, jest traktowane jako błąd podczas określania opóźnień oceny AfterProvisioning .
    • Wartość domyślna to PT10M (10 minut).
    • Określenie długiego opóźnienia oceny może spowodować, że zarejestrowany stan zgodności zasobu nie zostanie zaktualizowany do momentu następnego wyzwalacza oceny.
  • existenceCondition (opcjonalnie)
    • Jeśli nie zostanie określony, jakikolwiek powiązany zasób type spełnia ten efekt i nie wyzwoli inspekcji.
    • Używa tego samego języka co reguła zasad dla if warunku, ale jest obliczana dla każdego powiązanego zasobu indywidualnie.
    • Jeśli jakikolwiek pasujący zasób ma wartość true, efekt jest spełniony i nie wyzwala inspekcji.
    • Można użyć [field()] do sprawdzenia równoważności z wartościami w if warunku.
    • Na przykład może służyć do sprawdzania, czy zasób nadrzędny (w warunku) znajduje się w if tej samej lokalizacji zasobu co pasujący powiązany zasób.

Przykład auditIfNotExists

Przykład: ocenia maszyny wirtualne w celu ustalenia, czy rozszerzenie ochrony przed złośliwym kodem istnieje, a następnie przeprowadza inspekcję w przypadku braku.

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

Następne kroki