параметры структуры определения Политика Azure
Параметры помогают упростить управление политиками за счет сокращения числа определений политик. Думайте о параметрах, таких как поля в форме: name
, address
, , city
state
. Эти параметры всегда остаются неизменными, но их значения изменяются на основе отдельного заполнения формы. Точно так же параметры работают при создании политик. Добавив параметры в определение политики, вы сможете повторно использовать ее в различных сценариях, указывая разные значения.
Добавление или удаление параметров
Параметры могут быть добавлены в существующее и назначенное определение. Новый параметр должен включать defaultValue
свойство. Это свойство предотвращает недопустимость существующих назначений политики или инициативы.
Параметры не могут быть удалены из определения политики, так как может быть назначение, которое задает значение параметра, и эта ссылка будет нарушена. Некоторые встроенные определения политики нерекомендуемые параметры с помощью метаданных"deprecated": true
, которые скрывают параметр при назначении определения в портал Azure. Хотя этот метод не поддерживается для определений настраиваемых политик, другой вариант — дублировать и создавать новое определение настраиваемой политики без параметра.
Свойства параметра
Параметр использует следующие свойства в определении политики:
name
: имя параметра. Используется функцией развертыванияparameters
в правиле политики. Дополнительные сведения см. в разделе об использовании значения параметра.type
: определяет, являетсяstring
ли параметр ,array
,object
,boolean
,integer
илиfloat
dateTime
.metadata
: определяет вложенные свойства, в основном используемые портал Azure для отображения понятной для пользователя информации:description
: объяснение того, для чего используется параметр. Можно использовать для примеров допустимых значений.displayName
: понятное имя, отображаемое на портале для параметра.strongType
: (Необязательно) Используется при назначении определения политики через портал. Предоставляет список с учетом контекста. См. дополнительные сведения о вложенном свойстве strongType.assignPermissions
: (Необязательно) Задайте значение true, чтобы портал Azure создавать назначения ролей во время назначения политики. Это свойство полезно, если вы хотите назначить разрешения за пределами области назначения. Существует одно назначение ролей для определения роли в политике (или определение роли во всех политиках инициативы). Значение параметра должно быть допустимым ресурсом или областью.deprecated
: логический флаг, указывающий, является ли параметр устаревшим в встроенном определении.
defaultValue
: (необязательно) задает значение параметра в назначении, если значение не задано. Это свойство необходимо при обновлении существующего назначенного определения политики. Значение параметра объектного типа должно соответствовать определенной схеме.allowedValues
: (необязательно) Предоставляет массив значений, которые параметр принимает во время назначения.- Конфиденциальность регистра. Допустимые сравнения значений чувствительны к регистру при назначении политики, что означает, что выбранные значения параметров в назначении должны соответствовать регистру значений в
allowedValues
массиве в определении. Однако после выбора значений для назначения оценка сравнений строк может быть нечувствительной к регистру в зависимости от используемого условия . Например, если параметр указываетDev
в качестве допустимого значения тега в назначении, и это значение сравнивается с входной строкой с помощьюequals
условия, то Политика Azure позже будет оценивать значениеdev
тега как совпадение, даже если это строчные регистры, так какnotEquals
регистр не учитывается. - Для параметров типа объекта значения должны соответствовать соответствующей схеме.
- Конфиденциальность регистра. Допустимые сравнения значений чувствительны к регистру при назначении политики, что означает, что выбранные значения параметров в назначении должны соответствовать регистру значений в
schema
: (необязательно) обеспечивает проверку входных данных параметров во время назначения с использованием самоопределяющейся схемы JSON. Это свойство поддерживается только для параметров объектного типа и соответствует реализации Json.NET Schema 2019-09. Вы можете просмотреть дополнительные сведения об использовании схем на сайте https://json-schema.org/ и протестировать черновые версии схем на сайте https://www.jsonschemavalidator.net/.
Примеры параметров
Пример 1
Например, можно создать определение политики, чтобы ограничить расположения, в которых могут развертываться ресурсы. Параметр для этого определения политики может использоваться allowedLocations
каждым назначением определения политики для ограничения принятых значений. Использование расширенных strongType
возможностей при выполнении задания на портале:
"parameters": {
"allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of allowed locations for resources.",
"displayName": "Allowed locations",
"strongType": "location"
},
"defaultValue": [
"westus2"
],
"allowedValues": [
"eastus2",
"westus2",
"westus"
]
}
}
Пример входных данных для этого параметра типа массива (без strongType
) во время назначения может быть ["westus", "eastus2"]
.
Пример 2
В более сложном сценарии можно определить политику, которая требует, чтобы модули pod кластера Kubernetes использовали указанные метки. Параметр для определения этой политики можно labelSelector
использовать при каждом назначении определения политики, чтобы указать ресурсы Kubernetes, заданные на основе ключей и значений меток:
"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
}
},
}
Пример входных данных для этого параметра объектного типа при назначении будет представлен в формате JSON, который проверяется указанной схемой, и может иметь следующий вид:
{
"matchLabels": {
"poolID": "abc123",
"nodeGroup": "Group1",
"region": "southcentralus"
},
"matchExpressions": [
{
"key": "name",
"operator": "In",
"values": [
"payroll",
"web"
]
},
{
"key": "environment",
"operator": "NotIn",
"values": [
"dev"
]
}
]
}
Использование значения параметра
В правилах политики полученные параметры используются со следующим синтаксисом функции parameters
.
{
"field": "location",
"in": "[parameters('allowedLocations')]"
}
Этот пример ссылается на allowedLocations
параметр, который был показан в свойствах параметров.
strongType
В свойстве metadata
можно использовать strongType
для предоставления списка вариантов в портал Azure. strongType
может быть поддерживаемым типом ресурса или допустимым значением. Чтобы определить, является ли тип ресурса допустимымstrongType
, используйте Get-AzResourceProvider. Формат типа strongType
ресурса .<Resource Provider>/<Resource Type>
Например, Microsoft.Network/virtualNetworks/subnets
.
Некоторые типы ресурсов, которые не возвращаются Get-AzResourceProvider
, поддерживаются. Эти типы перечислены ниже.
Microsoft.RecoveryServices/vaults/backupPolicies
Допустимые значения strongType
не типа ресурса:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
Следующие шаги
- Дополнительные сведения о структуре определения политики см. в основах, правиле политики и псевдониме.
- Для инициатив перейдите к структуре определения инициативы.
- Изучите примеры на странице примеров Политики Azure.
- Изучите сведения о действии политик.
- Узнайте о программном создании политик.
- Узнайте, как получать данные о соответствии.
- Узнайте, как исправлять несоответствующие ресурсы.
- Дополнительные сведения о группе управления см. в статье Упорядочивание ресурсов с помощью групп управления Azure.