Structuur van Azure-beleidsdefinitiesAzure Policy definition structure

Azure Policy legt conventies voor resources vast.Azure Policy establishes conventions for resources. Beleids definities beschrijven de nalevings voorwaarden voor bronnen en het effect dat moet worden genomen als aan een voor waarde wordt voldaan.Policy definitions describe resource compliance conditions and the effect to take if a condition is met. Met een voor waarde wordt een resource-eigenschaps veld of een waarde naar een vereiste waarde vergeleken.A condition compares a resource property field or a value to a required value. Resource-eigenschaps velden worden geopend met behulp van aliassen.Resource property fields are accessed by using aliases. Wanneer een resource-eigenschaps veld een matrix is, kan een speciale matrix alias worden gebruikt om waarden van alle matrix leden te selecteren en een voor waarde toe te passen op elk van deze elementen.When a resource property field is an array, a special array alias can be used to select values from all array members and apply a condition to each one. Meer informatie over voor waarden.Learn more about conditions.

Als u conventies definieert, kunt u kosten besparen en uw resources eenvoudiger beheren.By defining conventions, you can control costs and more easily manage your resources. U kunt bijvoorbeeld opgeven dat alleen bepaalde typen virtuele machines zijn toegestaan.For example, you can specify that only certain types of virtual machines are allowed. Of u kunt vereisen dat resources een bepaalde tag hebben.Or, you can require that resources have a particular tag. Beleids toewijzingen worden overgenomen door onderliggende resources.Policy assignments are inherited by child resources. Als een beleids toewijzing wordt toegepast op een resource groep, is deze van toepassing op alle resources in die resource groep.If a policy assignment is applied to a resource group, it's applicable to all the resources in that resource group.

Het schema voor de beleids definitie policyRule wordt hier gevonden: https://schema.management.azure.com/schemas/2019-09-01/policyDefinition.jsonThe policy definition policyRule schema is found here: https://schema.management.azure.com/schemas/2019-09-01/policyDefinition.json

U gebruikt JSON om een beleids definitie te maken.You use JSON to create a policy definition. De beleids definitie bevat elementen voor:The policy definition contains elements for:

  • weergave naamdisplay name
  • beschrijvingdescription
  • modemode
  • metagegevensmetadata
  • parametersparameters
  • beleids regelpolicy rule
    • logische evaluatielogical evaluation
    • effecteffect

In de volgende JSON wordt bijvoorbeeld een beleid weer gegeven dat de implementatie van resources beperkt:For example, the following JSON shows a policy that limits where resources are deployed:

{
    "properties": {
        "displayName": "Allowed locations",
        "description": "This policy enables you to restrict the locations your organization can specify when deploying resources.",
        "mode": "Indexed",
        "metadata": {
            "version": "1.0.0",
            "category": "Locations"
        },
        "parameters": {
            "allowedLocations": {
                "type": "array",
                "metadata": {
                    "description": "The list of locations that can be specified when deploying resources",
                    "strongType": "location",
                    "displayName": "Allowed locations"
                },
                "defaultValue": [ "westus2" ]
            }
        },
        "policyRule": {
            "if": {
                "not": {
                    "field": "location",
                    "in": "[parameters('allowedLocations')]"
                }
            },
            "then": {
                "effect": "deny"
            }
        }
    }
}

Azure Policy ingebouwde toepassingen en patronen bevinden zich op voor beelden van Azure Policy.Azure Policy built-ins and patterns are at Azure Policy samples.

Weergave naam en beschrijvingDisplay name and description

U gebruikt DisplayName en Beschrijving om de beleids definitie te identificeren en context op te geven wanneer deze wordt gebruikt.You use displayName and description to identify the policy definition and provide context for when it's used. DisplayName heeft een maximale lengte van 128 tekens en een Beschrijving van Maxi maal 512 tekens.displayName has a maximum length of 128 characters and description a maximum length of 512 characters.

Notitie

Tijdens het maken of bijwerken van een beleids definitie, de id, het type en de naam worden gedefinieerd door de Eigenschappen extern van de JSON en zijn deze niet nodig in het JSON-bestand.During the creation or updating of a policy definition, id, type, and name are defined by properties external to the JSON and aren't necessary in the JSON file. Het ophalen van de beleids definitie via SDK retourneert de eigenschappen id, type en naam als onderdeel van de JSON, maar elk is een alleen-lezen informatie met betrekking tot de beleids definitie.Fetching the policy definition via SDK returns the id, type, and name properties as part of the JSON, but each are read-only information related to the policy definition.

TypeType

Hoewel de eigenschap type niet kan worden ingesteld, zijn er drie waarden die worden geretourneerd door SDK en zichtbaar zijn in de portal:While the type property can't be set, there are three values that are returned by SDK and visible in the portal:

  • Builtin: Deze beleids definities worden door micro soft verschaft en onderhouden.Builtin: These policy definitions are provided and maintained by Microsoft.
  • Custom: Alle beleids definities die zijn gemaakt door klanten hebben deze waarde.Custom: All policy definitions created by customers have this value.
  • Static: Geeft een definitie van een regelgevings nalevings beleid aan bij micro soft- eigendom.Static: Indicates a Regulatory Compliance policy definition with Microsoft Ownership. De compliantie resultaten voor deze beleids definities zijn de resultaten van controles van derden op micro soft-infra structuur.The compliance results for these policy definitions are the results of third-party audits on Microsoft infrastructure. In de Azure Portal wordt deze waarde soms weer gegeven als beheerd door micro soft.In the Azure portal, this value is sometimes displayed as Microsoft managed. Zie gedeelde verantwoordelijkheid in de Cloudvoor meer informatie.For more information, see Shared responsibility in the cloud.

ModusMode

De modus is geconfigureerd, afhankelijk van of het beleid is gericht op een Azure Resource Manager eigenschap of een bron provider eigenschap.Mode is configured depending on if the policy is targeting an Azure Resource Manager property or a Resource Provider property.

Resource Manager-modiResource Manager modes

De modus bepaalt welke resource typen worden geëvalueerd voor een beleids definitie.The mode determines which resource types are evaluated for a policy definition. De ondersteunde modi zijn:The supported modes are:

  • all: resource groepen, abonnementen en alle resource typen evaluerenall: evaluate resource groups, subscriptions, and all resource types
  • indexed: alleen resource typen evalueren die ondersteuning bieden voor labels en locatiesindexed: only evaluate resource types that support tags and location

Resource Microsoft.Network/routeTables ondersteunt bijvoorbeeld tags en locatie en wordt in beide modi geëvalueerd.For example, resource Microsoft.Network/routeTables supports tags and location and is evaluated in both modes. De resource Microsoft.Network/routeTables/routes kan echter niet worden gelabeld en wordt niet geëvalueerd in de Indexed modus.However, resource Microsoft.Network/routeTables/routes can't be tagged and isn't evaluated in Indexed mode.

U wordt aangeraden de modus all in de meeste gevallen in te stellen.We recommend that you set mode to all in most cases. Alle beleids definities die via de portal zijn gemaakt, maken gebruik van de all modus.All policy definitions created through the portal use the all mode. Als u Power shell of Azure CLI gebruikt, kunt u de para meter mode hand matig opgeven.If you use PowerShell or Azure CLI, you can specify the mode parameter manually. Als de beleids definitie geen modus waarde bevat, wordt standaard all in azure PowerShell en naar null in azure cli.If the policy definition doesn't include a mode value, it defaults to all in Azure PowerShell and to null in Azure CLI. Een null modus is dezelfde als die gebruikt indexed om achterwaartse compatibiliteit te ondersteunen.A null mode is the same as using indexed to support backwards compatibility.

