Azure Policy-minta: erőforrások üzembe helyezése
A deployIfNotExists effektus lehetővé teszi egy Azure Resource Manager-sablon (ARM-sablon) üzembe helyezését egy nem megfelelő erőforrás létrehozásakor vagy frissítésekor. Ez a megközelítés előnyben részesíthető a megtagadási effektus használata során, mivel lehetővé teszi az erőforrások létrehozását, de gondoskodik arról, hogy a módosítások megfelelőek legyenek.
Minta szabályzatdefiníció
Ez a szabályzatdefiníció a mező operátorral értékeli ki a type
létrehozott vagy frissített erőforrást. Ha ez az erőforrás Microsoft.Network /virtualNetworks, a szabályzat egy hálózatfigyelőt keres az új vagy frissített erőforrás helyén. Ha nem található egyező hálózati figyelő, az ARM-sablon üzembe lesz helyezve a hiányzó erőforrás létrehozásához.
Feljegyzés
Ehhez a szabályzathoz egy NetworkWatcherRG nevű erőforráscsoport szükséges az előfizetésben. Az Azure akkor hozza létre a NetworkWatcherRG erőforráscsoportot, ha engedélyezi a Network Watchert egy régióban.
{
"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')]"
}
}
}
}
}
}
}
}
}
Magyarázat
existenceCondition
"type": "Microsoft.Network/networkWatchers",
"resourceGroupName": "networkWatcherRG",
"existenceCondition": {
"field": "location",
"equals": "[field('location')]"
},
A properties.policyRule.then.details blokk tájékoztatja az Azure Policyt, hogy mit keressen a létrehozott vagy frissített erőforrással kapcsolatban a properties.policyRule.if blokkban. Ebben a példában a networkWatcherRG erőforráscsoport egyik hálózatfigyelőjének az új vagy frissített erőforrás helyével egyenlő mezővel location
kell rendelkeznie. A függvény használatával a field()
existenceCondition hozzáférhet az új vagy frissített erőforrás tulajdonságaihoz, különösen a location
tulajdonsághoz.
roleDefinitionIds
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
],
A roleDefinitionIds tömbtulajdonság a properties.policyRule.then.details blokkban jelzi a szabályzatdefiníciónak, hogy a felügyelt identitásnak mely jogosultságokkal kell üzembe helyeznie a mellékelt Resource Manager-sablont. Ennek a tulajdonságnak olyan szerepköröket kell tartalmaznia, amelyek rendelkeznek a sablon üzembe helyezéséhez szükséges engedélyekkel, de a "minimális jogosultság elve" fogalmát kell használniuk, és csak a szükséges műveletekkel és semmi többvel kell rendelkezniük.
Üzembehelyezési sablon
A szabályzatdefiníció üzembehelyezési része rendelkezik egy tulajdonságblokkgal , amely meghatározza a három alapvető összetevőt:
mód – Ez a tulajdonság beállítja a sablon üzembehelyezési módját .
sablon – Ez a tulajdonság magában foglalja magát a sablont. Ebben a példában a helysablon paramétere beállítja az új hálózatfigyelő erőforrás helyét.
"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')]" }] },
paraméterek – Ez a tulajdonság a sablonhoz megadott paramétereket határozza meg. A paraméterneveknek meg kell egyeznie a sablonban definiált névvel. Ebben a példában a paraméter neve megegyezik a helyével. A hely értéke ismét a
field()
függvényt használja a kiértékelt erőforrás értékének lekéréséhez, amely a policyRule.if blokk virtuális hálózata."parameters": { "location": { "value": "[field('location')]" } }
Következő lépések
- Tekintse át az egyéb mintákat és a beépített definíciókat.
- Tekintse meg az Azure szabályzatdefiníciók struktúrája szakaszt.
- A Szabályzatok hatásainak ismertetése.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: