Azure Policy-Zuweisungsstruktur

Richtlinienzuweisungen werden von Azure Policy zur Definition verwendet, welche Ressourcen welchen Richtlinien oder Initiativen zugewiesen werden. Die Richtlinienzuweisung kann die Werte von Parametern für diese Gruppe von Ressourcen zum Zeitpunkt der Zuweisung bestimmen, wodurch es möglich wird, Richtliniendefinitionen wiederzuverwenden, die dieselben Ressourceneigenschaften mit unterschiedlichen Anforderungen an die Compliance ansprechen.

Hinweis

Weitere Informationen zum Azure Policy-Bereich finden Sie in der Übersicht zu Bereichen in Azure Policy.

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

Der folgende JSON-Code zeigt z. B. eine Richtlinienzuweisung im DoNotEnforce-Modus mit dynamischen Parametern an:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "metadata": {
            "assignedBy": "Cloud Center of Excellence"
        },
        "enforcementMode": "DoNotEnforce",
        "notScopes": [],
        "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
        "nonComplianceMessages": [
            {
                "message": "Resource names must start with 'DeptA' and end with '-LC'."
            }
        ],
        "parameters": {
            "prefix": {
                "value": "DeptA"
            },
            "suffix": {
                "value": "-LC"
            }
        },
        "identity": {
            "type": "SystemAssigned"
        },
        "resourceSelectors": [],
        "overrides": []
    }
}

Alle Azure Policy-Beispiele sind unter Azure Policy-Beispiele verfügbar.

Anzeigename und Beschreibung

Sie verwenden displayName und description, um die Richtlinienzuweisung zu identifizieren und den Kontext für ihre Verwendung mit einem bestimmten Satz von Ressourcen bereitzustellen. displayName hat eine maximale Länge von 128 Zeichen, und description hat eine maximale Länge von 512 Zeichen.

Metadaten

Die optionale Eigenschaft metadata dient zum Speichern von Informationen zur Richtlinienzuweisung. Kunden können alle für ihre Organisation nützlichen Eigenschaften und Werte in metadata definieren. Es gibt jedoch einige allgemeine Eigenschaften, die von Azure Policy verwendet werden. Jede metadata-Eigenschaft ist auf 1,024 Zeichen begrenzt.

Allgemeine Metadateneigenschaften

  • assignedBy (Zeichenfolge): Der Anzeigename des Sicherheitsprinzipals, durch den die Zuweisung erstellt wurde.

  • createdBy (Zeichenfolge): Die GUID des Sicherheitsprinzipals, durch den die Zuweisung erstellt wurde.

  • createdOn (Zeichenfolge): Das Universal ISO 8601-DateTime-Format der Erstellungszeit der Zuweisung.

  • parameterScopes (Objekt): Eine Sammlung von Schlüssel-Wert-Paaren, bei denen der Schlüssel einem mit strongType konfigurierten Parameternamen entspricht und der Wert den Ressourcenbereich definiert, der im Portal verwendet wird, um die Liste der verfügbaren Ressourcen per Abgleich von strongType bereitzustellen. Dieser Wert wird vom Portal festgelegt, wenn sich der Bereich vom Zuweisungsbereich unterscheidet. Ist der Wert festgelegt, wird der Bereich für den Parameter bei einer Bearbeitung der Richtlinienzuweisung im Portal automatisch auf diesen Wert festgelegt. Der Wert ist jedoch nicht unveränderlich und kann in einen anderen Bereich geändert werden.

    Im folgenden Beispiel für parameterScopes wird ein Parameter vom Typ strongType mit dem Namen backupPolicyId verwendet, um einen Bereich für die Ressourcenauswahl festzulegen, wenn die Zuweisung im Portal bearbeitet wird.

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • updatedBy (Zeichenfolge): Der Anzeigename des Sicherheitsprinzipals, durch den die Zuweisung aktualisiert wurde (sofern zutreffend).

  • updatedOn (Zeichenfolge): Das Universal ISO 8601-DateTime-Format der Aktualisierungszeit der Zuweisung (sofern zutreffend).

  • evidenceStorages (Objekt): Das empfohlene Standardspeicherkonto, das verwendet werden sollte, um Nachweise für Richtlinienzuweisungen mit einem manual-Effekt zu speichern. Die Eigenschaft displayName ist der Name des Speicherkontos. Die Eigenschaft evidenceStorageAccountID ist die Ressourcen-ID des Speicherkontos. Die Eigenschaft evidenceBlobContainer ist der Blob-Containername, in dem die Nachweise gespeichert werden sollen.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