indexed moet worden gebruikt bij het maken van beleids regels voor het afdwingen van tags of locaties.indexed should be used when creating policies that enforce tags or locations. Hoewel dit niet vereist is, voor komt u dat resources die tags en locaties ondersteunen, niet kunnen worden weer gegeven als niet-compatibel in de nalevings resultaten.While not required, it prevents resources that don't support tags and locations from showing up as non-compliant in the compliance results. De uitzonde ring is resource groepen en abonnementen.The exception is resource groups and subscriptions. Met beleids definities die locatie of tags voor een resource groep of-abonnement afdwingen, moet u de modus instellen op all en het doel Microsoft.Resources/subscriptions/resourceGroups Microsoft.Resources/subscriptions opgeven.Policy definitions that enforce location or tags on a resource group or subscription should set mode to all and specifically target the Microsoft.Resources/subscriptions/resourceGroups or Microsoft.Resources/subscriptions type. Zie voor een voor beeld patroon: Labels-voor beeld #1.For an example, see Pattern: Tags - Sample #1. Zie tag-ondersteuning voor Azure-resourcesvoor een lijst met resources die Tags ondersteunen.For a list of resources that support tags, see Tag support for Azure resources.

Resource provider modiResource Provider modes

De volgende resource provider modus wordt volledig ondersteund:The following Resource Provider mode is fully supported:

  • Microsoft.Kubernetes.Data voor het beheren van uw Kubernetes-clusters in of uit Azure.Microsoft.Kubernetes.Data for managing your Kubernetes clusters on or off Azure. Definities die gebruikmaken van deze resource provider modus, gebruiken effecten controleren, weigeren en uitgeschakeld.Definitions using this Resource Provider mode use effects audit, deny, and disabled. Het gebruik van het EnforceOPAConstraint -effect is afgeschaft.Use of the EnforceOPAConstraint effect is deprecated.

De volgende resource provider modi worden momenteel ondersteund als een Preview:The following Resource Provider modes are currently supported as a preview:

Notitie

De modi van de resource provider ondersteunen alleen ingebouwde beleids definities en bieden geen ondersteuning voor uitzonde ringen.Resource Provider modes only support built-in policy definitions and don't support exemptions.

MetagegevensMetadata

De optionele metadata eigenschap bevat informatie over de beleids definitie.The optional metadata property stores information about the policy definition. Klanten kunnen alle eigenschappen en waarden definiëren die van toepassing zijn op hun organisatie in metadata .Customers can define any properties and values useful to their organization in metadata. Er zijn echter enkele algemene eigenschappen die worden gebruikt door Azure Policy en in ingebouwde modules. Elke metadata eigenschap heeft een limiet van 1024 tekens.However, there are some common properties used by Azure Policy and in built-ins. Each metadata property has a limit of 1024 characters.

Algemene eigenschappen van meta gegevensCommon metadata properties

  • version (teken reeks): houdt informatie bij over de versie van de inhoud van een beleids definitie.version (string): Tracks details about the version of the contents of a policy definition.
  • category (teken reeks): bepaalt onder welke categorie in Azure Portal de beleids definitie wordt weer gegeven.category (string): Determines under which category in Azure portal the policy definition is displayed.
  • preview (Booleaans): de vlag True of False voor als de beleids definitie Preview is.preview (boolean): True or false flag for if the policy definition is preview.
  • deprecated (Booleaans): de vlag True of False voor als de beleids definitie is gemarkeerd als afgeschaft.deprecated (boolean): True or false flag for if the policy definition has been marked as deprecated.

Notitie

De Azure Policy-service gebruikt version , preview en deprecated Eigenschappen om het niveau van de wijziging in een ingebouwde beleids definitie of-initiatief en-status over te brengen.The Azure Policy service uses version, preview, and deprecated properties to convey level of change to a built-in policy definition or initiative and state. De indeling van version is: {Major}.{Minor}.{Patch} .The format of version is: {Major}.{Minor}.{Patch}. Specifieke statussen, zoals afgeschaft of Preview, worden toegevoegd aan de version eigenschap of een andere eigenschap als een Booleaanse waarde.Specific states, such as deprecated or preview, are appended to the version property or in another property as a boolean. Zie ingebouwde versie beheervoor meer informatie over de manier waarop Azure Policy ingebouwde versies.For more information about the way Azure Policy versions built-ins, see Built-in versioning.

ParametersParameters

Met para meters kunt u het beleids beheer vereenvoudigen door het aantal beleids definities te verminderen.Parameters help simplify your policy management by reducing the number of policy definitions. U kunt para meters zien zoals de velden in een formulier – name , address ,, city , state .Think of parameters like the fields on a form – name, address, city, state. Deze para meters blijven altijd hetzelfde, maar hun waarden worden gewijzigd op basis van de persoon die het formulier invult.These parameters always stay the same, however their values change based on the individual filling out the form. Para meters werken op dezelfde manier als wanneer u beleid bouwt.Parameters work the same way when building policies. Door para meters in een beleids definitie op te nemen, kunt u het beleid voor verschillende scenario's gebruiken door verschillende waarden te gebruiken.By including parameters in a policy definition, you can reuse that policy for different scenarios by using different values.

Notitie

Para meters kunnen worden toegevoegd aan een bestaande en toegewezen definitie.Parameters may be added to an existing and assigned definition. De nieuwe para meter moet de eigenschap DefaultValue bevatten.The new parameter must include the defaultValue property. Dit voor komt dat bestaande toewijzingen van het beleid of initiatief indirect ongeldig worden gemaakt.This prevents existing assignments of the policy or initiative from indirectly being made invalid.

Parameter eigenschappenParameter properties

Een para meter heeft de volgende eigenschappen die worden gebruikt in de beleids definitie:A parameter has the following properties that are used in the policy definition:

  • name: De naam van de para meter.name: The name of your parameter. Wordt gebruikt door de parameters implementatie functie binnen de beleids regel.Used by the parameters deployment function within the policy rule. Zie een parameter waarde gebruikenvoor meer informatie.For more information, see using a parameter value.
  • type: Bepaalt of de para meter een teken reeks, een matrix, een object, een Booleaanse waarde, een geheel getal, een float of een datum/tijd is.type: Determines if the parameter is a string, array, object, boolean, integer, float, or datetime.
  • metadata: Definieert subeigenschappen die voornamelijk worden gebruikt door de Azure Portal om gebruikers vriendelijke informatie weer te geven:metadata: Defines subproperties primarily used by the Azure portal to display user-friendly information:
    • description: De uitleg van het gebruik van de para meter voor.description: The explanation of what the parameter is used for. Kan worden gebruikt om voor beelden te bieden van acceptabele waarden.Can be used to provide examples of acceptable values.
    • displayName: De beschrijvende naam die wordt weer gegeven in de portal voor de para meter.displayName: The friendly name shown in the portal for the parameter.
    • strongType: (Optioneel) gebruikt bij het toewijzen van de beleids definitie via de portal.strongType: (Optional) Used when assigning the policy definition through the portal. Biedt een context bewuste lijst.Provides a context aware list. Zie strongTypevoor meer informatie.For more information, see strongType.
    • assignPermissions: (Optioneel) Stel in op waar als u wilt dat Azure Portal roltoewijzingen tijdens beleids toewijzing wilt maken.assignPermissions: (Optional) Set as true to have Azure portal create role assignments during policy assignment. Deze eigenschap is handig voor het geval u machtigingen wilt toewijzen buiten het toewijzings bereik.This property is useful in case you wish to assign permissions outside the assignment scope. Er is één roltoewijzing per roldefinitie in het beleid (of per functie definitie in alle beleids regels in het initiatief).There's one role assignment per role definition in the policy (or per role definition in all of the policies in the initiative). De parameter waarde moet een geldige resource of een geldig bereik zijn.The parameter value must be a valid resource or scope.
  • defaultValue: (Optioneel) Hiermee stelt u de waarde van de para meter in een toewijzing in als er geen waarde is opgegeven.defaultValue: (Optional) Sets the value of the parameter in an assignment if no value is given. Vereist bij het bijwerken van een bestaande beleids definitie die is toegewezen.Required when updating an existing policy definition that is assigned.
  • allowedValues: (Optioneel) biedt een matrix van waarden die door de para meter worden geaccepteerd tijdens de toewijzing.allowedValues: (Optional) Provides an array of values that the parameter accepts during assignment.

