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