Ressourcenselektoren

Die optionale Eigenschaft resourceSelectors erleichtert sichere Bereitstellungspraktiken (SDP), indem sie es Ihnen ermöglicht, Richtlinienzuweisungen auf der Grundlage von Faktoren wie dem Standort der Ressource, dem Ressourcentyp oder der Tatsache, ob eine Ressource einen Standort hat, schrittweise einzuführen. Wenn die Ressourcenauswahl verwendet wird, wertet Azure Policy nur Ressourcen aus, die auf die in der Ressourcenauswahl vorgenommenen Spezifikationen anwendbar sind. Die Ressourcenauswahl kann auch genutzt werden, um den Umfang der Ausnahmen auf dieselbe Weise einzuschränken.

Im folgenden Beispielszenario wird die neue Richtlinienzuweisung nur ausgewertet, wenn der Standort der Ressource entweder USA, Osten oder USA, Westen ist.

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Wenn Sie bereit sind, den Auswertungsbereich für Ihre Richtlinie zu erweitern, müssen Sie die Zuweisung einfach ändern. Das folgende Beispiel zeigt unsere Richtlinienzuweisung mit zwei zusätzlichen Azure-Regionen, die der SDPRegions-Auswahl hinzugefügt wurden. Beachten Sie, dass SDP in diesem Beispiel für sichere Bereitstellungspraxis steht:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus", "centralus", "southcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Die Ressourcenauswahl verfügt über die folgenden Eigenschaften:

  • name: Der Name der Ressourcenauswahl.

  • selectors: (Optional) Die Eigenschaft, die verwendet wird, um zu bestimmen, welche Teilmenge der Ressourcen, die auf die Richtlinienzuweisung anwendbar ist, für die Compliance ausgewertet werden sollte.

    • kind: Die Eigenschaft eines Selektors, die beschreibt, durch welche Eigenschaft der Satz von ausgewerteten Ressourcen einschränkt wird. Jede „Art“ kann nur einmal in einer einzelnen Ressourcenauswahl verwendet werden. Zulässige Werte sind:

      • resourceLocation: Diese Eigenschaft wird verwendet, um Ressourcen basierend auf ihrem Typ auszuwählen. Kann nicht in derselben Ressourcenauswahl verwendet werden wie resourceWithoutLocation.

      • resourceType: Diese Eigenschaft wird verwendet, um Ressourcen basierend auf ihrem Typ auszuwählen.

      • resourceWithoutLocation: Diese Eigenschaft wird verwendet, um Ressourcen auf Abonnementebene auszuwählen, die keinen Standort haben. Derzeit wird nur subscriptionLevelResources unterstützt. Kann nicht in derselben Ressourcenauswahl verwendet werden wie resourceLocation.

    • in: Die Liste der zulässigen Werte für die angegebene kind. Kann nicht mit "notIn" verwendet werden. Kann bis zu 50 Werte enthalten.

    • notIn: Die Liste der nicht zulässigen Werte für die angegebene kind. Kann nicht mit "in" verwendet werden. Kann bis zu 50 Werte enthalten.

Eine Ressourcenauswahl kann mehrere Selektoren enthalten. Um auf eine Ressourcenauswahl angewendet werden zu können, muss eine Ressource die von all ihren Selektoren angegebenen Anforderungen erfüllen. Außerdem können bis zu 10 Ressourcenselektoren in einer einzelnen Zuweisung angegeben werden. Inbegriffene Ressourcen werden ausgewertet, wenn sie die Anforderungen einer dieser Ressourcenselektoren erfüllen.

Überschreibungen

Mit der optionalen Eigenschaft overrides können Sie den Effekt einer Richtliniendefinition ändern, ohne die zugrunde liegende Richtliniendefinition zu ändern oder einen parametrisierten Effekt in der Richtliniendefinition zu verwenden.

Der häufigsten Einsatzfall für Außerkraftsetzungen sind Richtlinieninitiativen mit einer großen Anzahl von zugewiesenen Richtliniendefinitionen. In dieser Situation kann das Verwalten mehrerer Richtlinieneffekte erhebliche administrative Anstrengungen auslösen, insbesondere wenn der Effekt von Zeit zu Zeit aktualisiert werden muss. Mithilfe von Außerkraftsetzungen können die Auswirkungen mehrerer Richtliniendefinitionen im Rahmen einer Initiative gleichzeitig aktualisiert werden.