U kunt bijvoorbeeld een beleids definitie definiëren om de locaties te beperken waar resources kunnen worden geïmplementeerd.As an example, you could define a policy definition to limit the locations where resources can be deployed. Een para meter voor die beleids definitie kan allowedLocations zijn.A parameter for that policy definition could be allowedLocations. Deze para meter wordt gebruikt door elke toewijzing van de beleids definitie om de geaccepteerde waarden te beperken.This parameter would be used by each assignment of the policy definition to limit the accepted values. Het gebruik van strongType biedt een verbeterde ervaring bij het volt ooien van de toewijzing via de portal:The use of strongType provides an enhanced experience when completing the assignment through the portal:

"parameters": {
    "allowedLocations": {
        "type": "array",
        "metadata": {
            "description": "The list of allowed locations for resources.",
            "displayName": "Allowed locations",
            "strongType": "location"
        },
        "defaultValue": [ "westus2" ],
        "allowedValues": [
            "eastus2",
            "westus2",
            "westus"
        ]
    }
}

Een parameter waarde gebruikenUsing a parameter value

In de beleids regel verwijst u naar para meters met de volgende parameters functie syntaxis:In the policy rule, you reference parameters with the following parameters function syntax:

{
    "field": "location",
    "in": "[parameters('allowedLocations')]"
}

Dit voor beeld verwijst naar de allowedLocations -para meter die is gedemonstreerd in parameter eigenschappen.This sample references the allowedLocations parameter that was demonstrated in parameter properties.

strongTypestrongType

Binnen de metadata eigenschap kunt u strongType gebruiken om een multi-select lijst met opties in de Azure Portal op te geven.Within the metadata property, you can use strongType to provide a multi-select list of options within the Azure portal. strongType kan een ondersteund resource type of een toegestane waarde zijn.strongType can be a supported resource type or an allowed value. Als u wilt bepalen of een resource type geldig is voor strongType, gebruikt u Get-AzResourceProvider.To determine if a resource type is valid for strongType, use Get-AzResourceProvider. De indeling voor een resource type strongType is <Resource Provider>/<Resource Type> .The format for a resource type strongType is <Resource Provider>/<Resource Type>. Bijvoorbeeld Microsoft.Network/virtualNetworks/subnets.For example, Microsoft.Network/virtualNetworks/subnets.

Sommige resource typen die niet worden geretourneerd door Get-AzResourceProvider worden ondersteund.Some resource types not returned by Get-AzResourceProvider are supported. Deze typen zijn:Those types are:

  • Microsoft.RecoveryServices/vaults/backupPolicies

Het niet- bron type toegestane waarden voor strongType zijn:The non resource type allowed values for strongType are:

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Locatie van definitieDefinition location

Tijdens het maken van een initiatief of beleid is het nood zakelijk om de definitie locatie op te geven.While creating an initiative or policy, it's necessary to specify the definition location. De definitie locatie moet een beheer groep of een abonnement zijn.The definition location must be a management group or a subscription. Deze locatie bepaalt het bereik waaraan het initiatief of beleid kan worden toegewezen.This location determines the scope to which the initiative or policy can be assigned. Resources moeten rechtstreekse leden zijn van of onderliggende items binnen de hiërarchie van de definitie locatie naar het doel voor toewijzing.Resources must be direct members of or children within the hierarchy of the definition location to target for assignment.

Als de definitie locatie een:If the definition location is a:

  • Alleen voor abonnements resources binnen dit abonnement kan de beleids definitie worden toegewezen.Subscription - Only resources within that subscription can be assigned the policy definition.
  • Beheer groep -alleen resources binnen onderliggende beheer groepen en onderliggende abonnementen kunnen worden toegewezen aan de beleids definitie.Management group - Only resources within child management groups and child subscriptions can be assigned the policy definition. Als u van plan bent de beleids definitie toe te passen op verschillende abonnementen, moet de locatie een beheer groep zijn die elk abonnement bevat.If you plan to apply the policy definition to several subscriptions, the location must be a management group that contains each subscription.

Zie bereik begrijpen in azure Policyvoor meer informatie.For more information, see Understand scope in Azure Policy.

BeleidsregelPolicy rule

De beleids regel bestaat uit als en vervolgens blokken.The policy rule consists of If and Then blocks. In het if -blok definieert u een of meer voor waarden die aangeven wanneer het beleid wordt afgedwongen.In the If block, you define one or more conditions that specify when the policy is enforced. U kunt logische Opera tors Toep assen op deze voor waarden om het scenario voor een beleid precies te definiëren.You can apply logical operators to these conditions to precisely define the scenario for a policy.

In de blok kering definieert u het effect dat optreedt wanneer aan de voor waarden voor de if wordt voldaan.In the Then block, you define the effect that happens when the If conditions are fulfilled.

{
    "if": {
        <condition> | <logical operator>
    },
    "then": {
        "effect": "deny | audit | modify | append | auditIfNotExists | deployIfNotExists | disabled"
    }
}

Logische operatorsLogical operators

Ondersteunde logische Opera tors zijn:Supported logical operators are:

  • "not": {condition or operator}
  • "allOf": [{condition or operator},{condition or operator}]
  • "anyOf": [{condition or operator},{condition or operator}]

De syntaxis not keert het resultaat van de voor waarde.The not syntax inverts the result of the condition. De overzet -syntaxis (vergelijkbaar met de logische en -bewerking) vereist dat alle voor waarden waar zijn.The allOf syntax (similar to the logical And operation) requires all conditions to be true. Voor de syntaxis van de anyOf (vergelijkbaar met de logische of bewerking) moeten een of meer voor waarden waar zijn.The anyOf syntax (similar to the logical Or operation) requires one or more conditions to be true.

U kunt logische Opera tors nesten.You can nest logical operators. In het volgende voor beeld ziet u een niet -bewerking die is genest in een overzet -bewerking.The following example shows a not operation that is nested within an allOf operation.

"if": {
    "allOf": [{
            "not": {
                "field": "tags",
                "containsKey": "application"
            }
        },
        {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
        }
    ]
},

VoorwaardenConditions

Met een voor waarde wordt geëvalueerd of een waarde aan bepaalde criteria voldoet.A condition evaluates whether a value meets certain criteria. De ondersteunde voor waarden zijn:The supported conditions are:

  • "equals": "stringValue"
  • "notEquals": "stringValue"
  • "like": "stringValue"
  • "notLike": "stringValue"
  • "match": "stringValue"
  • "matchInsensitively": "stringValue"
  • "notMatch": "stringValue"
  • "notMatchInsensitively": "stringValue"
  • "contains": "stringValue"
  • "notContains": "stringValue"
  • "in": ["stringValue1","stringValue2"]
  • "notIn": ["stringValue1","stringValue2"]
  • "containsKey": "keyName"
  • "notContainsKey": "keyName"
  • "less": "dateValue" | "less": "stringValue" | "less": intValue
  • "lessOrEquals": "dateValue" | "lessOrEquals": "stringValue" | "lessOrEquals": intValue
  • "greater": "dateValue" | "greater": "stringValue" | "greater": intValue
  • "greaterOrEquals": "dateValue" | "greaterOrEquals": "stringValue" | "greaterOrEquals": intValue"greaterOrEquals": "dateValue" | "greaterOrEquals": "stringValue" | "greaterOrEquals": intValue
  • "exists": "bool"

Voor minder, lessOrEquals, meer en greaterOrEquals als het eigenschaps type niet overeenkomt met het type voor waarde, wordt een fout gegenereerd.For less, lessOrEquals, greater, and greaterOrEquals, if the property type doesn't match the condition type, an error is thrown. Teken reeks vergelijkingen worden gemaakt met InvariantCultureIgnoreCase .String comparisons are made using InvariantCultureIgnoreCase.

