Efekt denyAction definicji usługi Azure Policy

Efekt denyAction jest używany do blokowania żądań na podstawie zamierzonej akcji dla zasobów na dużą skalę. Jedyną obsługiwaną obecnie akcją jest DELETE. Ten efekt i nazwa akcji pomagają zapobiec przypadkowemu usunięciu krytycznych zasobów.

Ocena denyAction

Gdy zostanie przesłane wywołanie żądania z odpowiednią nazwą akcji i zakresem docelowym, denyAction uniemożliwia powodzenie żą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.Resources/deploymentStacksMicrosoft.Blueprint/blueprintAssignments, , Microsoft.Resources/subscriptionsi Microsoft.Authorization/locks są zwolnione z denyAction wymuszania, aby zapobiec scenariuszom blokady.

Usuwanie subskrypcji

Zasady nie blokują usuwania zasobów występujących podczas usuwania subskrypcji.

Usuwanie grupy zasobów

Zasady oceniają zasoby, które obsługują lokalizację i tagi względem denyAction zasad 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 żadnych zasad za pomocą polecenia mode:all.

Usuwanie kaskadowe

Usunięcie kaskadowe występuje, gdy usunięcie zasobu nadrzędnego jest niejawnie usuwa wszystkie zasoby podrzędne i rozszerzenia. 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 Microsoft.Storage/storageaccountsrozszerzenia . denyAction Jeśli zasady są docelowe Microsoft.Insights/diagnosticSettings, wywołanie usuwania do ustawienia diagnostycznego (podrzędne) zakończy się niepowodzeniem, ale usunięcie konta magazynu (nadrzędnego) niejawnie spowoduje usunięcie ustawienia diagnostycznego (rozszerzenie).

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.

Usunięto jednostkę 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 cascadeBehaviors
Grupa zasobów Zasób nieindeksowany Usunięte
Zasób podrzędny Zasób nadrzędny Element nadrzędny jest chroniony; element podrzędny jest usuwany
Zasób nadrzędny Zasób podrzędny Usunięte

Właściwości DenyAction

Właściwość detailsdenyAction efektu ma wszystkie podwłaściwości, które definiują akcję i zachowania.

  • actionNames (wymagane)
    • Tablica określająca akcje, które mają uniemożliwić wykonywanie.
    • 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