Azure Policy-Ausnahmenstruktur

Die Funktion für Azure Policy-Ausnahmen wird verwendet, um eine Ressourcenhierarchie oder eine einzelne Ressource von der Bewertung von Initiativen oder Definitionen auszunehmen. Ressourcen, die ausgenommen sind, werden auf die allgemeine Konformität angerechnet, können aber nicht ausgewertet werden oder einen vorübergehenden Verzicht aufweisen. Weitere Informationen finden Sie in der Übersicht zu Anwendbarkeit in Azure Policy. Azure-Richtlinienausnahmen funktionieren auch mit den folgenden: Resource Manager modes: Microsoft.Kubernetes.Data, Microsoft.KeyVault.Data und Microsoft.Network.Data.

Sie verwenden JSON (JavaScript Object Notation), um eine Richtlinienausnahme zu erstellen. Die Richtlinienausnahme enthält Elemente für Folgendes:

Eine Richtlinienausnahme wird als untergeordnetes Objekt in der Ressourcenhierarchie oder der einzelnen Ressource erstellt, für die die Ausnahme gewährt wird. Ausnahmen können nicht auf Komponentenebene des Ressourcenanbietermodus erstellt werden. Wenn die übergeordnete Ressource, für die die Ausnahme gilt, entfernt wird, wird auch die Ausnahme entfernt.

Der folgende JSON-Code zeigt ein Beispiel für eine Richtlinienausnahme in der Kategorie Verzicht bei einer Ressource für eine Initiativenzuweisung mit dem Namen resourceShouldBeCompliantInit. Die Ressource ist nur von zwei der Richtliniendefinitionen in der Initiative ausgenommen, der benutzerdefinierten Richtliniendefinition customOrgPolicy ( policyDefinitionReferenceId: requiredTags) und der integrierten Richtliniendefinition Zulässige Standorte ( 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"
    }
}

Anzeigename und Beschreibung

Mit displayName und description, geben Sie die Richtlinienausnahme und den Kontext für ihre Verwendung mit der spezifischen Ressource an. displayName hat eine maximale Länge von 128 Zeichen, und description hat eine maximale Länge von 512 Zeichen.

Metadaten

Mit der Eigenschaft metadata können Sie untergeordnete Eigenschaften erstellen, die zum Speichern relevanter Informationen benötigt werden. Im Beispiel enthalten die Eigenschaften requestedBy, approvedBy, approvedOn und ticketRef Kundenwerte mit Informationen dazu, wer die Ausnahme wann angefordert hat, sowie ein internes Nachverfolgungsticket für die Anforderung. Diese metadata-Eigenschaften sind Beispiele, aber sie sind nicht erforderlich, und metadata ist nicht auf diese untergeordneten Eigenschaften beschränkt.

Richtlinienzuweisungs-ID

Dieses Feld muss den vollständigen Pfadname einer Richtlinien- oder Initiativenzuweisung enthalten. policyAssignmentId ist eine Zeichenfolge und kein Array. Diese Eigenschaft definiert, von welcher Zuweisung die übergeordnete Ressourcenhierarchie oder einzelne Ressource ausgenommen ist.

Richtliniendefinitions-IDs

Wenn die policyAssignmentId sich auf eine Initiativenzuweisung bezieht, kann mit der policyDefinitionReferenceIds-Eigenschaft angegeben werden, für welche Richtliniendefinitionen in der Initiative eine Ausnahme für die Objektressource gilt. Da die Ressource von einer oder mehreren enthaltenen Richtliniendefinition ausgenommen sein kann, ist diese Eigenschaft ein Array. Die Werte müssen den Werten in der Initiativendefinition in den policyDefinitions.policyDefinitionReferenceId-Feldern entsprechen.

Ausnahmekategorie

Es gibt zwei Ausnahmekategorien, mit deren Hilfe Ausnahmen gruppiert werden können:

  • Gemindert: Die Ausnahme wird gewährt, da die Absicht der Richtlinie durch eine andere Methode erfüllt wird.
  • Verzicht: Die Ausnahme wird gewährt, da der Zustand der Nichtkonformität der Ressource vorübergehend akzeptiert wird. Ein weiterer Grund, diese Kategorie zu verwenden, ist für eine Ressource oder Ressourcenhierarchie, die von einer oder mehreren Definitionen in einer Initiative, aber nicht von der gesamten Initiative ausgeschlossen werden sollte.

Ablauf

Mit der expiresOn-Eigenschaft legen Sie fest, wann eine Ressourcenhierarchie oder eine einzelne Ressource nicht mehr von einer Zuweisung ausgenommen wird. Diese optionale Eigenschaft muss im Universal ISO 8601-DateTime-Format yyyy-MM-ddTHH:mm:ss.fffffffZ angegeben werden.

Hinweis

Die Richtlinienausnahmen werden nicht gelöscht, wenn das durch expiresOn definierte Datum erreicht wird. Das Objekt wird für Aufzeichnungszwecke beibehalten, aber die Ausnahme wird nicht mehr berücksichtigt.