Wanneer u de voor waarden like en notLike gebruikt, geeft u een Joker teken * op in de waarde.When using the like and notLike conditions, you provide a wildcard * in the value. De waarde mag niet meer dan één Joker teken bevatten * .The value shouldn't have more than one wildcard *.

Wanneer u de voor waarden match en notMatch gebruikt, moet # u een cijfer, voor een letter, overeenkomen met een ? . wille keurig teken en elk ander teken dat overeenkomt met het werkelijke teken.When using the match and notMatch conditions, provide # to match a digit, ? for a letter, . to match any character, and any other character to match that actual character. Identieke en notMatch zijn hoofdletter gevoelig. alle andere voor waarden die een stringValue evalueren, zijn niet hoofdletter gevoelig.While match and notMatch are case-sensitive, all other conditions that evaluate a stringValue are case-insensitive. Hoofdletter gevoelige alternatieven zijn beschikbaar in matchInsensitively en notMatchInsensitively.Case-insensitive alternatives are available in matchInsensitively and notMatchInsensitively.

VeldenFields

Voor waarden die evalueren of de waarden van eigenschappen in de resource-aanvraag lading voldoen aan bepaalde criteria kunnen worden gevormd met behulp van een veld expressie.Conditions that evaluate whether the values of properties in the resource request payload meet certain criteria can be formed using a field expression. De volgende velden worden ondersteund:The following fields are supported:

  • name
  • fullName
    • Retourneert de volledige naam van de resource.Returns the full name of the resource. De volledige naam van een resource is de resource naam die wordt voorafgegaan door bovenliggende resource namen (bijvoorbeeld ' mijn server/myDatabase ').The full name of a resource is the resource name prepended by any parent resource names (for example "myServer/myDatabase").
  • kind
  • type
  • location
    • Locatie velden worden genormaliseerd ter ondersteuning van verschillende indelingen.Location fields are normalized to support various formats. East US 2Wordt bijvoorbeeld beschouwd als gelijk aan eastus2 .For example, East US 2 is considered equal to eastus2.
    • Gebruik Global voor resources die de locatie neutraal.Use global for resources that are location agnostic.
  • id
    • Retourneert de resource-ID van de resource die wordt geëvalueerd.Returns the resource ID of the resource that is being evaluated.
    • Voorbeeld: /subscriptions/06be863d-0996-4d56-be22-384767287aa2/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myVaultExample: /subscriptions/06be863d-0996-4d56-be22-384767287aa2/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myVault
  • identity.type
  • tags
  • tags['<tagName>']
    • De syntaxis van het haakje ondersteunt label namen met lees tekens zoals een afbreek streepje, een punt of een spatie.This bracket syntax supports tag names that have punctuation such as a hyphen, period, or space.
    • Waar de <tagName> naam van de tag is voor het valideren van de voor waarde voor.Where <tagName> is the name of the tag to validate the condition for.
    • Voor beelden: tags['Acct.CostCenter'] waarbij acct. CostCenter de naam van de tag is.Examples: tags['Acct.CostCenter'] where Acct.CostCenter is the name of the tag.
  • tags['''<tagName>''']
    • De syntaxis van het haakje ondersteunt label namen met apostrofs in het teken met dubbele apostrofs.This bracket syntax supports tag names that have apostrophes in it by escaping with double apostrophes.
    • Waarbij ' <tagName> ' de naam van het label is voor het valideren van de voor waarde voor.Where '<tagName>' is the name of the tag to validate the condition for.
    • Voor beeld: tags['''My.Apostrophe.Tag'''] waarbij ' My. apostrof. tag ' de naam van de tag is.Example: tags['''My.Apostrophe.Tag'''] where 'My.Apostrophe.Tag' is the name of the tag.
  • eigenschaps aliassen: Zie aliassenvoor een lijst.property aliases - for a list, see Aliases.

Notitie

tags.<tagName>, tags[tagName] en tags[tag.with.dots] zijn nog steeds acceptabele manieren om een label veld te declareren.tags.<tagName>, tags[tagName], and tags[tag.with.dots] are still acceptable ways of declaring a tags field. De voorkeurs expressies zijn echter die in de bovenstaande lijst.However, the preferred expressions are those listed above.

Notitie

In veld expressies die verwijzen naar een [ * ] alias, wordt elk element in de matrix afzonderlijk geëvalueerd met logische en tussen elementen.In field expressions referring to [*] alias, each element in the array is evaluated individually with logical and between elements. Zie verwijzing naar de bron eigenschappenvan een matrix voor meer informatie.For more information, see Referencing array resource properties.

Tags gebruiken met para metersUse tags with parameters

Een parameter waarde kan worden door gegeven aan een label veld.A parameter value can be passed to a tag field. Door een para meter door te geven aan een label veld, verhoogt u de flexibiliteit van de beleids definitie tijdens beleids toewijzing.Passing a parameter to a tag field increases the flexibility of the policy definition during policy assignment.

In het volgende voor beeld concat wordt gebruikt om een label veld te maken voor de tag met de naam de waarde van de para meter tagName .In the following example, concat is used to create a tags field lookup for the tag named the value of the tagName parameter. Als deze tag niet bestaat, wordt het wijzigings effect gebruikt om de tag toe te voegen met de waarde van dezelfde benoemde tag die is ingesteld voor de bovenliggende resource groep van de gecontroleerde resources met behulp van de resourcegroup() functie lookup.If that tag doesn't exist, the modify effect is used to add the tag using the value of the same named tag set on the audited resources parent resource group by using the resourcegroup() lookup function.

{
    "if": {
        "field": "[concat('tags[', parameters('tagName'), ']')]",
        "exists": "false"
    },
    "then": {
        "effect": "modify",
        "details": {
            "operations": [{
                "operation": "add",
                "field": "[concat('tags[', parameters('tagName'), ']')]",
                "value": "[resourcegroup().tags[parameters('tagName')]]"
            }],
            "roleDefinitionIds": [
                "/providers/microsoft.authorization/roleDefinitions/4a9ae827-6dc8-4573-8ac7-8239d42aa03f"
            ]
        }
    }
}

WaardeValue

Voor waarden die evalueren of een waarde aan bepaalde criteria voldoet, kunnen worden gevormd met behulp van een waarde -expressie.Conditions that evaluate whether a value meets certain criteria can be formed using a value expression. Waarden kunnen literals, de waarden van para metersof de geretourneerde waarden van ondersteunde sjabloon functieszijn.Values can be literals, the values of parameters, or the returned values of any supported template functions.

Waarschuwing

Als het resultaat van een sjabloonfunctie een fout is, mislukt de beleidsevaluatie.If the result of a template function is an error, policy evaluation fails. Een mislukte evaluatie is een impliciete weigering.A failed evaluation is an implicit deny. Zie sjabloonfouten vermijden voor meer informatie.For more information, see avoiding template failures. Gebruik enforcementMode van DoNotEnforce om de impact van een mislukte evaluatie op nieuwe of bijgewerkte resources te voor komen tijdens het testen en valideren van een nieuwe beleids definitie.Use enforcementMode of DoNotEnforce to prevent impact of a failed evaluation on new or updated resources while testing and validating a new policy definition.

Voor beelden van waardenValue examples

