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:
- scope
- Richtliniendefinitions-ID und -Version
- Anzeigename
- description
- metadata
- Ressourcenselektoren
- overrides
- Erzwingungsmodus
- Ausgeschlossene Bereiche
- Meldungen zu Complianceverstößen
- parameters
- identity
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. displayName
hat 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 NamenbackupPolicyId
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 einemmanual
-Effekt zu speichern. Die EigenschaftdisplayName
ist der Name des Speicherkontos. Die EigenschaftevidenceStorageAccountID
ist die Ressourcen-ID des Speicherkontos. Die EigenschaftevidenceBlobContainer
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 wieresourceWithoutLocation
.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 nursubscriptionLevelResources
unterstützt. Kann nicht in derselben Ressourcenauswahl verwendet werden wieresourceLocation
.
in
: Die Liste der zulässigen Werte für die angegebenekind
. Kann nicht mit "notIn
" verwendet werden. Kann bis zu 50 Werte enthalten.notIn
: Die Liste der nicht zulässigen Werte für die angegebenekind
. 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 audit
enthä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 sindpolicyEffect
undpolicyVersion
.value
: Der neue Wert, der den vorhandenen Wert überschreibt. Die unterstützten Werte fürkind: policyEffect
sind Effekte. Fürkind: policyVersion
muss die unterstützte Versionsnummer höher oder gleich der in der Zuordnung angegebenendefinitionVersion
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ürkind: 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 wieresourceWithoutLocation
.
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 wieresourceWithoutLocation
.
in
: Die Liste der zulässigen Werte für die angegebenekind
. Kann nicht mit "notIn
" verwendet werden. Kann bis zu 50 Werte enthalten.notIn
: Die Liste der nicht zulässigen Werte für die angegebenekind
. 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
- Erfahren Sie mehr über die Struktur von Richtliniendefinitionen.
- Informieren Sie sich über das programmgesteuerte Erstellen von Richtlinien.
- Informieren Sie sich über das Abrufen von Konformitätsdaten.
- Erfahren Sie, wie Sie nicht konforme Ressourcen korrigieren können.
- Weitere Informationen zu Verwaltungsgruppen finden Sie unter Organisieren Ihrer Ressourcen mit Azure-Verwaltungsgruppen.