Parametry struktury definicji usługi Azure Policy
Parametry ułatwiają zarządzanie zasadami przez zredukowanie liczby definicji zasad. Pomyśl o parametrach, takich jak pola w formularzu: name
, , address
city
, state
. Te parametry zawsze pozostają takie same, ale ich wartości zmieniają się na podstawie poszczególnych wypełniania formularza. Parametry działają w taki sam sposób, kiedy tworzysz zasady. Uwzględniając parametry w definicji zasad, można ponownie użyć tych samych zasad w różnych scenariuszach, stosując inne wartości.
Dodawanie lub usuwanie parametrów
Parametry można dodać do istniejącej i przypisanej definicji. Nowy parametr musi zawierać defaultValue
właściwość . Ta właściwość uniemożliwia pośrednie nieprawidłowe przypisanie istniejących przypisań zasad lub inicjatywy.
Nie można usunąć parametrów z definicji zasad, ponieważ może istnieć przypisanie, które ustawia wartość parametru, a odwołanie zostanie przerwane. Niektóre wbudowane definicje zasad przestarzałe parametry przy użyciu metadanych "deprecated": true
, które ukrywa parametr podczas przypisywania definicji w witrynie Azure Portal. Chociaż ta metoda nie jest obsługiwana w przypadku niestandardowych definicji zasad, inną opcją jest zduplikowanie i utworzenie nowej niestandardowej definicji zasad bez parametru .
Właściwości parametru
Parametr używa następujących właściwości w definicji zasad:
name
: nazwa parametru. Używane przezparameters
funkcję wdrażania w regule zasad. Aby uzyskać więcej informacji, zobacz używanie wartości parametru.type
: określa, czy parametr mastring
wartość , ,array
,object
boolean
,integer
,float
lubdateTime
.metadata
: Definiuje właściwości podrzędne używane głównie przez witrynę Azure Portal do wyświetlania przyjaznych dla użytkownika informacji:description
: wyjaśnienie, dla którego parametru jest używany. Może służyć do podawania przykładów dopuszczalnych wartości.displayName
: przyjazna nazwa wyświetlana w portalu dla parametru .strongType
: (Opcjonalnie) Używane podczas przypisywania definicji zasad za pośrednictwem portalu. Udostępnia listę z rozpoznawaniem kontekstu. Aby uzyskać więcej informacji, zobacz strongType.assignPermissions
: (Opcjonalnie) Ustaw wartość true , aby witryna Azure Portal utworzyła przypisania ról podczas przypisywania zasad. Ta właściwość jest przydatna w przypadku, gdy chcesz przypisać uprawnienia poza zakresem przypisania. W zasadach istnieje jedno przypisanie roli na definicję roli (lub definicję roli we wszystkich zasadach inicjatywy). Wartość parametru musi być prawidłowym zasobem lub zakresem.deprecated
: flaga logiczna wskazująca, czy parametr jest przestarzały w wbudowanej definicji.
defaultValue
: (Opcjonalnie) Ustawia wartość parametru w przypisaniu, jeśli żadna wartość nie jest podana. Wymagane podczas aktualizowania przypisanej istniejącej definicji zasad. W przypadku parametrów typu obiektu wartość musi być zgodna z odpowiednim schematem.allowedValues
: (Opcjonalnie) Udostępnia tablicę wartości akceptowanych przez parametr podczas przypisywania.- Ważność wielkości liter: dozwolone porównania wartości są uwzględniane w przypadku przypisywania zasad, co oznacza, że wybrane wartości parametrów w przypisaniu muszą być zgodne z wielkością liter w
allowedValues
tablicy w definicji. Jednak po wybraniu wartości dla przypisania ocena porównań ciągów może być bez uwzględniania wielkości liter w zależności od użytego warunku . Jeśli na przykład parametr określaDev
jako dozwoloną wartość tagu w przypisaniu, a ta wartość jest porównywana z ciągiem wejściowym przy użyciuequals
warunku, usługa Azure Policy później oceni wartośćdev
tagu jako dopasowanie, mimo że jest to małe litery, ponieważnotEquals
jest bez uwzględniania wielkości liter. - W przypadku parametrów typu obiektu wartości muszą być zgodne z odpowiednim schematem.
- Ważność wielkości liter: dozwolone porównania wartości są uwzględniane w przypadku przypisywania zasad, co oznacza, że wybrane wartości parametrów w przypisaniu muszą być zgodne z wielkością liter w
schema
: (Opcjonalnie) Zapewnia walidację danych wejściowych parametrów podczas przypisywania przy użyciu schematu JSON zdefiniowanego samodzielnie. Ta właściwość jest obsługiwana tylko dla parametrów typu obiektu i jest zgodna z implementacją schematu Json.NET 2019-09. Aby dowiedzieć się więcej na temat używania schematów, zobacz https://json-schema.org/ i przetestuj schematy robocze pod adresem https://www.jsonschemavalidator.net/.
Przykładowe parametry
Przykład 1
Na przykład można zdefiniować definicję zasad, aby ograniczyć lokalizacje, w których można wdrożyć zasoby. Parametr dla tej definicji zasad może być allowedLocations
używany przez każde przypisanie definicji zasad w celu ograniczenia akceptowanych wartości. Korzystanie z strongType
funkcji zapewnia ulepszone środowisko podczas kończenia przypisywania za pośrednictwem portalu:
"parameters": {
"allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of allowed locations for resources.",
"displayName": "Allowed locations",
"strongType": "location"
},
"defaultValue": [
"westus2"
],
"allowedValues": [
"eastus2",
"westus2",
"westus"
]
}
}
Przykładowe dane wejściowe dla tego parametru typu tablicy (bez strongType
) w czasie przypisania mogą mieć wartość ["westus", "eastus2"]
.
Przykład 2
W bardziej zaawansowanym scenariuszu można zdefiniować zasady, które wymagają zasobników klastra Kubernetes do używania określonych etykiet. Parametr dla tej definicji zasad może być labelSelector
używany przez każde przypisanie definicji zasad w celu określenia zasobów Kubernetes, których dotyczy pytanie na podstawie kluczy etykiet i wartości:
"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
}
},
}
Przykładowe dane wejściowe dla tego parametru typu obiektu w czasie przypisania będą w formacie JSON, zweryfikowane przez określony schemat i mogą być następujące:
{
"matchLabels": {
"poolID": "abc123",
"nodeGroup": "Group1",
"region": "southcentralus"
},
"matchExpressions": [
{
"key": "name",
"operator": "In",
"values": [
"payroll",
"web"
]
},
{
"key": "environment",
"operator": "NotIn",
"values": [
"dev"
]
}
]
}
Używanie wartości parametru
W regule zasad odwołujesz się do parametrów z następującą parameters
składnią funkcji:
{
"field": "location",
"in": "[parameters('allowedLocations')]"
}
Ten przykład odwołuje się do parametru allowedLocations
pokazanego we właściwościach parametru.
strongType
W ramach metadata
właściwości można strongType
podać listę opcji wielokrotnego wyboru w witrynie Azure Portal. strongType
może być obsługiwanym typem zasobu lub dozwoloną wartością. Aby określić, czy typ zasobu jest prawidłowy dla strongType
elementu , użyj polecenia Get-AzResourceProvider. Format typu strongType
zasobu to <Resource Provider>/<Resource Type>
. Na przykład Microsoft.Network/virtualNetworks/subnets
.
Obsługiwane są niektóre typy zasobów, które nie są zwracane przez Get-AzResourceProvider
program . Są to następujące typy:
Microsoft.RecoveryServices/vaults/backupPolicies
Niedozwolone wartości strongType
typu zasobu to:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
Następne kroki
- Aby uzyskać więcej informacji na temat struktury definicji zasad, przejdź do podstaw, reguły zasad i aliasu.
- W przypadku inicjatyw przejdź do struktury definicji inicjatywy.
- Zapoznaj się z przykładami w przykładach usługi Azure Policy.
- Przejrzyj wyjaśnienie działania zasad.
- Dowiedz się, jak programowo tworzyć zasady.
- Dowiedz się, jak uzyskać dane zgodności.
- Dowiedz się, jak korygować niezgodne zasoby.
- Sprawdź, co to jest grupa zarządzania za pomocą funkcji Organizowanie zasobów przy użyciu grup zarządzania platformy Azure.