In dit voor beeld van een beleids regel wordt de waarde gebruikt om het resultaat van de resourceGroup() functie en de eigenschap geretourneerde naam te vergelijken met een like -voor waarde van *netrg .This policy rule example uses value to compare the result of the resourceGroup() function and the returned name property to a like condition of *netrg. De regel weigert resources die niet van het Microsoft.Network/* type zijn in een resource groep waarvan de naam eindigt op *netrg .The rule denies any resource not of the Microsoft.Network/* type in any resource group whose name ends in *netrg.

{
    "if": {
        "allOf": [{
                "value": "[resourceGroup().name]",
                "like": "*netrg"
            },
            {
                "field": "type",
                "notLike": "Microsoft.Network/*"
            }
        ]
    },
    "then": {
        "effect": "deny"
    }
}

Dit voor beeld van een beleids regel gebruikt een waarde om te controleren of het resultaat van meerdere geneste functies gelijk is aan true .This policy rule example uses value to check if the result of multiple nested functions equals true. De regel weigert een resource die niet ten minste drie tags heeft.The rule denies any resource that doesn't have at least three tags.

{
    "mode": "indexed",
    "policyRule": {
        "if": {
            "value": "[less(length(field('tags')), 3)]",
            "equals": "true"
        },
        "then": {
            "effect": "deny"
        }
    }
}

Storingen in sjablonen voor komenAvoiding template failures

Het gebruik van sjabloon functies in waarde biedt veel complexe geneste functies.The use of template functions in value allows for many complex nested functions. Als het resultaat van een sjabloonfunctie een fout is, mislukt de beleidsevaluatie.If the result of a template function is an error, policy evaluation fails. Een mislukte evaluatie is een impliciete weigering.A failed evaluation is an implicit deny. Een voor beeld van een waarde die mislukt in bepaalde scenario's:An example of a value that fails in certain scenarios:

{
    "policyRule": {
        "if": {
            "value": "[substring(field('name'), 0, 3)]",
            "equals": "abc"
        },
        "then": {
            "effect": "audit"
        }
    }
}

De voorbeeld beleidsregel hierboven maakt gebruik van subtekenreeks () om de eerste drie tekens van de naam te vergelijken met ABC.The example policy rule above uses substring() to compare the first three characters of name to abc. Als de naam korter is dan drie tekens, substring() resulteert de functie in een fout.If name is shorter than three characters, the substring() function results in an error. Als gevolg van deze fout wordt het beleid geweigerd .This error causes the policy to become a deny effect.

Gebruik in plaats daarvan de functie als () om te controleren of de eerste drie tekens van de naam gelijk zijn aan ABC zonder dat een naam die korter is dan drie tekens, een fout veroorzaakt:Instead, use the if() function to check if the first three characters of name equal abc without allowing a name shorter than three characters to cause an error:

{
    "policyRule": {
        "if": {
            "value": "[if(greaterOrEquals(length(field('name')), 3), substring(field('name'), 0, 3), 'not starting with abc')]",
            "equals": "abc"
        },
        "then": {
            "effect": "audit"
        }
    }
}

Met de gereviseerde beleids regel if() controleert u de lengte van de naam voordat u probeert een substring() waarde op te halen die korter is dan drie tekens.With the revised policy rule, if() checks the length of name before trying to get a substring() on a value with fewer than three characters. Als de naam te kort is, wordt de waarde ' niet beginnend met ABC ' geretourneerd in plaats van ABC.If name is too short, the value "not starting with abc" is returned instead and compared to abc. Een resource met een korte naam die niet met ABC begint, mislukt nog steeds de beleids regel, maar veroorzaakt geen fout meer tijdens de evaluatie.A resource with a short name that doesn't begin with abc still fails the policy rule, but no longer causes an error during evaluation.

CountCount

Voor waarden die tellen hoeveel leden van een matrix voldoen aan bepaalde criteria, kunnen worden gevormd met behulp van een Count -expressie.Conditions that count how many members of an array meet certain criteria can be formed using a count expression. Bij algemene scenario's wordt gecontroleerd of ten minste één van ', ' precies één van ', ' alle of ' geen van ' de matrix leden voldoen aan een voor waarde.Common scenarios are checking whether 'at least one of', 'exactly one of', 'all of', or 'none of' the array members satisfy a condition. Met Count wordt elk matrixlid geëvalueerd voor een voorwaarde expressie en worden de werkelijke resultaten opgeteld, die vervolgens worden vergeleken met de expressie operator.Count evaluates each array member for a condition expression and sums the true results, which is then compared to the expression operator.

Aantal veldenField count

Tel hoeveel leden van een matrix in de aanvraag lading voldoen aan een voor waarde-expressie.Count how many members of an array in the request payload satisfy a condition expression. De structuur van expressies voor veld tellingen is:The structure of field count expressions is:

{
    "count": {
        "field": "<[*] alias>",
        "where": {
            /* condition expression */
        }
    },
    "<condition>": "<compare the count of true condition expression array members to this value>"
}

De volgende eigenschappen worden gebruikt met het aantal velden:The following properties are used with field count:

  • Count. Field (vereist): bevat het pad naar de matrix en moet een matrix alias zijn.count.field (required): Contains the path to the array and must be an array alias.
  • Count. where (optioneel): de voor waarde-expressie die afzonderlijk moet worden geëvalueerd voor elk lid van de [ * ] alias matrix count.field .count.where (optional): The condition expression to individually evaluate for each [*] alias array member of count.field. Als deze eigenschap niet is ingevuld, worden alle matrix leden met het pad van ' Field ' geëvalueerd als waar.If this property isn't provided, all array members with the path of 'field' are evaluated to true. Elke voor waarde kan worden gebruikt in deze eigenschap.Any condition can be used inside this property. Logische Opera tors kunnen worden gebruikt in deze eigenschap om complexe evaluatie vereisten te maken.Logical operators can be used inside this property to create complex evaluation requirements.
  • <condition> (vereist): de waarde wordt vergeleken met het aantal items dat aan het aantal is voldaan . where -voor waarde-expressie.<condition> (required): The value is compared to the number of items that met the count.where condition expression. Er moet een numerieke voor waarde worden gebruikt.A numeric condition should be used.

Expressies voor veld tellingen kunnen dezelfde veld matrix Maxi maal drie keer in één policyRule definitie opsommen.Field count expressions can enumerate the same field array up to three times in a single policyRule definition.

Zie verwijzen naar eigenschappen van matrix bronnenvoor meer informatie over het werken met matrix eigenschappen in azure Policy, waaronder gedetailleerde uitleg over het evalueren van de expressie aantal veld tellingen .For more details on how to work with array properties in Azure Policy, including detailed explanation on how the field count expression is evaluated, see Referencing array resource properties.

Aantal waardenValue count

Tel hoeveel leden van een matrix aan een voor waarde voldoen.Count how many members of an array satisfy a condition. De matrix kan een letterlijke matrix of een verwijzing naar een matrix parameterzijn.The array can be a literal array or a reference to array parameter. De structuur van expressies voor aantal waarden is:The structure of value count expressions is:

{
    "count": {
        "value": "<literal array | array parameter reference>",
        "name": "<index name>",
        "where": {
            /* condition expression */
        }
    },
    "<condition>": "<compare the count of true condition expression array members to this value>"
}

De volgende eigenschappen worden gebruikt met het aantal waarden:The following properties are used with value count:

  • aantal. Value (vereist): de matrix die moet worden geëvalueerd.count.value (required): The array to evaluate.
  • Count.name (vereist): de index naam, bestaande uit Engelse letters en cijfers.count.name (required): The index name, composed of English letters and digits. Hiermee wordt een naam gedefinieerd voor de waarde van het matrixlid geëvalueerd in de huidige iteratie.Defines a name for the value of the array member evaluated in the current iteration. De naam wordt gebruikt voor het verwijzen naar de huidige waarde binnen de count.where voor waarde.The name is used for referencing the current value inside the count.where condition. Optioneel wanneer de Count -expressie zich niet in een onderliggend element van een andere Count -expressie bevindt.Optional when the count expression isn't in a child of another count expression. Indien niet opgegeven, wordt de index naam impliciet ingesteld op "default" .When not provided, the index name is implicitly set to "default".
  • Count. where (optioneel): de voor waarde-expressie die afzonderlijk moet worden geëvalueerd voor elk lid van de matrix van count.value .count.where (optional): The condition expression to individually evaluate for each array member of count.value. Als deze eigenschap niet is ingesteld, worden alle matrix leden geëvalueerd als waar.If this property isn't provided, all array members are evaluated to true. Elke voor waarde kan worden gebruikt in deze eigenschap.Any condition can be used inside this property. Logische Opera tors kunnen worden gebruikt in deze eigenschap om complexe evaluatie vereisten te maken.Logical operators can be used inside this property to create complex evaluation requirements. De waarde van het momenteel genummerde matrixlid is toegankelijk door de huidige functie aan te roepen.The value of the currently enumerated array member can be accessed by calling the current function.
  • <condition> (vereist): de waarde wordt vergeleken met het aantal items dat voldoet aan de count.where voor waarde-expressie.<condition> (required): The value is compared to the number of items that met the count.where condition expression. Er moet een numerieke voor waarde worden gebruikt.A numeric condition should be used.

