Auswirkung „deployIfNotExists“ von Azure Policy-Definitionen
Ähnlich wie auditIfNotExists
führt eine deployIfNotExists
-Richtliniendefinition eine Vorlagenbereitstellung durch, wenn die Bedingung erfüllt ist. Richtlinienzuweisungen, deren Auswirkung auf "DeployIfNotExists" festgelegt ist, erfordern für das Durchführen von Korrekturmaßnahmen eine verwaltete Identität.
Hinweis
Geschachtelte Vorlagen werden mit deployIfNotExists
unterstützt, verknüpfte Vorlagen werden derzeit jedoch nicht unterstützt.
Auswertung von „DeployIfNotExists“
deployIfNotExists
wird nach einer (konfigurierbaren) Verzögerung ausgeführt, wenn ein Ressourcenanbieter eine Anforderung zum Erstellen oder Aktualisieren eines Abonnements oder einer Ressource verarbeitet und ein Erfolgsstatuscode zurückgegeben hat. Eine Vorlagenbereitstellung findet statt, wenn keine entsprechenden Ressourcen vorhanden sind oder wenn die über existenceCondition
definierten Ressourcen nicht als „True“ ausgewertet werden. Die Dauer der Bereitstellung hängt von der Komplexität der in der Vorlage enthaltenen Ressourcen ab.
Während eines Auswertungszyklus führen Richtliniendefinitionen mit der Auswirkung „DeployIfNotExists“ dazu, dass übereinstimmende Ressourcen als nicht konform markiert werden. Es wird aber keine Aktion für diese Ressource ausgeführt. Bestehende, nicht konforme Ressourcen können mit einem Wartungstask bereinigt werden.
Eigenschaften von „DeployIfNotExists“
Die details
-Eigenschaft der Auswirkung „DeployIfNotExists“ umfasst alle Untereigenschaften, die die entsprechenden Ressourcen für den Abgleich und die auszuführende Vorlagenbereitstellung definieren.
type
(erforderlich)- Gibt den Typ der entsprechenden abzugleichenden Ressource an.
- Wenn es sich bei
type
um einen Ressourcentyp unterhalb derif
-Bedingungsressource handelt, fragt die Richtlinie Ressourcen von diesemtype
innerhalb des Bereichs der ausgewerteten Ressource ab. Andernfalls fragt die Richtlinie je nachexistenceScope
Ressourcen innerhalb derselben Ressourcengruppe oder desselben Abonnements wie die ausgewertete Ressource ab.
name
(optional)- Gibt den exakten Namen der Ressource für den Abgleich an und führt dazu, dass die Richtlinie nicht alle Ressourcen des angegebenen Typs, sondern eine bestimmte Ressource abruft.
- Wenn die Bedingungswerte für
if.field.type
undthen.details.type
übereinstimmen, wird diename
-Eigenschaft erforderlich und muss[field('name')]
oder[field('fullName')]
sein für eine untergeordnete Ressource.
Hinweis
type
- und name
-Segmente können kombiniert werden, um geschachtelte Ressourcen generisch abzurufen.
Um eine bestimmte Ressource abzurufen, können Sie "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
und "name": "parentResourceName/nestedResourceName"
verwenden.
Zum Abrufen einer Sammlung geschachtelter Ressourcen kann anstelle des letzten Namenssegments ein Platzhalterzeichen ?
angegeben werden. Beispiel: "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
und "name": "parentResourceName/?"
. Dieses kann mit Feldfunktionen kombiniert werden, um auf Ressourcen zuzugreifen, die mit der ausgewerteten Ressource in Zusammenhang stehen, z. B. "name": "[concat(field('name'), '/?')]"
".
resourceGroupName
(optional)- Hierdurch ist es möglich, für den Abgleich eine Ressource aus einer anderen Ressourcengruppe festzulegen.
- Diese Eigenschaft ist nicht anwendbar, wenn
type
eine Ressource unterhalb derif
-Bedingungsressource ist. - Standardmäßig wird die Ressourcengruppe der
if
-Bedingungsressource verwendet. - Wenn eine Vorlagenbereitstellung durchgeführt wird, erfolgt diese in der Ressourcengruppe, die über diesen Wert angegeben wurde.
existenceScope
(optional)- Zulässige Werte sind Subscription und ResourceGroup.
- Legt den Bereich fest, aus dem die entsprechende Ressource für den Abgleich abgerufen werden soll.
- Diese Eigenschaft ist nicht anwendbar, wenn
type
eine Ressource unterhalb derif
-Bedingungsressource ist. - Für ResourceGroup wird der Bereich auf die Ressourcengruppe in
resourceGroupName
beschränkt, sofern diese Eigenschaft angegeben ist. WennresourceGroupName
nicht angegeben ist, wird der Bereich auf die Ressourcengruppe derif
-Bedingungsressource begrenzt. Dies ist das Standardverhalten. - Für Subscription wird das gesamte Abonnement nach der entsprechenden Ressource abgefragt. Der Zuweisungsbereich sollte für die ordnungsgemäße Auswertung auf das Abonnement oder höher festgelegt werden.
- Die Standardeinstellung ist ResourceGroup.
evaluationDelay
(optional)- Hiermit wird angegeben, wann die Existenz der zugehörigen Ressourcen ausgewertet werden soll. Die Verzögerung wird nur bei Auswertungen verwendet, die das Ergebnis einer Erstell- oder Aktualisierungsanforderung für die Ressource sind.
- Zu den zulässigen Werten zählen
AfterProvisioning
,AfterProvisioningSuccess
undAfterProvisioningFailure
sowie eine Dauer gemäß ISO 8601 zwischen 0 und 360 Minuten. - Die AfterProvisioning-Werte untersuchen die Bereitstellungsergebnisse der Ressource, die in der
if
-Bedingung der Richtlinienregel ausgewertet wurde.AfterProvisioning
wird unabhängig vom Ergebnis nach der Bereitstellung ausgeführt. Eine Bereitstellung, die länger als sechs Stunden dauert, wird beim Bestimmen der AfterProvisioning-Auswertungsverzögerungen als Fehler behandelt. - Der Standardwert ist
PT10M
(zehn Minuten). - Eine lange Auswertungsverzögerung kann dazu führen, dass der aufgezeichnete Konformitätszustand der Ressource bis zur nächsten Auswertungsauslösung nicht aktualisiert wird.
existenceCondition
(optional)- Sofern nicht festgelegt, erfüllt jede entsprechende Ressource vom angegebenen
type
die Bedingung der Auswirkung und löst keine Bereitstellung aus. - Verwendet dieselbe Sprachsyntax wie die Richtlinienregel für die
if
-Bedingung, wird jedoch für jede entsprechende Ressource einzeln ausgeführt. - Wenn eine übereinstimmende Ressource als TRUE ausgewertet wird, ist die Auswirkung erfüllt und löst keine Bereitstellung aus.
- [field()] kann verwendet werden, um auf Äquivalenz mit Werten in der
if
-Bedingung zu überprüfen. - Beispielsweise könnte so überprüft werden, ob die übergeordnete Ressource (in der
if
-Bedingung) sich am selben Ressourcenstandort befindet wie die übereinstimmende Ressource.
- Sofern nicht festgelegt, erfüllt jede entsprechende Ressource vom angegebenen
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.
deploymentScope
(optional)- Zulässige Werte sind Subscription und ResourceGroup.
- Legt den Typ der auszulösenden Bereitstellung fest. Mit Subscription wird eine Bereitstellung auf Abonnementebene angegeben und mit ResourceGroup eine Bereitstellung in einer Ressourcengruppe.
- Bei der Bereitstellung auf Abonnementebene muss in Deployment eine location-Eigenschaft angegeben werden.
- Die Standardeinstellung ist ResourceGroup.
deployment
(erforderlich)- Diese Eigenschaft muss die vollständige Vorlagenbereitstellung enthalten, so wie sie an die PUT-API
Microsoft.Resources/deployments
übergeben würde. Weitere Informationen finden Sie im Artikel zur REST-API für die Bereitstellung. - Geschachtelte
Microsoft.Resources/deployments
-Elemente innerhalb der Vorlage sollten eindeutige Namen verwenden, um Konflikte zwischen mehreren Richtlinienauswertungen zu vermeiden. Der Name der übergeordneten Bereitstellung kann über[concat('NestedDeploymentName-', uniqueString(deployment().name))]
als Teil des Namens der geschachtelte Bereitstellung verwendet werden.
Hinweis
Alle Funktionen innerhalb der
deployment
-Eigenschaft werden als Komponenten der Vorlage – nicht der Richtlinie – ausgewertet. Eine Ausnahme ist dieparameters
-Eigenschaft, die Werte von der Richtlinie an die Vorlage übergibt. Der in diesem Abschnitt unter einem Vorlagenparameternamen angegebene Wert fürvalue
wird verwendet, um diese Wertübergabe durchzuführen (siehe fullDbName im DeployIfNotExists-Beispiel).- Diese Eigenschaft muss die vollständige Vorlagenbereitstellung enthalten, so wie sie an die PUT-API
Beispiel für „DeployIfNotExists“
Beispiel: Wertet SQL Server-Datenbanken aus, um zu bestimmen, ob „transparentDataEncryption
“ aktiviert ist. Falls nicht, wird eine Bereitstellung zur Aktivierung dieser Option durchgeführt.
"if": {
"field": "type",
"equals": "Microsoft.Sql/servers/databases"
},
"then": {
"effect": "deployIfNotExists",
"details": {
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"name": "current",
"evaluationDelay": "AfterProvisioning",
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
],
"existenceCondition": {
"field": "Microsoft.Sql/transparentDataEncryption.status",
"equals": "Enabled"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"fullDbName": {
"type": "string"
}
},
"resources": [
{
"name": "[concat(parameters('fullDbName'), '/current')]",
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"apiVersion": "2014-04-01",
"properties": {
"status": "Enabled"
}
}
]
},
"parameters": {
"fullDbName": {
"value": "[field('fullName')]"
}
}
}
}
}
}
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.