Auswirkung „modify“ von Azure Policy-Definitionen
Die Auswirkung modify
wird verwendet, um Eigenschaften oder Tags während der Erstellung oder Aktualisierung eines Abonnements oder einer Ressource hinzuzufügen, zu aktualisieren oder zu entfernen. Ein häufiges Beispiel ist die Aktualisierung von Tags für Ressourcen wie „costCenter“. Bestehende, nicht konforme Ressourcen können mit einem Wartungstask bereinigt werden. Eine einzelne Modify-Regel kann eine beliebige Anzahl von Vorgängen aufweisen. Richtlinienzuweisungen, deren Auswirkung auf "modify" festgelegt ist, erfordern für das Durchführen von Korrekturmaßnahmen eine verwaltete Identität.
Die Auswirkung modify
unterstützt die folgenden Vorgänge:
- Hinzufügen, Ersetzen oder Entfernen von Ressourcentags. Für Tags sollte mode bei einer Modify-Richtlinie auf
indexed
festgelegt sein, es sei denn, die Zielressource ist eine Ressourcengruppe. - Hinzufügen oder Ersetzen des Werts eines verwalteten Identitätstyps (
identity.type
) von virtuellen Computern und VM-Skalierungsgruppen Deridentity.type
kann nur für VMs oder Virtual Machine Scale Sets geändert werden. - Hinzufügen oder Ersetzen der Werte bestimmter Aliase
- Verwenden Sie
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }
in Azure PowerShell 4.6.0 oder höher, um eine Liste der Aliase abzurufen, die mitmodify
verwendet werden können.
- Verwenden Sie
Wichtig
Wenn Sie Tags verwalten, wird empfohlen, „Modify“ anstelle von „Append“ zu verwenden, da „Modify“ weitere Vorgangstypen und die Möglichkeit bietet, vorhandene Ressourcen zu korrigieren. Allerdings wird „Append“ empfohlen, wenn Sie keine verwaltete Identität erstellen können oder der Alias für die Ressourceneigenschaft von „Modify“ noch nicht unterstützt wird.
Auswertung von „Modify“
Die Auswertung von „Modify“ erfolgt vor der Anforderungsverarbeitung durch einen Ressourcenanbieter während der Erstellung oder Aktualisierung einer Ressource. Die modify
-Vorgänge werden auf den Anforderungsinhalt angewendet, wenn die if
-Bedingung der Richtlinienregel erfüllt wird. Jeder modify
-Vorgang kann eine Bedingung angeben, die bestimmt, wann er angewendet wird. Vorgänge mit Bedingungen, die bei Auswertung false ergeben, werden übersprungen.
Wenn ein Alias angegeben wird, werden weitere Überprüfungen durchgeführt, um sicherzustellen, dass der Anforderungsinhalt vom modify
-Vorgang nicht in einer Weise geändert wird, dass er vom Ressourcenanbieter abgelehnt wird:
- Die Eigenschaft, der der Alias zugeordnet ist, wird in der API-Version der Anforderung als Modifiable gekennzeichnet.
- Der Tokentyp im
modify
-Vorgang entspricht dem erwarteten Tokentyp für die Eigenschaft in der API-Version der Anforderung.
Wenn eine dieser Überprüfungen fehlschlägt, greift die Richtlinienauswertung auf den angegebenen conflictEffect
zurück.
Wichtig
Es wird empfohlen, dass Definitionen von „Modify“, die Aliase enthalten, auditconflictEffect verwenden. Damit wird vermieden, dass bei Anforderungen mit API-Versionen, bei denen die zugeordnete Eigenschaft nicht „Modifiable“ lautet, ein Fehler auftritt. Wenn sich derselbe Alias zwischen API-Versionen unterschiedlich verhält, können bedingte Modify-Vorgänge verwendet werden, um den für die einzelnen API-Versionen verwendeten modify
-Vorgang zu bestimmen.
Wenn eine Richtliniendefinition mit der Auswirkung modify
im Rahmen eines Auswertungszyklus ausgeführt wird, werden keine Änderungen an bereits vorhandenen Ressourcen vorgenommen. Stattdessen werden alle Ressourcen, die die if
-Bedingung erfüllen, als nicht konform markiert.
Eigenschaften von „Modify“
Die details
-Eigenschaft der Auswirkung modify
enthält alle Untereigenschaften, die die erforderlichen Berechtigungen für die Wartung definieren, und die operations
, mit denen Tagwerte hinzugefügt, aktualisiert oder entfernt werden.
roleDefinitionIds
(erforderlich)- Diese Eigenschaft muss ein Array von Zeichenfolgen enthalten, das mit der Rollen-ID der rollenbasierten Zugriffssteuerung übereinstimmt, auf die das Abonnement zugreifen kann. Weitere Informationen finden Sie unter Korrigieren nicht konformer Ressourcen mit Azure Policy.
- Die definierte Rolle muss alle Vorgänge einbeziehen, die der Rolle Mitwirkender erteilt wurden.
conflictEffect
(optional)- Bestimmt, welche Richtliniendefinition verwendet wird, wenn dieselbe Eigenschaft durch mehrere Richtliniendefinitionen geändert wird oder wenn der
modify
-Vorgang für den angegebenen Alias nicht funktioniert.- Bei neuen oder aktualisierten Ressourcen hat die Richtliniendefinition mit deny Vorrang. Richtliniendefinitionen mit audit überspringen alle Vorgänge (
operations
). Sind mehrere Richtliniendefinitionen mit dem Effekt deny vorhanden, wird die Anforderung als Konflikt abgelehnt. Enthalten alle Richtliniendefinitionen audit, wird keiner der Vorgänge (operations
) der in Konflikt stehenden Richtliniendefinitionen verarbeitet. - Falls bei vorhandenen Ressourcen mehrere Richtliniendefinition den Effekt deny enthalten, lautet der Konformitätsstatus Conflict. Ist der Effekt deny in maximal einer Richtliniendefinition enthalten, wird von den einzelnen Zuweisungen jeweils der Konformitätsstatus Non-compliant zurückgegeben.
- Bei neuen oder aktualisierten Ressourcen hat die Richtliniendefinition mit deny Vorrang. Richtliniendefinitionen mit audit überspringen alle Vorgänge (
- Verfügbare Werte: audit, deny, disabled
- Standardwert: deny
- Bestimmt, welche Richtliniendefinition verwendet wird, wenn dieselbe Eigenschaft durch mehrere Richtliniendefinitionen geändert wird oder wenn der
operations
(erforderlich)- Ein Array aller Tagvorgänge, die auf übereinstimmenden Ressourcen ausgeführt werden sollen.
- Eigenschaften:
operation
(erforderlich)- Definiert, welche Maßnahme bei einer übereinstimmenden Ressource ergriffen werden sollen. Optionen sind: addOrReplace, Add, Remove. Add verhält sich ähnlich wie die Auswirkung append.
field
(erforderlich)- Das Tag, das hinzugefügt, ersetzt oder entfernt werden soll. Tagnamen müssen derselben Namenskonvention für andere Felder entsprechen.
value
(optional)- Der Wert, auf den das Tag festgelegt werden soll.
- Diese Eigenschaft ist erforderlich, wenn
operation
auf addOrReplace oder Add festgelegt ist.
condition
(optional)- Eine Zeichenfolge mit einem Azure Policy-Sprachausdruck und Richtlinienfunktionen, der true oder false ergibt.
- Die folgenden Richtlinienfunktionen werden nicht unterstützt:
field()
,resourceGroup()
,subscription()
Vorgänge für „Modify“
Das operations
-Eigenschaftenarray ermöglicht es, mehrere Tags auf unterschiedliche Weise in einer einzelnen Richtliniendefinition zu ändern. Jeder Vorgang besteht aus den Eigenschaften operation
, field
und value
. operation
bestimmt, wie die Wartungsaufgabe mit den Tags verfährt, field
bestimmt, welches Tag geändert wird, und value
definiert die neue Einstellung für dieses Tag. Im folgenden Beispiel werden die folgenden Tag-Änderungen vorgenommen:
- Legt das
environment
-Tag auf „Test“ fest, auch wenn es bereits mit einem anderen Wert vorhanden ist. - Entfernt das Tag
TempResource
. - Legt das
Dept
-Tag auf den Richtlinienparameter DeptName fest, der bei der Richtlinienzuweisung konfiguriert wurde.
"details": {
...
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
},
{
"operation": "Remove",
"field": "tags['TempResource']",
},
{
"operation": "addOrReplace",
"field": "tags['Dept']",
"value": "[parameters('DeptName')]"
}
]
}
Die operation
-Eigenschaft verfügt über folgende Optionen:
Vorgang | Beschreibung |
---|---|
addOrReplace |
Fügt die definierte Eigenschaft oder das definierte Tag und den Wert zur Ressource hinzu, auch wenn die Eigenschaft oder das Tag bereits mit einem anderen Wert vorhanden ist. |
add |
Fügt der Ressource die definierte Eigenschaft oder das definierte Tag und den Wert hinzu. |
remove |
Entfernt die definierte Eigenschaft oder das definierte Tag aus der Ressource. |
Beispiele für „Modify“
Beispiel 1: Fügen Sie das environment
-Tag hinzu, und ersetzen Sie vorhandene environment
-Tags durch „Test“:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
}
]
}
}
Beispiel 2: Entfernen Sie das env
-Tag, und fügen Sie das environment
-Tag hinzu oder ersetzen Sie vorhandene environment
-Tags durch einen parametrisierten Wert:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"conflictEffect": "deny",
"operations": [
{
"operation": "Remove",
"field": "tags['env']"
},
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "[parameters('tagValue')]"
}
]
}
}
Beispiel 3: Sicherstellen, dass ein Speicherkonto keinen öffentlichen Zugriff auf Blobs zulässt. Der modify
-Vorgang wird nur bei der Auswertung von Anforderungen mit einer API-Version größer oder gleich 2019-04-01
angewendet:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
],
"conflictEffect": "audit",
"operations": [
{
"condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
"value": false
}
]
}
}
Nächste Schritte
- Sehen Sie sich die Beispiele unter Azure Policy-Beispiele an.
- Lesen Sie die Informationen unter Struktur von Azure Policy-Definitionen.
- 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.
- Lesen Sie den Artikel zu Azure-Verwaltungsgruppen.