De volgende limieten worden afgedwongen:The following limits are enforced:

  • Maxi maal tien waarden van expressies kunnen worden gebruikt in één policyRule definitie.Up to 10 value count expressions can be used in a single policyRule definition.
  • Elke expressie voor aantal waarden kan maxi maal 100 herhalingen uitvoeren.Each value count expression can perform up to 100 iterations. Dit nummer bevat het aantal iteraties dat wordt uitgevoerd door de expressies voor het aantal bovenliggende waarden .This number includes the number of iterations performed by any parent value count expressions.

De huidige functieThe current function

De current() functie is alleen beschikbaar in de count.where voor waarde.The current() function is only available inside the count.where condition. Het retourneert de waarde van het matrixlid dat momenteel wordt opgesomd door de evaluatie van de telling -expressie.It returns the value of the array member that is currently enumerated by the count expression evaluation.

Gebruik van aantal waardenValue count usage

  • current(<index name defined in count.name>).current(<index name defined in count.name>). Bijvoorbeeld: current('arrayMember').For example: current('arrayMember').
  • current().current(). Alleen toegestaan als de expressie voor aantal waarden geen onderliggend item van een andere Count -expressie is.Allowed only when the value count expression isn't a child of another count expression. Retourneert dezelfde waarde als hierboven.Returns the same value as above.

Als de waarde die door de aanroep wordt geretourneerd een object is, worden eigenschaps-toegangs rechten ondersteund.If the value returned by the call is an object, property accessors are supported. Bijvoorbeeld: current('objectArrayMember').property.For example: current('objectArrayMember').property.

Gebruik van veld aantalField count usage

  • current(<the array alias defined in count.field>).current(<the array alias defined in count.field>). Bijvoorbeeld current('Microsoft.Test/resource/enumeratedArray[*]').For example, current('Microsoft.Test/resource/enumeratedArray[*]').
  • current().current(). Alleen toegestaan als de veld telling expressie geen onderliggend item is van een andere Count -expressie.Allowed only when the field count expression isn't a child of another count expression. Retourneert dezelfde waarde als hierboven.Returns the same value as above.
  • current(<alias of a property of the array member>).current(<alias of a property of the array member>). Bijvoorbeeld current('Microsoft.Test/resource/enumeratedArray[*].property').For example, current('Microsoft.Test/resource/enumeratedArray[*].property').

Voor beelden van veld tellingenField count examples

Voor beeld 1: controleren of een matrix leeg isExample 1: Check if an array is empty

{
    "count": {
        "field": "Microsoft.Network/networkSecurityGroups/securityRules[*]"
    },
    "equals": 0
}

Voor beeld 2: controleren op slechts één matrixlid om te voldoen aan de voor waarde-expressieExample 2: Check for only one array member to meet the condition expression

{
    "count": {
        "field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
        "where": {
            "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].description",
            "equals": "My unique description"
        }
    },
    "equals": 1
}

Voor beeld 3: controleren of er ten minste één matrixlid is om te voldoen aan de voor waarde-expressieExample 3: Check for at least one array member to meet the condition expression

{
    "count": {
        "field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
        "where": {
            "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].description",
            "equals": "My common description"
        }
    },
    "greaterOrEquals": 1
}

Voor beeld 4: controleren of alle leden van een object Matrix voldoen aan de voor waarde-expressieExample 4: Check that all object array members meet the condition expression

{
    "count": {
        "field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
        "where": {
            "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].description",
            "equals": "description"
        }
    },
    "equals": "[length(field('Microsoft.Network/networkSecurityGroups/securityRules[*]'))]"
}

Voor beeld 5: Controleer of ten minste één matrixlid overeenkomt met meerdere eigenschappen in de voor waarde-expressieExample 5: Check that at least one array member matches multiple properties in the condition expression

{
    "count": {
        "field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
        "where": {
            "allOf": [
                {
                    "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
                    "equals": "Inbound"
                },
                {
                    "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
                    "equals": "Allow"
                },
                {
                    "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
                    "equals": "3389"
                }
            ]
        }
    },
    "greater": 0
}

Voor beeld 6: gebruik de current() functie binnen de where voor waarden om toegang te krijgen tot de waarde van het momenteel genummerde matrixlid in een sjabloon functie.Example 6: Use current() function inside the where conditions to access the value of the currently enumerated array member in a template function. Met deze voor waarde wordt gecontroleerd of een virtueel netwerk een adres voorvoegsel bevat dat zich niet onder het bereik 10.0.0.0/24 CIDR bevindt.This condition checks whether a virtual network contains an address prefix that isn't under the 10.0.0.0/24 CIDR range.

{
    "count": {
        "field": "Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]",
        "where": {
          "value": "[ipRangeContains('10.0.0.0/24', current('Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]'))]",
          "equals": false
        }
    },
    "greater": 0
}

Voor beeld 7: gebruik de field() functie binnen de where voor waarden om toegang te krijgen tot de waarde van het momenteel genummerde matrixlid.Example 7: Use field() function inside the where conditions to access the value of the currently enumerated array member. Met deze voor waarde wordt gecontroleerd of een virtueel netwerk een adres voorvoegsel bevat dat zich niet onder het bereik 10.0.0.0/24 CIDR bevindt.This condition checks whether a virtual network contains an address prefix that isn't under the 10.0.0.0/24 CIDR range.

{
    "count": {
        "field": "Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]",
        "where": {
          "value": "[ipRangeContains('10.0.0.0/24', first(field(('Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]')))]",
          "equals": false
        }
    },
    "greater": 0
}

Voor beelden van aantal waardenValue count examples

Voor beeld 1: controleren of de resource naam overeenkomt met een van de opgegeven naam patronen.Example 1: Check if resource name matches any of the given name patterns.

{
    "count": {
        "value": [ "prefix1_*", "prefix2_*" ],
        "name": "pattern",
        "where": {
            "field": "name",
            "like": "[current('pattern')]"
        }
    },
    "greater": 0
}

Voor beeld 2: controleren of de resource naam overeenkomt met een van de opgegeven naam patronen.Example 2: Check if resource name matches any of the given name patterns. De current() functie geeft geen index naam op.The current() function doesn't specify an index name. De uitkomst is hetzelfde als in het vorige voor beeld.The outcome is the same as the previous example.

{
    "count": {
        "value": [ "prefix1_*", "prefix2_*" ],
        "where": {
            "field": "name",
            "like": "[current()]"
        }
    },
    "greater": 0
}

Voor beeld 3: controleren of de resource naam overeenkomt met een van de opgegeven naam patronen die door een matrix parameter worden geleverd.Example 3: Check if resource name matches any of the given name patterns provided by an array parameter.

{
    "count": {
        "value": "[parameters('namePatterns')]",
        "name": "pattern",
        "where": {
            "field": "name",
            "like": "[current('pattern')]"
        }
    },
    "greater": 0
}

Voor beeld 4: Controleer of een van de adres voorvoegsels van het virtuele netwerk niet is opgenomen in de lijst met goedgekeurde voor voegsels.Example 4: Check if any of the virtual network address prefixes isn't under the list of approved prefixes.

