Azure-beleidspatroon: effectenAzure Policy pattern: effects

Azure Policy heeft een aantal effecten die bepalen hoe de service reageert op niet-compatibele resources.Azure Policy has a number of effects that determine how the service reacts to non-compliant resources. Sommige effecten zijn eenvoudig en vereisen geen extra eigenschappen in de beleidsdefinitie, terwijl andere verschillende eigenschappen vereisen.Some effects are simple and require no additional properties in the policy definition while others require several properties.

Voorbeeld 1: Eenvoudig effectSample 1: Simple effect

Met deze beleidsdefinitie wordt gecontroleerd of de tag die is gedefinieerd in parametertagName bestaat op de geƫvalueerde resource.This policy definition checks to see if the tag defined in parameter tagName exists on the evaluated resource. Als de tag nog niet bestaat, wordt het wijzigingseffect geactiveerd om de tag toe te voegen met de waarde in parametertagValue.If the tag doesn't yet exist, the modify effect is triggered to add the tag with the value in parameter tagValue.

{
   "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')]"
                   }]
               }
           }
       }
   }
}

Voorbeeld 1: UitlegSample 1: Explanation

"effect": "modify",
"details": {
   "roleDefinitionIds": [
       "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
   ],
   "operations": [{
       "operation": "add",
       "field": "[concat('tags[', parameters('tagName'), ']')]",
       "value": "[parameters('tagValue')]"
   }]
}

Voor een wijzigingseffect is het blok policyRule.then.details vereist dat roleDefinitionIds en operations definieert.A modify effect requires the policyRule.then.details block that defines roleDefinitionIds and operations. Deze parameters informeren Azure Policy welke rollen nodig zijn om de tag toe te voegen en de resource te herstellen en die de bewerking wijzigen om uit te voeren.These parameters inform Azure Policy what roles are needed to add the tag and remediate the resource and which modify operation to perform. In dit voorbeeld wordt de bewerking toegevoegd en worden de parameters gebruikt om de tag en de waarde ervan in te stellen.In this example, the operation is add and the parameters are used to set the tag and its value.

Voorbeeld 2: Complex effectSample 2: Complex effect

Deze beleidsdefinitie controleert elke virtuele machine voor wanneer een extensie, gedefinieerd in parameters uitgever en type, niet bestaat.This policy definition audits each virtual machine for when an extension, defined in parameters publisher and type, doesn't exist. Het maakt gebruik van auditIfNotExists om een resource met betrekking tot de virtuele machine te controleren om te zien of er een instantie bestaat die overeenkomt met de gedefinieerde parameters.It uses auditIfNotExists to check a resource related to the virtual machine to see if an instance exists that matches the defined parameters. In dit voorbeeld wordt het type extensies gecontroleerd.This example checks the extensions type.

{
   "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')]"
                           }
                       ]
                   }
               }
           }
       }
   }
}

Voorbeeld 2: UitlegSample 2: Explanation

"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')]"
           }
       ]
   }
}

Een auditIfNotExists effect vereist de policyRule.then.details blok om zowel een type als het bestaan te definiƫrenVoorwaarde om naar te zoeken.An auditIfNotExists effect requires the policyRule.then.details block to define both a type and the existenceCondition to look for. Het bestaanVoorwaarde gebruikt beleidstaalelementen, zoals logische operatoren,om te bepalen of er een overeenkomende gerelateerde resource bestaat.The existenceCondition uses policy language elements, such as logical operators, to determine if a matching related resource exists. In dit voorbeeld worden de waarden die voor elke alias worden gecontroleerd, gedefinieerd in parameters.In this example, the values checked against each alias are defined in parameters.

Volgende stappenNext steps