Model Azure Policy: Nasazení prostředků
Efekt deployIfNotExists umožňuje nasadit šablonu Azure Resource Manageru (šablonu ARM) při vytváření nebo aktualizaci prostředku, který nedodržuje předpisy. Tento přístup se dá upřednostňovat, když umožňuje používat efekt zamítnutí , protože umožňuje prostředky i nadále vytvářet, ale zajišťuje, aby změny byly provedeny, aby byly kompatibilní.
Ukázková definice zásady
Tato definice zásady používá operátor pole k vyhodnocení type
vytvořeného nebo aktualizovaného prostředku. Pokud se jedná o prostředek Microsoft.Network/virtualNetworks, zásada hledá sledovací proces sítě v umístění nového nebo aktualizovaného prostředku. Pokud se nenajde odpovídající sledovací proces sítě, nasadí se šablona ARM pro vytvoření chybějícího prostředku.
Poznámka:
Tato zásada vyžaduje, abyste ve svém předplatném měli skupinu prostředků s názvem NetworkWatcherRG . Azure vytvoří skupinu prostředků NetworkWatcherRG při povolení služby Network Watcher v oblasti.
{
"properties": {
"displayName": "Deploy network watcher when virtual networks are created",
"mode": "Indexed",
"description": "This policy creates a network watcher resource in regions with virtual networks. You need to ensure existence of a resource group named networkWatcherRG, which will be used to deploy network watcher instances.",
"metadata": {
"category": "Network"
},
"parameters": {},
"policyRule": {
"if": {
"field": "type",
"equals": "Microsoft.Network/virtualNetworks"
},
"then": {
"effect": "DeployIfNotExists",
"details": {
"type": "Microsoft.Network/networkWatchers",
"resourceGroupName": "networkWatcherRG",
"existenceCondition": {
"field": "location",
"equals": "[field('location')]"
},
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
],
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string"
}
},
"resources": [{
"apiVersion": "2016-09-01",
"type": "Microsoft.Network/networkWatchers",
"name": "[concat('networkWacher_', parameters('location'))]",
"location": "[parameters('location')]"
}]
},
"parameters": {
"location": {
"value": "[field('location')]"
}
}
}
}
}
}
}
}
}
Vysvětlení
existenceCondition
"type": "Microsoft.Network/networkWatchers",
"resourceGroupName": "networkWatcherRG",
"existenceCondition": {
"field": "location",
"equals": "[field('location')]"
},
Blok properties.policyRule.then.details říká službě Azure Policy, co má hledat související s vytvořeným nebo aktualizovaným prostředkem v bloku properties.policyRule.if . V tomto příkladu musí sledovací proces sítě ve skupině prostředků networkWatcherRG existovat s polemlocation
, které se rovná umístění nového nebo aktualizovaného prostředku. field()
Použití funkce umožňuje existenciCondition přístup k vlastnostem v novém nebo aktualizovaném prostředku, konkrétně vlastnostlocation
.
roleDefinitionIds
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
],
Vlastnost pole roleDefinitionIds v bloku properties.policyRule.then.details informuje definici zásad, která práva spravovaná identita potřebuje k nasazení zahrnuté šablony Resource Manageru. Tato vlastnost musí být nastavená tak, aby zahrnovala role, které mají oprávnění potřebná nasazením šablony, ale měla by používat koncept "princip nejnižšího oprávnění" a mít pouze potřebné operace a nic dalšího.
Šablona nasazení
Část nasazení definice zásady má blok vlastností , který definuje tři základní komponenty:
mode – Tato vlastnost nastaví režim nasazení šablony.
template – Tato vlastnost obsahuje samotnou šablonu. V tomto příkladu nastaví parametr šablony umístění umístění nového prostředku služby Network Watcher.
"template": { "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string" } }, "resources": [{ "apiVersion": "2016-09-01", "type": "Microsoft.Network/networkWatchers", "name": "[concat('networkWacher_', parameters('location'))]", "location": "[parameters('location')]" }] },
parameters – Tato vlastnost definuje parametry, které jsou k dispozici šabloně. Názvy parametrů musí odpovídat tomu, co jsou definovány v šabloně. V tomto příkladu má parametr název umístění , které se má shodovat. Hodnota umístění znovu použije
field()
funkci k získání hodnoty vyhodnoceného prostředku, což je virtuální síť v bloku policyRule.if."parameters": { "location": { "value": "[field('location')]" } }
Další kroky
- Projděte si další vzory a předdefinované definice.
- Projděte si strukturu definic Azure Policy.
- Projděte si Vysvětlení efektů zásad.