Udostępnij przez


Struktura wykluczania usługi Azure Policy

Funkcja wykluczeń usługi Azure Policy służy do wykluczania hierarchii zasobów lub pojedynczego zasobu z oceny inicjatyw lub definicji. Zasoby, które są zwolnione, są uwzględniane w stosunku do ogólnej zgodności, ale nie można ich ocenić ani nie mogą mieć tymczasowego zwolnienia. Aby uzyskać więcej informacji, zobacz Omówienie stosowania w usłudze Azure Policy. Wykluczenia usługi Azure Policy działają również z następującymi trybami usługi Resource Manager: Microsoft.Kubernetes.Data, Microsoft.KeyVault.Datai Microsoft.Network.Data.

Aby utworzyć wykluczenie z zasad, należy użyć języka JavaScript Object Notation (JSON). Wykluczenie z zasad zawiera następujące elementy:

Wykluczenie z zasad jest tworzone jako obiekt podrzędny w hierarchii zasobów lub pojedynczy zasób, któremu udzielono wykluczenia. Nie można utworzyć wykluczeń na poziomie składnika trybu dostawcy zasobów. Jeśli zasób nadrzędny, do którego zastosowano wykluczenie, zostanie usunięty, wykluczenie również zostanie usunięte.

Na przykład poniższy kod JSON przedstawia wyjątek od polityki w kategorii zwolnienia zasobu do przypisania do inicjatywy o nazwie resourceShouldBeCompliantInit. Zasób jest wykluczony tylko z dwóch definicji zasad w inicjatywie, customOrgPolicy niestandardowej definicji zasad ( policyDefinitionReferenceId: requiredTags) i dozwolone lokalizacje wbudowanej definicji zasad ( policyDefinitionReferenceId : allowedLocations):

{
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
  "apiVersion": "2020-07-01-preview",
  "name": "resourceIsNotApplicable",
  "type": "Microsoft.Authorization/policyExemptions",
  "properties": {
    "displayName": "This resource is scheduled for deletion",
    "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
    "metadata": {
      "requestedBy": "Storage team",
      "approvedBy": "IA",
      "approvedOn": "2020-07-26T08:02:32.0000000Z",
      "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
    },
    "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
    "policyDefinitionReferenceId": [
      "requiredTags",
      "allowedLocations"
    ],
    "exemptionCategory": "waiver",
    "expiresOn": "2020-12-31T23:59:00.0000000Z",
    "assignmentScopeValidation": "Default"
  }
}

Nazwa wyświetlana i opis

Używasz displayName i description do zidentyfikowania wykluczenia z zasad i dostarczenia kontekstu jego użycia z określonym zasobem. displayName ma maksymalną długość 128 znaków i description maksymalną długość 512 znaków.

Metadane

Właściwość metadata umożliwia utworzenie dowolnej właściwości podrzędnej wymaganej do przechowywania odpowiednich informacji. W tym przykładzie właściwości requestedBy, approvedBy, approvedOni ticketRef zawierają wartości klientów w celu dostarczenia informacji o tym, kto zażądał wykluczenia, kto go zatwierdził i kiedy oraz wewnętrzny bilet śledzenia dla żądania. Te metadata właściwości są przykładami, ale nie są wymagane i metadata nie są ograniczone do tych właściwości podrzędnych.

Identyfikator przypisania zasad

To pole musi zawierać nazwę pełnej ścieżki przypisania zasad lub przypisania inicjatywy. policyAssignmentId jest ciągiem, a nie tablicą. Ta właściwość określa, z którego przydziału jest wyłączona hierarchia zasobów nadrzędnych lub pojedynczy zasób.

Identyfikatory definicji polityki

Jeśli element policyAssignmentId jest przeznaczony do przypisania inicjatywy, policyDefinitionReferenceId właściwość może służyć do określenia definicji zasad w inicjatywie, do której zasobu podmiot ma wykluczenie. Ponieważ zasób może być wykluczony z jednej lub więcej dołączonych definicji zasad, ta właściwość jest tablicą . Wartości muszą być zgodne z wartościami w definicji inicjatywy w polach policyDefinitions.policyDefinitionReferenceId .

Kategoria wykluczenia

Istnieją dwie kategorie wykluczenia i są one używane do grupowania wykluczeń:

  • Złagodzone: wykluczenie zostało udzielone, ponieważ cel zasad został spełniony za pośrednictwem innej metody.
  • Zwolnienie: Zwolnienie jest przyznawane, ponieważ stan braku zgodności zasobu jest tymczasowo akceptowany. Innym powodem użycia tej kategorii jest wykluczenie zasobów lub hierarchii zasobów z jednej lub kilku definicji w ramach inicjatywy, ale nie wykluczenie ich z całej inicjatywy.

Wygaśnięcie

Aby ustawić, gdy hierarchia zasobów lub pojedynczy zasób nie jest już wykluczony z przypisania, ustaw expiresOn właściwość . Ta opcjonalna właściwość musi być w formacie yyyy-MM-ddTHH:mm:ss.fffffffZUniversal ISO 8601 DateTime .

