Structuurparameters voor Azure Policy-definities
Parameters helpen uw beleidsbeheer te vereenvoudigen door het aantal beleidsdefinities te verminderen. U kunt parameters zien zoals de velden in een formulier: name
, address
, , city
state
. Deze parameters blijven altijd hetzelfde, maar hun waarden veranderen op basis van het afzonderlijke invullen van het formulier. Parameters werken op dezelfde manier bij het bouwen van een beleid. Door parameters in een beleidsdefinitie op te slaan, kunt u dat beleid opnieuw gebruiken voor verschillende scenario's met verschillende waarden.
Parameters toevoegen of verwijderen
Parameters kunnen worden toegevoegd aan een bestaande en toegewezen definitie. De nieuwe parameter moet de defaultValue
eigenschap bevatten. Deze eigenschap voorkomt dat bestaande toewijzingen van het beleid of initiatief indirect ongeldig worden gemaakt.
Parameters kunnen niet worden verwijderd uit een beleidsdefinitie omdat er mogelijk een toewijzing is waarmee de parameterwaarde wordt ingesteld en die verwijzing wordt verbroken. Sommige ingebouwde beleidsdefinities verwijderen parameters met behulp van metagegevens "deprecated": true
, waardoor de parameter wordt verborgen bij het toewijzen van de definitie in Azure Portal. Hoewel deze methode niet wordt ondersteund voor aangepaste beleidsdefinities, is een andere optie het dupliceren en maken van een nieuwe aangepaste beleidsdefinitie zonder de parameter.
Parametereigenschappen
Een parameter gebruikt de volgende eigenschappen in een beleidsdefinitie:
name
: De naam van de parameter. Wordt gebruikt door deparameters
implementatiefunctie binnen de beleidsregel. Zie voor meer informatie het gebruik van een parameterwaarde.type
: bepaalt of de parameter eenstring
, ,array
,object
boolean
,integer
, , , ofdateTime
float
.metadata
: Definieert subproperties die voornamelijk worden gebruikt door Azure Portal om gebruiksvriendelijke informatie weer te geven:description
: De uitleg van waarvoor de parameter wordt gebruikt. Kan worden gebruikt om voorbeelden van acceptabele waarden te bieden.displayName
: De beschrijvende naam die wordt weergegeven in de portal voor de parameter.strongType
: (Optioneel) Wordt gebruikt bij het toewijzen van de beleidsdefinitie via de portal. Biedt een contextbewuste lijst. Zie strongType voor meer informatie.assignPermissions
: (Optioneel) Stel deze optie in als waar om Azure Portal roltoewijzingen te laten maken tijdens beleidstoewijzing. Deze eigenschap is handig als u machtigingen wilt toewijzen buiten het toewijzingsbereik. Er is één roltoewijzing per roldefinitie in het beleid (of per roldefinitie in alle beleidsregels van het initiatief). De parameterwaarde moet een geldige resource of een geldig bereik zijn.deprecated
: Een booleaanse vlag om aan te geven of een parameter is afgeschaft in een ingebouwde definitie.
defaultValue
: (Optioneel) Stelt de waarde van de parameter in een toewijzing in als er geen waarde wordt opgegeven. Vereist bij het bijwerken van een bestaande beleidsdefinitie die is toegewezen. Voor parameters van het type oject moet de waarde overeenkomen met het juiste schema.allowedValues
: (Optioneel) Biedt een matrix met waarden die de parameter accepteert tijdens de toewijzing.- Hoofdlettergevoeligheid: toegestane waardevergelijkingen zijn hoofdlettergevoelig bij het toewijzen van een beleid, wat betekent dat de geselecteerde parameterwaarden in de toewijzing moeten overeenkomen met het hoofdlettergebruik van waarden in de
allowedValues
matrix in de definitie. Zodra de waarden voor de toewijzing zijn geselecteerd, kan de evaluatie van tekenreeksvergelijkingen echter niet hoofdlettergevoelig zijn, afhankelijk van de gebruikte voorwaarde . Als de parameter bijvoorbeeld opgeeftDev
als een toegestane tagwaarde in een toewijzing en deze waarde wordt vergeleken met een invoertekenreeks met behulp van deequals
voorwaarde, evalueert Azure Policy later een tagwaarde vandev
als een overeenkomst, ook al is deze kleine letters omdatnotEquals
deze niet hoofdlettergevoelig is. - Voor objecttypeparameters moeten de waarden overeenkomen met het juiste schema.
- Hoofdlettergevoeligheid: toegestane waardevergelijkingen zijn hoofdlettergevoelig bij het toewijzen van een beleid, wat betekent dat de geselecteerde parameterwaarden in de toewijzing moeten overeenkomen met het hoofdlettergebruik van waarden in de
schema
: (Optioneel) Biedt validatie van parameterinvoer tijdens de toewijzing met behulp van een zelfgedefinieerde JSON-schema. Deze eigenschap wordt alleen ondersteund voor objecttypeparameters en volgt de Json.NET Schema 2019-09-implementatie. U vindt meer informatie over het gebruik van schema's op https://json-schema.org/ en het testen van conceptschema's op https://www.jsonschemavalidator.net/.
Voorbeeldparameters
Voorbeeld 1
U kunt bijvoorbeeld een beleidsdefinitie definiëren om de locaties te beperken waar resources kunnen worden geïmplementeerd. Een parameter voor die beleidsdefinitie kan worden allowedLocations
gebruikt door elke toewijzing van de beleidsdefinitie om de geaccepteerde waarden te beperken. Het gebruik van biedt een verbeterde ervaring bij het voltooien van strongType
de toewijzing via de 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 voorbeeldinvoer voor deze parameter van het matrixtype (zonder strongType
) tijdens de toewijzing kan zijn ["westus", "eastus2"]
.
Voorbeeld 2
In een geavanceerder scenario kunt u een beleid definiëren waarvoor Kubernetes-clusterpods opgegeven labels moeten gebruiken. Een parameter voor die beleidsdefinitie kan worden labelSelector
gebruikt door elke toewijzing van de beleidsdefinitie om Kubernetes-resources in kwestie op te geven op basis van labelsleutels en -waarden:
"parameters": {
"labelSelector": {
"type": "Object",
"metadata": {
"displayName": "Kubernetes label selector",
"description": "Label query to select Kubernetes resources for policy evaluation. An empty label selector matches all Kubernetes resources."
},
"defaultValue": {},
"schema": {
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all resources.",
"type": "object",
"properties": {
"matchLabels": {
"description": "matchLabels is a map of {key,value} pairs.",
"type": "object",
"additionalProperties": {
"type": "string"
},
"minProperties": 1
},
"matchExpressions": {
"description": "matchExpressions is a list of values, a key, and an operator.",
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"description": "key is the label key that the selector applies to.",
"type": "string"
},
"operator": {
"description": "operator represents a key's relationship to a set of values.",
"type": "string",
"enum": [
"In",
"NotIn",
"Exists",
"DoesNotExist"
]
},
"values": {
"description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"key",
"operator"
],
"additionalProperties": false
},
"minItems": 1
}
},
"additionalProperties": false
}
},
}
Een voorbeeldinvoer voor deze objecttypeparameter tijdens de toewijzingstijd heeft de JSON-indeling, gevalideerd door het opgegeven schema en kan het volgende zijn:
{
"matchLabels": {
"poolID": "abc123",
"nodeGroup": "Group1",
"region": "southcentralus"
},
"matchExpressions": [
{
"key": "name",
"operator": "In",
"values": [
"payroll",
"web"
]
},
{
"key": "environment",
"operator": "NotIn",
"values": [
"dev"
]
}
]
}
Een parameterwaarde gebruiken
In de beleidsregel verwijst u naar parameters met de volgende parameters
functiesyntaxis:
{
"field": "location",
"in": "[parameters('allowedLocations')]"
}
Dit voorbeeld verwijst naar de allowedLocations
parameter die is gedemonstreerd in parametereigenschappen.
strongType
Binnen de metadata
eigenschap kunt strongType
u een lijst met opties met meerdere selecties opgeven in Azure Portal. strongType
kan een ondersteund resourcetype of een toegestane waarde zijn. Gebruik Get-AzResourceProvider om te bepalen of een resourcetype geldig is voorstrongType
. De indeling voor een resourcetype strongType
is <Resource Provider>/<Resource Type>
. Bijvoorbeeld: Microsoft.Network/virtualNetworks/subnets
.
Sommige resourcetypen die niet worden geretourneerd door Get-AzResourceProvider
, worden ondersteund. Deze typen zijn:
Microsoft.RecoveryServices/vaults/backupPolicies
De toegestane waarden strongType
voor het niet-resourcetype zijn:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
Volgende stappen
- Ga naar basisbeginselen, beleidsregels en alias voor meer informatie over de structuur van beleidsdefinities.
- Ga voor initiatieven naar de structuur van initiatiefdefinities.
- Bekijk voorbeelden in Azure Policy-voorbeelden.
- Lees Informatie over de effecten van het beleid.
- Meer informatie over het programmatisch maken van beleid.
- Meer informatie over het ophalen van nalevingsgegevens.
- Ontdek hoe u niet-compatibele resources kunt herstellen.
- Bekijk wat een beheergroep is met Uw resources organiseren met Azure-beheergroepen.