Parâmetros da estrutura de definição da Política do Azure
Os parâmetros ajudam a simplificar a gestão das políticas ao reduzirem o número de definições de política. Pense em parâmetros como os campos em um formulário: name
, address
, city
, state
. Esses parâmetros permanecem sempre os mesmos, mas seus valores mudam com base no preenchimento individual do formulário. Os parâmetros funcionam da mesma forma quando cria políticas. Ao incluir parâmetros numa definição de política, pode reutilizar essa política em diferentes cenários com outros valores.
Adicionando ou removendo parâmetros
Os parâmetros podem ser adicionados a uma definição existente e atribuída. O novo parâmetro deve incluir a defaultValue
propriedade. Essa propriedade impede que atribuições existentes da política ou iniciativa sejam indiretamente invalidadas.
Os parâmetros não podem ser removidos de uma definição de política porque pode haver uma atribuição que define o valor do parâmetro e essa referência seria quebrada. Algumas definições de política internas depreciam parâmetros usando metadados "deprecated": true
, que ocultam o parâmetro ao atribuir a definição no portal do Azure. Embora esse método não seja suportado para definições de política personalizadas, outra opção é duplicar e criar uma nova definição de política personalizada sem o parâmetro.
Propriedades do parâmetro
Um parâmetro usa as seguintes propriedades em uma definição de política:
name
: O nome do seu parâmetro. Usado pela função deparameters
implantação dentro da regra de política. Para obter mais informações, consulte o uso de um valor de parâmetro.type
: Determina se o parâmetro é umstring
, , ,object
boolean
,integer
,float
, oudateTime
array
.metadata
: Define subpropriedades usadas principalmente pelo portal do Azure para exibir informações amigáveis:description
: A explicação para que o parâmetro é usado. Pode ser usado para fornecer exemplos de valores aceitáveis.displayName
: O nome amigável mostrado no portal para o parâmetro.strongType
: (Opcional) Usado ao atribuir a definição de política através do portal. Fornece uma lista sensível ao contexto. Para obter mais informações, consulte strongType.assignPermissions
: (Opcional) Defina como true para que o portal do Azure crie atribuições de função durante a atribuição de políticas. Essa propriedade é útil caso você deseje atribuir permissões fora do escopo da atribuição. Há uma atribuição de função por definição de função na política (ou por definição de função em todas as políticas da iniciativa). O valor do parâmetro deve ser um recurso ou escopo válido.deprecated
: Um sinalizador booleano para indicar se um parâmetro foi preterido em uma definição interna.
defaultValue
: (Opcional) Define o valor do parâmetro em uma atribuição se nenhum valor for dado. Necessário ao atualizar uma definição de política existente que é atribuída. Para parâmetros de tipo de objeto, o valor deve corresponder ao esquema apropriado.allowedValues
: (Opcional) Fornece uma matriz de valores que o parâmetro aceita durante a atribuição.- Diferenciação de maiúsculas e minúsculas: as comparações de valores permitidas diferenciam maiúsculas de minúsculas ao atribuir uma política, o que significa que os valores de parâmetro selecionados na atribuição devem corresponder ao invólucro de valores na
allowedValues
matriz na definição. No entanto, uma vez que os valores são selecionados para a atribuição, a avaliação das comparações de cadeia de caracteres pode não diferenciar maiúsculas de minúsculas, dependendo da condição usada. Por exemplo, se o parâmetro especificarDev
como um valor de marca permitido em uma atribuição e esse valor for comparado a uma cadeia de caracteres de entrada usando a condição, a Política do Azure avaliará posteriormente um valor de marca como uma correspondência, mesmo que seja minúsculo porquenotEquals
não diferencia maiúsculasequals
dedev
minúsculas. - Para parâmetros de tipo de objeto, os valores devem corresponder ao esquema apropriado.
- Diferenciação de maiúsculas e minúsculas: as comparações de valores permitidas diferenciam maiúsculas de minúsculas ao atribuir uma política, o que significa que os valores de parâmetro selecionados na atribuição devem corresponder ao invólucro de valores na
schema
: (Opcional) Fornece validação de entradas de parâmetros durante a atribuição usando um esquema JSON autodefinido. Esta propriedade só é suportada para parâmetros de tipo objeto e segue a implementação do esquema Json.NET 2019-09. Você pode saber mais sobre como usar esquemas em https://json-schema.org/ e testar esquemas de rascunho em https://www.jsonschemavalidator.net/.
Parâmetros da amostra
Exemplo 1
Como exemplo, você pode definir uma definição de política para limitar os locais onde os recursos podem ser implantados. Um parâmetro para essa definição de política pode ser allowedLocations
usado por cada atribuição da definição de política para limitar os valores aceitos. O uso de strongType
fornece uma experiência aprimorada ao concluir a tarefa através do 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"
]
}
}
Uma entrada de exemplo para esse parâmetro do tipo matriz (sem strongType
) no momento da atribuição pode ser ["westus", "eastus2"]
.
Exemplo 2
Em um cenário mais avançado, você pode definir uma política que exija que os pods de cluster do Kubernetes usem rótulos especificados. Um parâmetro para essa definição de política pode ser labelSelector
usado por cada atribuição da definição de política para especificar os recursos do Kubernetes em questão com base em chaves e valores de rótulo:
"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
}
},
}
Uma entrada de exemplo para esse parâmetro de tipo de objeto no momento da atribuição estaria no formato JSON, validado pelo esquema especificado e poderia ser:
{
"matchLabels": {
"poolID": "abc123",
"nodeGroup": "Group1",
"region": "southcentralus"
},
"matchExpressions": [
{
"key": "name",
"operator": "In",
"values": [
"payroll",
"web"
]
},
{
"key": "environment",
"operator": "NotIn",
"values": [
"dev"
]
}
]
}
Usando um valor de parâmetro
Na regra de política, você faz referência a parâmetros com a seguinte parameters
sintaxe de função:
{
"field": "location",
"in": "[parameters('allowedLocations')]"
}
Esta amostra faz referência ao parâmetro que foi demonstrado nas propriedades dos allowedLocations
parâmetros.
strongType
Dentro da metadata
propriedade, você pode usar strongType
para fornecer uma lista de opções de seleção múltipla no portal do Azure. strongType
pode ser um tipo de recurso suportado ou um valor permitido. Para determinar se um tipo de recurso é válido para strongType
, use Get-AzResourceProvider. O formato de um tipo strongType
de recurso é <Resource Provider>/<Resource Type>
. Por exemplo, Microsoft.Network/virtualNetworks/subnets
.
Alguns tipos de recursos não retornados por Get-AzResourceProvider
são suportados. Esses tipos são:
Microsoft.RecoveryServices/vaults/backupPolicies
Os valores não permitidos do tipo de recurso são strongType
:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
Próximos passos
- Para obter mais informações sobre a estrutura de definição de política, vá para noções básicas, regra de política e alias.
- Para iniciativas, vá para a estrutura de definição da iniciativa.
- Analise exemplos em Exemplos de Política do Azure.
- Veja Compreender os efeitos do Policy.
- Entenda como criar políticas de forma programática.
- Saiba como obter dados de conformidade.
- Saiba como corrigir recursos não compatíveis.
- Analise o que é um grupo de gerenciamento com Organize seus recursos com grupos de gerenciamento do Azure.