{
    "count": {
        "field": "Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]",
        "where": {
            "count": {
                "value": "[parameters('approvedPrefixes')]",
                "name": "approvedPrefix",
                "where": {
                    "value": "[ipRangeContains(current('approvedPrefix'), current('Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]'))]",
                    "equals": true
                },
            },
            "equals": 0
        }
    },
    "greater": 0
}

Voor beeld 5: Controleer of alle gereserveerde NSG-regels zijn gedefinieerd in een NSG.Example 5: Check that all the reserved NSG rules are defined in an NSG. De eigenschappen van de gereserveerde NSG-regels worden gedefinieerd in een matrix parameter met objecten.The properties of the reserved NSG rules are defined in an array parameter containing objects.

Parameter waarde:Parameter value:

[
    {
        "priority": 101,
        "access": "deny",
        "direction": "inbound",
        "destinationPortRange": 22
    },
    {
        "priority": 102,
        "access": "deny",
        "direction": "inbound",
        "destinationPortRange": 3389
    }
]

VerslaggevPolicy:

{
    "count": {
        "value": "[parameters('reservedNsgRules')]",
        "name": "reservedNsgRule",
        "where": {
            "count": {
                "field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
                "where": {
                    "allOf": [
                        {
                            "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].priority",
                            "equals": "[current('reservedNsgRule').priority]"
                        },
                        {
                            "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
                            "equals": "[current('reservedNsgRule').access]"
                        },
                        {
                            "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
                            "equals": "[current('reservedNsgRule').direction]"
                        },
                        {
                            "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
                            "equals": "[current('reservedNsgRule').destinationPortRange]"
                        }
                    ]
                }
            },
            "equals": 1
        }
    },
    "equals": "[length(parameters('reservedNsgRules'))]"
}

EffectEffect

Azure Policy ondersteunt de volgende typen effect:Azure Policy supports the following types of effect:

  • Toevoegen: Hiermee voegt u de gedefinieerde set velden toe aan de aanvraagAppend: adds the defined set of fields to the request
  • Controle: er wordt een waarschuwings gebeurtenis gegenereerd in het activiteiten logboek, maar de aanvraag mislukt nietAudit: generates a warning event in activity log but doesn't fail the request
  • AuditIfNotExists: er wordt een waarschuwings gebeurtenis in het activiteiten logboek gegenereerd als een gerelateerde resource niet bestaatAuditIfNotExists: generates a warning event in activity log if a related resource doesn't exist
  • Weigeren: er wordt een gebeurtenis in het activiteiten logboek gegenereerd en de aanvraag misluktDeny: generates an event in the activity log and fails the request
  • DeployIfNotExists: implementeert een gerelateerde resource als deze nog niet bestaatDeployIfNotExists: deploys a related resource if it doesn't already exist
  • Uitgeschakeld: resources worden niet geëvalueerd voor naleving van de beleids regelDisabled: doesn't evaluate resources for compliance to the policy rule
  • Wijzigen: de gedefinieerde labels worden toegevoegd, bijgewerkt of verwijderd uit een resource of abonnementModify: adds, updates, or removes the defined tags from a resource or subscription
  • EnforceOPAConstraint (afgeschaft): Hiermee configureert u de open Policy Agent Admissions-controller met gate keeper v3 voor zelf-beheerde Kubernetes-clusters in azureEnforceOPAConstraint (deprecated): configures the Open Policy Agent admissions controller with Gatekeeper v3 for self-managed Kubernetes clusters on Azure
  • EnforceRegoPolicy (afgeschaft): Hiermee configureert u de open Policy Agent Admissions-controller met gate keeper v2 in de Azure Kubernetes-serviceEnforceRegoPolicy (deprecated): configures the Open Policy Agent admissions controller with Gatekeeper v2 in Azure Kubernetes Service

Zie voor meer informatie over elk effect, de volg orde van evaluatie, eigenschappen en voor beelden informatie over Azure Policy effecten.For complete details on each effect, order of evaluation, properties, and examples, see Understanding Azure Policy Effects.

Beleids functiesPolicy functions

Alle Resource Manager-sjabloon functies zijn beschikbaar voor gebruik in een beleids regel, met uitzonde ring van de volgende functies en door de gebruiker gedefinieerde functies:All Resource Manager template functions are available to use within a policy rule, except the following functions and user-defined functions:

  • Functie copyindex ()copyIndex()
  • implementatie ()deployment()
  • orderverzamellijstlist*
  • newGuid()newGuid()
  • pickZones()pickZones()
  • providers ()providers()
  • verwijzing ()reference()
  • resourceId ()resourceId()
  • variabelen ()variables()

Notitie

Deze functies zijn nog steeds beschikbaar in het details.deployment.properties.template gedeelte van de sjabloon implementatie in een deployIfNotExists -beleids definitie.These functions are still available within the details.deployment.properties.template portion of the template deployment in a deployIfNotExists policy definition.

De volgende functie is beschikbaar voor gebruik in een beleids regel, maar verschilt van gebruik in een Azure Resource Manager sjabloon (ARM-sjabloon):The following function is available to use in a policy rule, but differs from use in an Azure Resource Manager template (ARM template):

  • utcNow() -In tegens telling tot een ARM-sjabloon kan deze eigenschap buiten de standaard waarde worden gebruikt.utcNow() - Unlike an ARM template, this property can be used outside defaultValue.
    • Retourneert een teken reeks die is ingesteld op de huidige datum en tijd in de indeling van de Universal ISO 8601 DateTime yyyy-MM-ddTHH:mm:ss.fffffffZ .Returns a string that is set to the current date and time in Universal ISO 8601 DateTime format yyyy-MM-ddTHH:mm:ss.fffffffZ.