Uwaga

Wykluczenia z zasad nie są usuwane po osiągnięciu daty expiresOn. Obiekt jest zachowywany w celach archiwalnych, ale zwolnienie nie jest już uznawane.

Selektory zasobów

Wykluczenia obsługują opcjonalną właściwość resourceSelectors , która działa tak samo jak w przypadku wykluczeń, co w przypadku przypisań. Właściwość umożliwia stopniowe wdrażanie lub wycofywanie wykluczenia do niektórych podzestawów zasobów w kontrolowany sposób na podstawie typu zasobu, lokalizacji zasobu lub tego, czy zasób ma lokalizację. Więcej szczegółów na temat używania selektorów zasobów można znaleźć w strukturze przypisania. Poniższy kod JSON to przykładowe wykluczenie korzystające z selektorów zasobów. W tym przykładzie tylko zasoby w programie westcentralus są wykluczone z przypisania zasad:

{
  "properties": {
    "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "resourceSelectors": [
      {
        "name": "TemporaryMitigation",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "westcentralus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Regiony można dodawać lub usuwać z resourceLocation listy w przykładzie. Selektory zasobów umożliwiają większą elastyczność tworzenia i zarządzania wykluczeniami.

Walidacja zakresu przypisania (wersja podglądowa)

W większości scenariuszy zakres wykluczeń jest weryfikowany, aby upewnić się, że znajduje się on w zakresie przypisania zasad lub w nim. Właściwość opcjonalna assignmentScopeValidation może zezwalać na pominięcie tej weryfikacji i utworzenie wykluczenia poza zakresem przypisania. Ta walidacja jest przeznaczona dla sytuacji, w których subskrypcja musi zostać przeniesiona z jednej grupy zarządzania (MG) do innej, ale przeniesienie zostanie zablokowane przez zasady ze względu na właściwości zasobów w ramach subskrypcji. W tym scenariuszu można utworzyć zwolnienie dla subskrypcji w bieżącej MG, aby jej zasoby były wyłączone z przypisania zasad w docelowej MG. W ten sposób, gdy subskrypcja zostanie przeniesiona do docelowej grupy zarządzania, nie będzie zablokowana operacja, ponieważ zasoby są już wykluczone z przypisania zasad. Użycie tej właściwości jest pokazane w poniższym przykładzie:

{
  "properties": {
    "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgName}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "assignmentScopeValidation": "DoNotValidate",
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Dozwolone wartości dla elementu assignmentScopeValidation to Default i DoNotValidate. Jeśli nie zostanie określony, zostanie uruchomiony domyślny proces weryfikacji.

Wymagane uprawnienia

Uprawnienia kontroli dostępu opartej na rolach (RBAC) platformy Azure wymagane do zarządzania obiektami wykluczania zasad znajdują się w Microsoft.Authorization/policyExemptions grupie operacji. Wbudowane role Współautor zasad zasobów i Administrator zabezpieczeń oba mają uprawnienia read i write, a rola Policy Insights Data Writer (wersja zapoznawcza) ma uprawnienie read.

Wykluczenia mają dodatkowe środki bezpieczeństwa ze względu na skutki przyznania zwolnienia. Poza wymogiem posiadania operacji Microsoft.Authorization/policyExemptions/write na hierarchii zasobów lub poszczególnym zasobie, twórca wyjątku musi mieć uprawnienia do wykonania czasownika exempt/Action na przypisaniu docelowym.

Tworzenie wykluczeń i zarządzanie nimi

Wyjątki są zalecane w przypadku scenariuszy związanych z określonym czasem lub konkretnych sytuacji, w których zasób lub hierarchia zasobów powinny być nadal śledzone i w przeciwnym razie byłyby oceniane, ale istnieje specyficzny powód, dla którego nie powinny być oceniane pod kątem zgodności z wymaganiami. Jeśli na przykład środowisko ma wbudowaną definicję Storage accounts should disable public network access (ID: b2982f36-99f2-4db5-8eff-283140c09693) przypisaną z ustawieniem efekt na audyt. Po ocenie zgodności zasób StorageAcc1 jest niezgodny, ale StorageAcc1 musi mieć dostęp do sieci publicznej w celach biznesowych. W tym czasie należy przesłać żądanie, aby utworzyć zasób zwolnienia przeznaczony dla StorageAcc1elementu. Po utworzeniu zwolnienia, StorageAcc1 zostanie wyświetlone jako zwolnione w przeglądzie zgodności.

Regularnie ponownie sprawdzaj wykluczenia, aby upewnić się, że wszystkie kwalifikujące się elementy są odpowiednio wykluczone i natychmiast usuń wszystkie elementy, które nie kwalifikują się do wykluczenia. W tym czasie można również usunąć wygasłe zasoby zwolnienia.

Następne kroki