Freigeben über


Azure Policy-Zuweisungsstruktur

Richtlinienzuweisungen geben an, welche Ressourcen von einer Richtliniendefinition oder -initiative ausgewertet werden. Die Richtlinienzuweisung kann außerdem 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 behandeln.

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

Der folgende JSON-Code zeigt ein Beispiel für eine Richtlinienzuweisungsanforderung im DoNotEnforce-Modus mit Parametern an:

{
  "properties": {
    "displayName": "Enforce resource naming rules",
    "description": "Force resource names to begin with DeptA and end with -LC",
    "definitionVersion": "1.*.*",
    "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": []
  }
}

Bereich

Der Bereich für die Zuordnungsressourcenerstellungszeit ist der primäre Faktor für die Ressourcenanwendbarkeit. Weitere Informationen zum Zuweisungsbereich finden Sie in der Übersicht zu Bereichen in Azure Policy.

Richtliniendefinitions-ID und -Version (Vorschauversion)

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.

Für integrierte Definitionen und Initiativen können Sie das definitionVersion-Element verwenden, auf dessen Basis Sie Bewertungen durchführen können. Standardmäßig wird die Version auf die neueste Hauptversion festgelegt und erfasst automatisch kleine Änderungen und Patchänderungen.

  • Um kleinere Änderungen der Definition automatisch zu erfassen, lautet die Versionsnummer #.*.*. Der Platzhalter stellt das automatische Erfassen von Updates dar.
  • Um an einen Nebenversionspfad anzuheften, lautet das Versionsformat #.#.*.
  • Alle Patchänderungen müssen zu Sicherheitszwecken automatisch erfasst werden. Patchänderungen sind auf Textänderungen und Notfallszenarios beschränkt.

Anzeigename und Beschreibung

Sie verwenden displayName und description, um die Richtlinienzuweisung zu identifizieren und Kontext für ihre Verwendung mit einem bestimmten Satz von Ressourcen bereitzustellen. displayNamehat eine maximale Länge von 128 Zeichen und description 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.
  • 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).

Szenariospezifische Metadateneigenschaften

  • 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}"
        }
    }
    
  • 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 lediglich aktualisieren. 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 (selectors) 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 (resourceSelectors) 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 verwenden.

Ein gängiger Anwendungsfall für Außerkraftsetzungen des Effekts sind Richtlinieninitiativen mit einer großen Anzahl von dazugehörigen Definitionen. 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 policyDefinitionReferenceId corpVMSizePolicy 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 audit dieser Richtlinie kann durch disabled 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"
}

Ein weiterer gängiger Anwendungsfall ist das Rollout einer neuen Version einer Definition. Empfohlene Schritte zum sicheren Aktualisieren einer Zuweisungsversion finden Sie unter Richtlinien zur sicheren Bereitstellung.

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

  • kind: Die Eigenschaft, die die Zuordnung außer Kraft setzt. Die unterstützten Typen sind policyEffect und policyVersion.

  • value: Der neue Wert, der den vorhandenen Wert überschreibt. Die unterstützten Werte für kind: policyEffect sind Effekte. Für kind: policyVersion muss die unterstützte Versionsnummer höher oder gleich der in der Zuordnung angegebenen definitionVersion sein.

  • 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ässige Werte für kind: policyEffect:

      • policyDefinitionReferenceId: Mit dieser Eigenschaft wird angegeben, welche Richtliniendefinitionen innerhalb einer Initiativenzuweisung den Effekt „Außerkraftsetzung“ übernehmen sollen.

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

      Zulässiger Wert für kind: policyVersion:

      • resourceLocation: Diese Eigenschaft wird verwendet, um Ressourcen basierend auf ihrem Typ auszuwählen. Kann nicht in derselben Ressourcenauswahl verwendet werden wie resourceWithoutLocation.
    • 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.

Mit einer Außerkraftsetzung kann der Effekt vieler Richtlinien ersetzt werden, indem mehrere Werte im policyDefinitionReferenceId-Array angegeben werden. Eine einzelne Außerkraftsetzung kann für bis zu 50 policyDefinitionReferenceId-Elemente 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 Eigenschaft enforcementMode 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 Richtlinien- 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 kann 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.

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. Weitere Informationen finden Sie unter 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 deployIfNotExists oder modify festgelegt ist, ist eine Identitätseigenschaft erforderlich, um Korrekturen nicht konformer Ressourcen zu ermöglichen. Wenn eine Zuweisung eine Identität verwendet, 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/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
  }
},

Nächste Schritte