Sehen Sie sich aus diesem Zweck ein Beispiel an. Stellen Sie sich vor, Sie haben eine Richtlinieninitiative namens CostManagement, die eine benutzerdefinierte Richtliniendefinition mit policyDefinitionReferenceIdcorpVMSizePolicy und als einzigen Effekt auditenthält. Angenommen, Sie möchten die CostManagement-Initiative zuweisen, aber die Compliance für diese Richtlinie noch nicht anzeigen. Der Effekt „Überprüfung“ dieser Richtlinie kann durch „deaktiviert“ ersetzt werden, indem die Zuweisung der Initiative überschrieben wird, wie im folgenden Beispiel gezeigt:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
        "overrides": [
            {
                "kind": "policyEffect",
                "value": "disabled",
                "selectors": [
                    {
                        "kind": "policyDefinitionReferenceId",
                        "in": [ "corpVMSizePolicy" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "CostManagement"
}

Außerkraftsetzungen verfügen über die folgenden Eigenschaften:

  • kind: Die Eigenschaft, die die Zuordnung außer Kraft setzt. Die unterstützte Art ist policyEffect.

  • value: Der neue Wert, der den vorhandenen Wert überschreibt. Die unterstützten Werte sind Effekte.

  • selectors: (Optional) Die Eigenschaft, die zum Ermitteln des Umfangs der Richtlinienzuweisung verwendet wird, um den Außerkraftsetzungsbereich zu ermitteln.

    • kind: Die Eigenschaft eines Selektors, die beschreibt, welches Merkmal den Umfang der Außerkraftsetzung einschränkt. Zulässiger Wert für kind: policyEffect ist:

      • policyDefinitionReferenceId: Damit wird angegeben, welche Richtliniendefinitionen innerhalb einer Initiativenzuweisung den Effekt Außerkraftsetzung übernehmen sollen.
    • in: Die Liste der zulässigen Werte für die angegebene kind. Kann nicht mit "notIn" verwendet werden. Kann bis zu 50 Werte enthalten.

    • notIn: Die Liste der nicht zulässigen Werte für die angegebene kind. Kann nicht mit "in" verwendet werden. Kann bis zu 50 Werte enthalten.

Beachten Sie, dass eine Außerkraftsetzung verwendet werden kann, um den Effekt vieler Richtlinien zu ersetzen, indem mehrere Werte im PolicyDefinitionReferenceId-Array angegeben werden. Eine einzelne Außerkraftsetzung kann für bis zu 50 PolicyDefinitionReferenceIds verwendet werden, und eine einzelne Richtlinienzuweisung kann bis zu 10 Außerkraftsetzungen enthalten, die in der Reihenfolge ausgewertet werden, in der sie angegeben sind. Bevor die Zuweisung erstellt wird, wird der in der Außerkraftsetzung ausgewählte Effekt anhand der Richtlinienregel- und Parameterwertliste in den Fällen überprüft, in denen der Effekt parametrisiert wird.

Erzwingungsmodus

Mit der enforcementMode-Eigenschaft können Kunden das Ergebnis einer Richtlinie für vorhandene Ressourcen testen, ohne dass die Richtlinienauswirkung initiiert oder Einträge im Azure-Aktivitätsprotokoll ausgelöst werden.

Dieses Szenario wird allgemein als „Was-wäre-wenn“ bezeichnet und richtet sich nach sicheren Bereitstellungsverfahren. enforcementMode unterscheidet sich vom Effekt Disabled, da dieser Effekt die Ressourcenauswertung gänzlich verhindert.

Diese Eigenschaft weist die folgenden Werte auf:

Mode JSON-Wert type Manuelle Behebung Aktivitätsprotokolleintrag BESCHREIBUNG
Aktiviert Standard Zeichenfolge Ja Ja Die Richtlinienauswirkung wird während der Erstellung oder Aktualisierung von Ressourcen erzwungen.
Disabled DoNotEnforce Zeichenfolge Ja Nein Die Richtlinienauswirkung wird nicht während der Erstellung oder Aktualisierung von Ressourcen erzwungen.

Wenn enforcementMode nicht in einer Richtlinie oder Initiativendefinition angegeben ist, wird der Wert Default verwendet. Aufgaben zur Bereinigung können für deployIfNotExists-Richtlinien gestartet werden, auch wenn enforcementMode auf DoNotEnforce festgelegt ist.

Ausgeschlossene Bereiche

Der scope der Zuweisung umfasst alle untergeordneten Ressourcencontainer und untergeordneten Ressourcen. Wenn die Definition für untergeordnete Ressourcencontainer oder untergeordnete Ressourcen nicht angewendet werden soll, können diese durch Festlegung von notScopes von der Auswertung ausgeschlossen werden. Diese Eigenschaft ist ein Array, mit dem ein oder mehrerer Ressourcencontainer oder Ressourcen von der Auswertung ausgeschlossen werden können. notScopes können nach dem Erstellen der anfänglichen Zuweisung hinzugefügt oder aktualisiert werden.

Hinweis

Eine ausgeschlossene Ressource unterscheidet sich von einer ausgenommenen Ressource. Weitere Informationen finden Sie in der Übersicht zu Bereichen in Azure Policy.

Richtliniendefinitions-ID

Dieses Feld muss der vollständige Pfadname einer Richtlinien- oder einer Initiativendefinition sein. policyDefinitionId ist eine Zeichenfolge und kein Array. Der neueste Inhalt der zugewiesenen Richtliniendefinition oder -initiative wird bei jeder Auswertung der Richtlinienzuweisung abgerufen. Es wird empfohlen, stattdessen eine Initiative zu verwenden, wenn häufig mehrere Richtlinien gleichzeitig zugewiesen werden.

Meldungen zu Complianceverstößen

Legen Sie nonComplianceMessages in der Zuweisungsdefinition fest, um eine benutzerdefinierte Meldung festzulegen, in der beschrieben wird, weshalb eine Ressource nicht der Richtlinien- oder Initiativendefinition entspricht. Dieser Knoten ist ein Array von message-Einträgen. Diese benutzerdefinierte Meldung wird zusätzlich zur Standardfehlermeldung für Nichtkonformität verwendet und ist optional.

Wichtig

Benutzerdefinierte Nachrichten bei Nichtkonformität werden nur für Definitionen oder Initiativen mit Definitionen von Resource Manager-Modi unterstützt.

"nonComplianceMessages": [
    {
        "message": "Default message"
    }
]

Wenn die Zuweisung für eine Initiative erfolgt, können für jede Richtliniendefinition in der Initiative verschiedene Meldungen konfiguriert werden. Für die Meldungen wird der policyDefinitionReferenceId-Wert verwendet, der in der Initiativendefinition konfiguriert wurde. Einzelheiten finden Sie in den Definitionseigenschaften der Richtlinie.

"nonComplianceMessages": [
    {
        "message": "Default message"
    },
    {
        "message": "Message for just this policy definition by reference ID",
        "policyDefinitionReferenceId": "10420126870854049575"
    }
]

Parameter

Dieses Segment der Richtlinienzuweisung stellt die Werte für die Parameter bereit, die in der Richtliniendefinition oder Initiativendefinition definiert sind. Dieses Design ermöglicht es, eine Richtlinien- oder Initiativendefinition mit unterschiedlichen Ressourcen wiederzuverwenden, aber auf unterschiedliche Geschäftswerte oder -ergebnisse zu prüfen.

"parameters": {
    "prefix": {
        "value": "DeptA"
    },
    "suffix": {
        "value": "-LC"
    }
}

In diesem Beispiel sind die Parameter, die zuvor in der Richtliniendefinition definiert wurden, prefix und suffix. Diese spezielle Richtlinienzuweisung legt prefix auf DeptA und suffix auf -LC fest. Dieselbe Richtliniendefinition kann mit einem anderen Satz von Parametern für eine andere Abteilung wiederverwendet werden, wodurch die Duplizierung und Komplexität von Richtliniendefinitionen reduziert und gleichzeitig Flexibilität bereitgestellt wird.

Identität

Bei Richtlinienzuweisungen, deren Auswirkung auf deployIfNotExist (Bereitstellen, sofern nicht vorhanden) oder modify (ändern) festgelegt ist, ist eine Identitätseigenschaft erforderlich, um Korrekturen nicht konformer Ressourcen zu ermöglichen. Bei Verwendung der Identität muss der Benutzer auch einen Speicherort für die Zuweisung angeben.

Hinweis

Eine einzelne Richtlinienzuweisung kann nur einer system- oder benutzerseitig zugewiesenen verwalteten Identität zugeordnet werden. Dieser Identität können jedoch bei Bedarf mehrere Rollen zugewiesen werden.

# System-assigned identity
 "identity": {
    "type": "SystemAssigned"
  }
# User-assigned identity
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

Nächste Schritte