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ą wykluczone, są uwzględniane w stosunku do ogólnej zgodności, ale nie można ich ocenić ani nie mają 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.Data i 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 wykluczenie z zasad w kategorii zwolnienia zasobu do przypisania 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/ExemptRG/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",
        "policyDefinitionReferenceIds": [
            "requiredTags",
            "allowedLocations"
        ],
        "exemptionCategory": "waiver",
        "expiresOn": "2020-12-31T23:59:00.0000000Z",
        "assignmentScopeValidation": "Default"
    }
}

Nazwa wyświetlana i opis

Użyj nazwy displayName i opisu , aby zidentyfikować wykluczenie z zasad i podać kontekst do użycia z określonym zasobem. displayName ma maksymalną długość 128 znaków i opis maksymalnie 512 znaków.

Metadane

Właściwość metadanych umożliwia utworzenie dowolnej właściwości podrzędnej wymaganej do przechowywania odpowiednich informacji. W tym przykładzie właściwości żądane przez, zatwierdzoneby, approvedOn i ticketRef zawierają wartości klientów, aby podać informacje o tym, kto zażądał wykluczenia, kto go zatwierdził i kiedy, oraz wewnętrzny bilet śledzenia dla żądania. Te właściwości metadanych są przykładami, ale nie są wymagane, a metadane 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 zasad

Jeśli element policyAssignmentId jest przeznaczony dla przypisania inicjatywy, właściwość policyDefinitionReferenceIds 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 co najmniej jednej dołączonej 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ń:

  • Rozwiązano problem: wykluczenie jest przyznawane, ponieważ intencja zasad jest spełniona za pomocą innej metody.
  • Zwolnienie: Zwolnienie jest przyznawane, ponieważ stan braku zgodności zasobu jest tymczasowo akceptowany. Innym powodem użycia tej kategorii jest hierarchia zasobów lub zasobów, która powinna zostać wykluczona z jednej lub większej liczby definicji w ramach inicjatywy, ale nie powinna być wykluczona z całej inicjatywy.

Wygaśnięcie

Aby ustawić, gdy hierarchia zasobów lub pojedynczy zasób nie jest już wykluczony z przypisania, ustaw właściwość expiresOn . 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 expiresOn osiągnięciu daty. Obiekt jest zachowywany do przechowywania rekordów, ale wykluczenie nie jest już honorowane.

Selektory zasobów

Wykluczenia obsługują opcjonalną właściwość resourceSelectors. Ta właściwość działa tak samo jak w przypadku wykluczeń, co w przypadku przypisań, co pozwala na 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. Oto przykładowy kod JSON wykluczania, który używa selektorów zasobów. W tym przykładzie tylko zasoby w programie westcentralus będą wykluczone z przypisania zasad:

{
    "properties": {
        "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "resourceSelectors": [
            {
                "name": "TemporaryMitigation",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "westcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/resourceGroups/demoCluster/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 zapoznawcza)

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. Jest to przeznaczone 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ć wykluczenie dla subskrypcji w bieżącej mg, aby wykluczyć jej zasoby z przypisania zasad w docelowej mg. W ten sposób, gdy subskrypcja zostanie przeniesiona do docelowej grupy zabezpieczeń, operacja nie zostanie zablokowana, ponieważ zasoby są już wykluczone z danego przypisania zasad. Użycie tej właściwości przedstawiono poniżej:

{
    "properties": {
        "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgB}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "assignmentScopeValidation": "DoNotValidate",
    },
    "systemData": { ... },
    "id": "/subscriptions/{subIdA}/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 wykonana domyślna procedura walidacji.

Wymagane uprawnienia

Uprawnienia RBAC platformy Azure wymagane do zarządzania obiektami wykluczania zasad znajdują się Microsoft.Authorization/policyExemptions w grupie operacji. Wbudowane role Współautor zasad zasobów i Zabezpieczenia Administracja mają read uprawnienia i write zasady Szczegółowe informacje zapisywania danych (wersja zapoznawcza) ma read uprawnienia.

Z wykluczeniami są związane dodatkowe środki bezpieczeństwa ze względu na skutki przyznania wykluczenia. Poza wymaganiem Microsoft.Authorization/policyExemptions/write operacji w hierarchii zasobów lub pojedynczym zasobie twórca wykluczenia musi mieć exempt/Action czasownik w przypisaniu docelowym.

Tworzenie wykluczeń i zarządzanie nimi

Wyjątki są zalecane w przypadku scenariuszy związanych z czasem lub określonych scenariuszy, w których hierarchia zasobów lub zasobów powinna być nadal śledzona i w przeciwnym razie będzie oceniana, ale nie powinno być oceniane pod kątem zgodności. 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 efektu do inspekcji. Po ocenie zgodności zasób "StorageAcc1" jest niezgodny, ale magazynAcc1 musi mieć dostęp do sieci publicznej dla celów biznesowych. W tym czasie należy przesłać żądanie, aby utworzyć zasób wykluczania przeznaczony dla usługi StorageAcc1. Po utworzeniu wykluczenia w przeglądzie zgodności zostanie wyświetlona wartość StorageAcc1 jako wyklucz .

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

Następne kroki