Azure Policy minta: hatások
Azure Policy számos olyan hatással rendelkezik, amelyek meghatározzák, hogy a szolgáltatás hogyan reagál a nem megfelelő erőforrásokra. Egyes effektusok egyszerűek, és nem igényelnek további tulajdonságokat a szabályzatdefinícióban, míg mások több tulajdonságot igényelnek.
1. minta: Egyszerű hatás
Ez a szabályzatdefiníció ellenőrzi, hogy a tagName paraméterben definiált címke létezik-e a kiértékelt erőforráson. Ha a címke még nem létezik, a módosítási effektus aktiválódik, hogy hozzáadja a címkét a tagValue paraméter értékével.
{
"properties": {
"displayName": "Add a tag to resource groups",
"policyType": "BuiltIn",
"mode": "All",
"description": "Adds the specified tag and value when any resource group missing this tag is created or updated. Existing resource groups can be remediated by triggering a remediation task. If the tag exists with a different value it will not be changed.",
"metadata": {
"version": "1.0.0",
"category": "Tags"
},
"parameters": {
"tagName": {
"type": "String",
"metadata": {
"displayName": "Tag Name",
"description": "Name of the tag, such as 'environment'"
}
},
"tagValue": {
"type": "String",
"metadata": {
"displayName": "Tag Value",
"description": "Value of the tag, such as 'production'"
}
}
},
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "[concat('tags[', parameters('tagName'), ']')]",
"exists": "false"
}
]
},
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [{
"operation": "add",
"field": "[concat('tags[', parameters('tagName'), ']')]",
"value": "[parameters('tagValue')]"
}]
}
}
}
}
}
1. minta: Magyarázat
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [{
"operation": "add",
"field": "[concat('tags[', parameters('tagName'), ']')]",
"value": "[parameters('tagValue')]"
}]
}
A módosítási effektushoz szükség van a policyRule.then.details blokkra, amely meghatározza a roleDefinitionIds és a műveleteket. Ezek a paraméterek tájékoztatják Azure Policy, hogy milyen szerepkörökre van szükség a címke hozzáadásához és az erőforrás szervizeléséhez, és hogy melyik módosítási műveletet kell használni. Ebben a példában a címke és az érték beállításához a hozzáadási műveletet és a paramétereket használjuk.
2. minta: Összetett hatás
Ez a szabályzatdefiníció naplóz minden virtuális gépet, ha a paraméter közzétevőjében és típusában definiált bővítmény nem létezik. Az auditIfNotExists használatával ellenőrzi a virtuális géphez kapcsolódó erőforrást, és ellenőrzi, hogy létezik-e olyan példány, amely megfelel a megadott paramétereknek. Ez a példa ellenőrzi a bővítmények típusát.
{
"type": "Microsoft.Authorization/policyDefinitions",
"name": "audit-vm-extension",
"properties": {
"displayName": "Audit if extension does not exist",
"description": "This policy audits if a required extension doesn't exist.",
"parameters": {
"publisher": {
"type": "String",
"metadata": {
"description": "The publisher of the extension",
"displayName": "Extension Publisher"
}
},
"type": {
"type": "String",
"metadata": {
"description": "The type of the extension",
"displayName": "Extension Type"
}
}
},
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
{
"field": "Microsoft.Compute/imagePublisher",
"in": [
"MicrosoftWindowsServer"
]
},
{
"field": "Microsoft.Compute/imageOffer",
"in": [
"WindowsServer"
]
}
]
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Compute/virtualMachines/extensions",
"existenceCondition": {
"allOf": [{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "[parameters('publisher')]"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/type",
"equals": "[parameters('type')]"
}
]
}
}
}
}
}
}
2. minta: Magyarázat
"details": {
"type": "Microsoft.Compute/virtualMachines/extensions",
"existenceCondition": {
"allOf": [{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "[parameters('publisher')]"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/type",
"equals": "[parameters('type')]"
}
]
}
}
Az auditIfNotExists effektushoz a policyRule.then.details blokkra van szükség egy típus és a keresendő existenceCondition definiálásához. Az existenceCondition szabályzatnyelvi elemeket, például logikai operátorokat használ annak meghatározásához, hogy létezik-e egyező kapcsolódó erőforrás. Ebben a példában az egyes aliasok által ellenőrzött értékek paraméterekben vannak meghatározva.
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.