Udostępnij przez


Efekt denyAction w definicjach usługi Azure Policy

Efekt denyAction jest używany do blokowania żądań w zależności od zamierzonego działania dla zasobów na dużą skalę. Jedynym obsługiwanym obecnie działaniem jest DELETE. Ten efekt i nazwa akcji pomagają zapobiec przypadkowemu usunięciu krytycznych zasobów.

Ocena denyAction

Kiedy zostanie wysłane wywołanie z odpowiednią nazwą akcji i zakresem docelowym, denyAction uniemożliwia sukces tego żądania. Żądanie jest zwracane jako 403 (Forbidden). W portalu Forbidden można wyświetlić stan wdrożenia, który został uniemożliwiony przez przypisanie zasad.

Microsoft.Authorization/policyAssignments, , Microsoft.Authorization/denyAssignments, Microsoft.Blueprint/blueprintAssignmentsMicrosoft.Resources/deploymentStacks, , Microsoft.Resources/subscriptionsi Microsoft.Authorization/locks są zwolnione z denyAction wymuszania, aby zapobiec scenariuszom blokady.

Usuwanie subskrypcji

Polityka nie blokuje usuwania zasobów, które zachodzi podczas usuwania subskrypcji.

Usuwanie grupy zasobów

Zasady oceniają zasoby obsługujące lokalizację i tagi zgodnie z zasadami denyAction podczas usuwania grupy zasobów. Tylko zasady, które mają ustawioną cascadeBehaviorsdeny wartość w regule zasad, blokują usunięcie grupy zasobów. Zasady nie blokują usuwania zasobów, które nie obsługują lokalizacji i tagów, ani nie blokują żadnych zasad związanych z mode:all.

Usuwanie kaskadowe

Usunięcie kaskadowe występuje, gdy usunięcie zasobu nadrzędnego niejawnie powoduje usunięcie wszystkich jego zasobów podrzędnych i rozszerzeń. Zasady nie blokują usuwania zasobów podrzędnych i rozszerzeń, gdy akcja usuwania jest przeznaczona dla zasobów nadrzędnych. Na przykład Microsoft.Insights/diagnosticSettings to zasób rozszerzenia Microsoft.Storage/storageaccounts. denyAction Jeśli zasada jest skierowana na Microsoft.Insights/diagnosticSettings, próba usunięcia ustawienia diagnostycznego (podrzędnego) zakończy się niepowodzeniem, ale usunięcie konta magazynowego (nadrzędnego) niejawnie spowoduje usunięcie ustawienia diagnostycznego (rozszerzenia).

W tej tabeli opisano, czy zasób jest chroniony przed usunięciem, biorąc pod uwagę zasób mający zastosowanie do przypisanych denyAction zasad i docelowy zakres wywołania DELETE . W kontekście tej tabeli zasób indeksowany jest taki, który obsługuje tagi i lokalizacje, a nieindeksowany zasób jest taki, który nie obsługuje tagów ani lokalizacji. Aby uzyskać więcej informacji na temat indeksowanych i nieindeksowanych zasobów, przejdź do trybu definicji. Zasoby podrzędne to zasoby, które istnieją tylko w kontekście innego zasobu. Na przykład zasób rozszerzenia maszyn wirtualnych jest elementem podrzędnym maszyny wirtualnej, która jest zasobem nadrzędnym.

Usuwanie jednostki Jednostka mająca zastosowanie do warunków zasad Podjęto akcję
Zasób Zasób Chronione
Subskrypcja Zasób Usunięte
Grupa zasobów Zasób indeksowany Zależy od cascadeBehaviors
Grupa zasobów Zasób nieindeksowany Usunięte
Zasób dziecko Zasób nadrzędny Rodzic jest chroniony; dziecko jest usuwane
Zasób nadrzędny Zasób dziecko Usunięte

Właściwości DenyAction

Właściwość details efektu denyAction ma wszystkie podwłaściwości, które definiują akcje i zachowania.

  • actionNames (wymagane)
    • Tablica określająca akcje, które należy uniemożliwić przed wykonaniem.
    • Obsługiwane nazwy akcji to: delete.
  • cascadeBehaviors (opcjonalnie)
    • Obiekt, który definiuje, które zachowanie jest obserwowane, gdy zasób jest niejawnie usuwany po usunięciu grupy zasobów.
    • Obsługiwane tylko w definicjach zasad z trybem ustawionym na indexed.
    • Dozwolone wartości to allow lub deny.
    • Wartość domyślna to deny.

Przykład denyAction

Przykład: Odmów wszelkich wywołań usuwania przeznaczonych dla kont bazy danych, które mają środowisko tagów równe prod. Ponieważ zachowanie kaskadowe jest ustawione na odmowę, należy zablokować każde DELETE wywołanie, które jest przeznaczone dla grupy zasobów z odpowiednim kontem bazy danych.

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.DocumentDb/accounts"
      },
      {
        "field": "tags.environment",
        "equals": "prod"
      }
    ]
  },
  "then": {
    "effect": "denyAction",
    "details": {
      "actionNames": [
        "delete"
      ],
      "cascadeBehaviors": {
        "resourceGroup": "deny"
      }
    }
  }
}

Następne kroki