De volgende functies zijn alleen beschikbaar in beleids regels:The following functions are only available in policy rules:

  • addDays(dateTime, numberOfDaysToAdd)

    • DateTime: [required] string-string in de indeling Universal ISO 8601 datetime ' jjjj-mm-ddTuu: mm: SS. FFFFFFFZ'dateTime: [Required] string - String in the Universal ISO 8601 DateTime format 'yyyy-MM-ddTHH:mm:ss.FFFFFFFZ'
    • numberOfDaysToAdd: [vereist] geheel getal-aantal dagen dat moet worden toegevoegdnumberOfDaysToAdd: [Required] integer - Number of days to add
  • field(fieldName)

    • FieldName: [required] string: naam van het veld dat moet worden opgehaaldfieldName: [Required] string - Name of the field to retrieve
    • Retourneert de waarde van het veld van de resource die wordt geëvalueerd door de if-voor waarde.Returns the value of that field from the resource that is being evaluated by the If condition.
    • field wordt hoofd zakelijk gebruikt in combi natie met AuditIfNotExists en DeployIfNotExists om te verwijzen naar velden in de resource die worden geëvalueerd.field is primarily used with AuditIfNotExists and DeployIfNotExists to reference fields on the resource that are being evaluated. Een voor beeld van dit gebruik is te zien in het DeployIfNotExists-voor beeld.An example of this use can be seen in the DeployIfNotExists example.
  • requestContext().apiVersion

    • Retourneert de API-versie van de aanvraag waarvoor beleids evaluatie is geactiveerd (bijvoorbeeld: 2019-09-01 ).Returns the API version of the request that triggered policy evaluation (example: 2019-09-01). Deze waarde is de API-versie die is gebruikt in de PUT/PATCH-aanvraag voor evaluaties bij het maken of bijwerken van de resource.This value is the API version that was used in the PUT/PATCH request for evaluations on resource creation/update. De nieuwste API-versie wordt altijd gebruikt tijdens de evaluatie van de naleving van bestaande resources.The latest API version is always used during compliance evaluation on existing resources.
  • policy()

    • Retourneert de volgende informatie over het beleid dat wordt geëvalueerd.Returns the following information about the policy that is being evaluated. Eigenschappen zijn toegankelijk vanuit het geretourneerde object (bijvoorbeeld: [policy().assignmentId] ).Properties can be accessed from the returned object (example: [policy().assignmentId]).
    {
      "assignmentId": "/subscriptions/ad404ddd-36a5-4ea8-b3e3-681e77487a63/providers/Microsoft.Authorization/policyAssignments/myAssignment",
      "definitionId": "/providers/Microsoft.Authorization/policyDefinitions/34c877ad-507e-4c82-993e-3452a6e0ad3c",
      "setDefinitionId": "/providers/Microsoft.Authorization/policySetDefinitions/42a694ed-f65e-42b2-aa9e-8052e9740a92",
      "definitionReferenceId": "StorageAccountNetworkACLs"
    }
    
  • ipRangeContains(range, targetRange)

    • Range: [required] string-teken reeks die een bereik van IP-adressen aangeeft.range: [Required] string - String specifying a range of IP addresses.
    • targetRange: [vereist] teken reeks-teken reeks die een bereik van IP-adressen aangeeft.targetRange: [Required] string - String specifying a range of IP addresses.

    Retourneert of het opgegeven IP-adres bereik het doel-IP-adres bereik bevat.Returns whether the given IP address range contains the target IP address range. Lege bereiken of combi neren tussen IP-families is niet toegestaan en resulteert in een evaluatie fout.Empty ranges, or mixing between IP families isn't allowed and results in evaluation failure.

    Ondersteunde indelingen:Supported formats:

    • Eén IP-adres (voor beelden: 10.0.0.0 , 2001:0DB8::3:FFFE )Single IP address (examples: 10.0.0.0, 2001:0DB8::3:FFFE)
    • CIDR-bereik (voor beelden: 10.0.0.0/24 , 2001:0DB8::/110 )CIDR range (examples: 10.0.0.0/24, 2001:0DB8::/110)
    • Het bereik dat is gedefinieerd door de begin-en eind-IP-adressen (voor beelden: 192.168.0.1-192.168.0.9 , 2001:0DB8::-2001:0DB8::3:FFFF )Range defined by start and end IP addresses (examples: 192.168.0.1-192.168.0.9, 2001:0DB8::-2001:0DB8::3:FFFF)
  • current(indexName)

Voor beeld van beleids functiePolicy function example

In dit voor beeld van een beleids regel wordt de resourceGroup functie resource gebruikt voor het ophalen van de eigenschap name , gecombineerd met de concat functie Array en object, om een voor waarde op te bouwen like die de resource naam afdwingt om te beginnen met de naam van de resource groep.This policy rule example uses the resourceGroup resource function to get the name property, combined with the concat array and object function to build a like condition that enforces the resource name to start with the resource group name.

{
    "if": {
        "not": {
            "field": "name",
            "like": "[concat(resourceGroup().name,'*')]"
        }
    },
    "then": {
        "effect": "deny"
    }
}

AliassenAliases

U kunt eigenschaps aliassen gebruiken om toegang te krijgen tot specifieke eigenschappen voor een bron type.You use property aliases to access specific properties for a resource type. Met aliassen kunt u bepalen welke waarden of voor waarden zijn toegestaan voor een eigenschap van een resource.Aliases enable you to restrict what values or conditions are allowed for a property on a resource. Elke alias wordt toegewezen aan paden in verschillende API-versies voor een bepaald bron type.Each alias maps to paths in different API versions for a given resource type. Tijdens de beleids evaluatie haalt de beleids engine het pad naar de eigenschap voor die API-versie op.During policy evaluation, the policy engine gets the property path for that API version.

De lijst met aliassen is altijd groeien.The list of aliases is always growing. Als u wilt weten welke aliassen momenteel worden ondersteund door Azure Policy, gebruikt u een van de volgende methoden:To find what aliases are currently supported by Azure Policy, use one of the following methods:

  • Azure Policy-extensie voor Visual Studio code (aanbevolen)Azure Policy extension for Visual Studio Code (recommended)

    Gebruik de extensie Azure Policy voor Visual Studio code om aliassen voor resource-eigenschappen weer te geven en te detecteren.Use the Azure Policy extension for Visual Studio Code to view and discover aliases for resource properties.

    Scherm afbeelding van de uitbrei ding van de Azure Policy voor Visual Studio code die een eigenschap aanwijst om de alias namen weer te geven.

  • Azure PowerShellAzure PowerShell

    # Login first with Connect-AzAccount if not using Cloud Shell
    
    # Use Get-AzPolicyAlias to list available providers
    Get-AzPolicyAlias -ListAvailable
    
    # Use Get-AzPolicyAlias to list aliases for a Namespace (such as Azure Compute -- Microsoft.Compute)
    (Get-AzPolicyAlias -NamespaceMatch 'compute').Aliases
    

    Notitie

    Als u aliassen wilt vinden die kunnen worden gebruikt met het wijzigings effect, gebruikt u de volgende opdracht in azure PowerShell 4.6.0 of hoger:To find aliases that can be used with the modify effect, use the following command in Azure PowerShell 4.6.0 or higher:

    Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }
    
  • Azure CLIAzure CLI

    # Login first with az login if not using Cloud Shell
    
    # List namespaces
    az provider list --query [*].namespace
    
    # Get Azure Policy aliases for a specific Namespace (such as Azure Compute -- Microsoft.Compute)
    az provider show --namespace Microsoft.Compute --expand "resourceTypes/aliases" --query "resourceTypes[].aliases[].name"
    
  • REST API-ARMClientREST API / ARMClient

    GET https://management.azure.com/providers/?api-version=2019-10-01&$expand=resourceTypes/aliases
    

Informatie over de alias [*]Understanding the [*] alias

Verschillende van de aliassen die beschikbaar zijn, hebben een versie die wordt weer gegeven als een ' normale ' naam en een andere die hieraan is [*] gekoppeld.Several of the aliases that are available have a version that appears as a 'normal' name and another that has [*] attached to it. Bijvoorbeeld:For example:

  • Microsoft.Storage/storageAccounts/networkAcls.ipRules
  • Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]

De ' normale ' alias vertegenwoordigt het veld als een enkele waarde.The 'normal' alias represents the field as a single value. Dit veld is bedoeld voor vergelijkings scenario's die exact overeenkomen wanneer de volledige set waarden exact zo moet worden gedefinieerd, niet meer en niet minder.This field is for exact match comparison scenarios when the entire set of values must be exactly as defined, no more and no less.

De [*] alias vertegenwoordigt een verzameling van waarden die zijn geselecteerd in de elementen van een matrix bron eigenschap.The [*] alias represents a collection of values selected from the elements of an array resource property. Bijvoorbeeld:For example:

AliasAlias Geselecteerde waardenSelected values
Microsoft.Storage/storageAccounts/networkAcls.ipRules[*] De elementen van de ipRules matrix.The elements of the ipRules array.
Microsoft.Storage/storageAccounts/networkAcls.ipRules[*].action De waarden van de action eigenschap van elk element van de ipRules matrix.The values of the action property from each element of the ipRules array.

Bij gebruik van een veld voorwaarde kunnen met matrix aliassen elk afzonderlijk matrix element worden vergeleken met een doel waarde.When used in a field condition, array aliases make it possible to compare each individual array element to a target value. Bij gebruik met de expressie aantal is het volgende mogelijk:When used with count expression, it's possible to:

  • De grootte van een matrix controlerenCheck the size of an array
  • Controleren of de all\any\none van de matrix elementen voldoen aan een complexe voor waardeCheck if all\any\none of the array elements meet a complex condition
  • Controleren of precies n matrix elementen voldoen aan een complexe voor waardeCheck if exactly n array elements meet a complex condition

Zie refererende matrix bron eigenschappenvoor meer informatie en voor beelden.For more information and examples, see Referencing array resource properties.

Volgende stappenNext steps