Ressourcenselektoren

Ausnahmen unterstützen eine optionale Eigenschaft resourceSelectors. Diese Eigenschaft funktioniert auf die gleiche Weise in Ausnahmen wie in Zuweisungen, sodass ein schrittweiser Rollout oder Rollback einer Ausnahme für bestimmte Teilmengen von Ressourcen auf kontrollierte Weise möglich ist, basierend auf Ressourcentyp, Ressourcenstandort oder darauf, ob die Ressource über einen Speicherort verfügt. Weitere Details zur Verwendung von Ressourcenselektoren finden Sie in der Zuweisungsstruktur. Hier finden Sie ein Beispiel für eine JSON-Ausnahme, die Ressourcenselektoren nutzt. In diesem Beispiel werden nur Ressourcen in westcentralus von der Richtlinienzuweisung ausgenommen:

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

In der Liste resourceLocation des Beispiels können Bereiche hinzugefügt oder entfernt werden. Ressourcenselektoren ermöglichen eine größere Flexibilität, wo und wie Ausnahmen erstellt und verwaltet werden können.

Prüfung des Zuweisungsbereichs (Vorschau)

In den meisten Szenarios wird der Ausnahmebereich überprüft, um sicherzustellen, dass er sich im Bereich der Richtlinienzuweisung befindet. Mit der optionalen Eigenschaft assignmentScopeValidation kann eine Ausnahme diese Überprüfung umgehen und außerhalb des Zuweisungsbereichs erstellt werden. Dies ist für Situationen vorgesehen, in denen ein Abonnement von einer Verwaltungsgruppe in eine andere verschoben werden muss, aber die Verschiebung würde aufgrund von Eigenschaften der Ressourcen innerhalb des Abonnements von der Richtlinie blockiert werden. In diesem Szenario könnte eine Ausnahme für das Abonnement in seiner aktuellen Verwaltungsgruppe erstellt werden, damit die Ressourcen von einer Richtlinienzuweisung für die Ziel-Verwaltungsgruppe ausgenommen werden können. Auf diese Weise wird der Vorgang, wenn das Abonnement in die Ziel-Verwaltungsgruppe verschoben wird, nicht blockiert, da Ressourcen bereits von der betreffenden Richtlinienzuweisung ausgenommen sind. Die Verwendung dieser Eigenschaft wird im Folgenden veranschaulicht:

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

Zulässige Werte für assignmentScopeValidation sind Default und DoNotValidate. Ohne Angabe erfolgt der Standardüberprüfungsprozess.

Erforderliche Berechtigungen

Die Azure RBAC-Berechtigungen, die zum Verwalten von Richtlinienausnahmeobjekten erforderlich sind, befinden sich in der Vorgangsgruppe Microsoft.Authorization/policyExemptions. Die integrierten Rollen Mitwirkender bei Ressourcenrichtlinien und Sicherheitsadministrator verfügen beide über die Berechtigungen read und write. Policy Insights-Datenschreiber (Vorschau) verfügt über die Berechtigung read.

Das Gewähren von Ausnahmen hat weitreichende Auswirkungen, daher weisen Ausnahmen zusätzliche Sicherheitsmaßnahmen auf. Es ist nicht nur der Microsoft.Authorization/policyExemptions/write-Vorgang für die Ressourcenhierarchie oder einzelne Ressource erforderlich, sondern der Ersteller der Ausnahme muss auch über das Verb exempt/Action für die Zielzuweisung verfügen.

Erstellung und Verwaltung von Ausnahmen

Ausnahmen werden für zeitgebundene oder spezifische Szenarien empfohlen, in denen eine Ressource oder Ressourcenhierarchie weiterhin nachverfolgt und anderweitig ausgewertet werden sollte, wenn es aber einen bestimmten Grund gibt, warum sie nicht auf Konformität geprüft werden sollte. Wenn einer Umgebung beispielsweise die integrierte Definition Storage accounts should disable public network access (ID: b2982f36-99f2-4db5-8eff-283140c09693) zugewiesen wurde, wobei Effekt auf Überprüfung festgelegt ist. Bei der Konformitätsbewertung ist die Ressource „StorageAcc1“ nicht konform, muss jedoch für geschäftliche Zwecke über einen öffentlichen Netzwerkzugriff verfügen. In diesem Fall sollte eine Anforderung für die Erstellung einer Ausnahmeressource eingereicht werden, die auf StorageAcc1 ausgerichtet ist. Nachdem die Ausnahme erstellt wurde, wird StorageAcc1 in der Konformitätsprüfung als ausgenommen angezeigt.

Überprüfen Sie ihre Ausnahmen regelmäßig, um sicherzustellen, dass alle betreffenden Elemente angemessen ausgenommen sind, und entfernen Sie unverzüglich alle, für die Ausnahmen nicht länger gültig sind. Zu diesem Zeitpunkt könnten auch Ausnahmeressourcen gelöscht werden, die abgelaufen sind.

Nächste Schritte