Estrutura de atribuição do Azure Policy
As atribuições de políticas definem quais recursos são avaliados por uma definição de política ou iniciativa. Além disso, a atribuição de política pode determinar os valores de parâmetros para esse grupo de recursos no momento da atribuição, possibilitando a reutilização de definições de política que abordam as mesmas propriedades de recurso com diferentes necessidades de conformidade.
Você usa JSON (JavaScript Object Notation) para criar uma atribuição de política. A atribuição de políticas contém elementos para:
- escopo
- ID e versão de definição de política
- nome de exibição
- descrição
- metadados
- seletores de recurso
- substitui
- modo de imposição
- escopos excluídos
- mensagens de não conformidade
- parameters
- identity
Por exemplo, o JSON a seguir mostra uma solicitação de atribuição de política de exemplo no modo DoNotEnforce com parâmetros:
{
"properties": {
"displayName": "Enforce resource naming rules",
"description": "Force resource names to begin with DeptA and end with -LC",
"definitionVersion": "1.*.*",
"metadata": {
"assignedBy": "Cloud Center of Excellence"
},
"enforcementMode": "DoNotEnforce",
"notScopes": [],
"policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
"nonComplianceMessages": [
{
"message": "Resource names must start with 'DeptA' and end with '-LC'."
}
],
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
},
"identity": {
"type": "SystemAssigned"
},
"resourceSelectors": [],
"overrides": []
}
}
Escopo
O escopo usado para o momento de criação do recurso de atribuição é o principal fator de aplicabilidade de recursos. Para mais informações sobre o escopo de atribuição, confira Entender o escopo na Azure Policy.
ID e versão de definição de política (versão prévia)
Esse campo deve ser o nome do caminho completo de uma definição de política ou uma definição de iniciativa. O policyDefinitionId
é uma cadeia de caracteres e não uma matriz. O conteúdo mais recente da definição ou iniciativa de política atribuída é recuperado sempre que a atribuição de política for avaliada. A recomendação é que, se várias políticas forem frequentemente atribuídas juntas, use uma iniciativa em vez disso.
Para definições e iniciativas integradas, você pode usar o definitionVersion
específico para avaliar. Por padrão, a versão é definida como a versão principal mais recente, com ingestão automática de alterações menores e patches.
- Para ingerir automaticamente as alterações secundárias da definição, o número da versão deve ser
#.*.*
. O curinga representa a ingestão automática de atualizações. - Para fixar em um caminho de versão secundária, o formato de versão deve ser
#.#.*
. - Todas as alterações de patch devem ser ingeridas automaticamente para fins de segurança. As alterações de patch são limitadas a alterações de texto e cenários de emergência.
Nome de exibição e descrição
Você usa displayName
e description
para identificar a atribuição de política e fornecer contexto para seu uso com o conjunto específico de recursos. displayName
tem um comprimento máximo de 128 caracteres e description
um comprimento máximo de 512 caracteres.
Metadados
A propriedade metadata
opcional armazena informações sobre a atribuição da política. Os clientes podem definir quaisquer propriedades e valores úteis para sua organização no metadata
. No entanto, há algumas propriedades comuns usadas pelo Azure Policy. Cada propriedade metadata
tem um limite de 1.024 caracteres.
Propriedades de metadados comuns
assignedBy
(cadeia de caracteres): o nome amigável da entidade de segurança que criou a atribuição.createdBy
(cadeia de caracteres): o GUID da entidade de segurança que criou a atribuição.createdOn
(cadeia de caracteres): o formato de data/hora ISO 8601 universal da hora de criação da atribuição.updatedBy
(cadeia de caracteres): o nome amigável da entidade de segurança que atualizou a atribuição, se houver.updatedOn
(cadeia de caracteres): o formato de data/hora ISO 8601 universal da hora da atualização da atribuição, se houver.
Propriedades de metadados específicas do cenário
parameterScopes
(objeto): uma coleção de pares chave-valor em que a chave corresponde a um nome de parâmetro strongType configurado e o valor define o escopo do recurso usado no Portal para fornecer a lista de recursos disponíveis por meio do strongType correspondente. O Portal definirá esse valor se o escopo for diferente do escopo de atribuição. Se definido, uma edição da atribuição de política no Portal definirá automaticamente o escopo do parâmetro para esse valor. No entanto, o escopo não está bloqueado para o valor e pode ser alterado para outro escopo.O exemplo a seguir de
parameterScopes
é para um parâmetro strongType nomeadobackupPolicyId
que define um escopo para a seleção de recursos quando a atribuição é editada no portal."metadata": { "parameterScopes": { "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}" } }
evidenceStorages
(objeto): a conta de armazenamento padrão recomendada que deve ser usada para comprovar os atestados para as atribuições de política com um efeito demanual
. A propriedadedisplayName
é o nome da conta de armazenamento. A propriedadeevidenceStorageAccountID
é a ID do recurso da conta de armazenamento. A propriedadeevidenceBlobContainer
é o nome do contêiner de blob no qual você planeja armazenar a evidência.{ "properties": { "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.", "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}", "metadata": { "evidenceStorages": [ { "displayName": "Default evidence storage", "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}", "evidenceBlobContainer": "evidence-container" } ] } } }
Seletores de recurso
A propriedade opcional resourceSelectors
facilita a SDP (prática de implantação segura), permitindo que você implemente gradativamente as atribuições de política de acordo com fatores como localização de recursos, tipo de recurso ou se um recurso tem um local. Quando os seletores de recursos são usados, a Azure Policy só avalia os recursos que são aplicáveis às especificações feitas nos seletores de recursos. Os seletores de recursos também podem ser usados para restringir o escopo das isenções da mesma maneira.
No cenário de exemplo a seguir, a nova atribuição de política é avaliada somente se o local do recurso for Leste dos EUA ou Oeste dos EUA.
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [
"eastus",
"westus"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
Quando você estiver pronto para expandir o escopo de avaliação para a política, basta atualizar a atribuição. O exemplo a seguir mostra nossa atribuição de política com mais duas regiões do Azure adicionadas ao seletor SDPRegions. Observe que, neste exemplo, SDP significa Prática de Implantação Segura:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [
"eastus",
"westus",
"centralus",
"southcentralus"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
Os seletores de recursos têm as seguintes propriedades:
name
: o nome do seletor de recursos.selectors
: (opcional) a propriedade usada para determinar qual subconjunto de recursos aplicável à atribuição de política deve ser avaliado quanto à conformidade.kind
: a propriedade de um seletor que descreve qual característica restringe o conjunto de recursos avaliados. Cada tipo só pode ser usado uma vez em um único seletor de recursos. Valores permitidos são:resourceLocation
: essa propriedade é usada para selecionar os recursos de acordo com o tipo. Não pode ser usado no mesmo seletor de recursos queresourceWithoutLocation
.resourceType
: essa propriedade é usada para selecionar os recursos de acordo com o tipo.resourceWithoutLocation
: esta propriedade é usada para selecionar os recursos no nível da assinatura que não têm um local. No momento, há suporte somente parasubscriptionLevelResources
. Não pode ser usado no mesmo seletor de recursos queresourceLocation
.
in
: a lista de valores permitidos para okind
especificado. Não pode ser usado comnotIn
. Pode conter até 50 valores.notIn
: a lista de valores não permitidos para okind
especificado. Não pode ser usado comin
. Pode conter até 50 valores.
Um seletor de recursos pode conter vários selectors
. Para ser aplicável a um seletor de recursos, um recurso deve atender aos requisitos especificados por todos os seletores. Além disso, até 10 resourceSelectors
podem ser especificados em uma única atribuição. Os recursos no escopo são avaliados quando atendem a qualquer um desses seletores de recursos.
Substituições
A propriedade overrides
opcional permite que você altere o efeito de uma definição de política sem alterar a definição de política subjacente ou usar um efeito com parâmetros na definição de política.
Um caso de uso comum para substituições em efeito se refere a iniciativas de política com um grande número de definições de política associadas. Nessa situação, o gerenciamento de vários efeitos de política pode consumir um esforço administrativo considerável, especialmente quando o efeito precisa ser atualizado periodicamente. As substituições podem ser usadas para atualizar simultaneamente os efeitos de várias definições de política em uma iniciativa.
Vamos dar uma olhada em um exemplo. Imagine que você tem uma iniciativa de política chamada CostManagement, que inclui uma definição de política personalizada com policyDefinitionReferenceId
corpVMSizePolicy e apenas um efeito de audit
. Suponha que você queira atribuir a iniciativa CostManagement, mas ainda não quer ver a conformidade relatada para essa política. O efeito desta política audit
pode ser substituído por disabled
através de uma substituição na atribuição da iniciativa, como mostrado no exemplo a seguir:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
"overrides": [
{
"kind": "policyEffect",
"value": "disabled",
"selectors": [
{
"kind": "policyDefinitionReferenceId",
"in": [
"corpVMSizePolicy"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
"type": "Microsoft.Authorization/policyAssignments",
"name": "CostManagement"
}
Outro caso de uso comum para substituições é a distribuição de uma nova versão de uma definição. Para obter as etapas recomendadas para atualizar com segurança uma versão de atribuição, consulte Implantação segura de política.
Substituições têm as seguintes propriedades:
kind
: A propriedade que a atribuição substitui. Os tipos com suporte sãopolicyEffect
epolicyVersion
.value
: o novo valor que substitui o valor existente. Parakind: policyEffect
, os valores com suporte são efeitos. Parakind: policyVersion
, o número de versão com suporte deve ser maior ou igual aodefinitionVersion
especificado na atribuição.selectors
: (opcional) a propriedade usada para determinar qual escopo da atribuição de política deve assumir na substituição.kind
: A propriedade de um seletor que descreve qual característica restringe o escopo da substituição. Valores permitidos parakind: policyEffect
:policyDefinitionReferenceId
: Essa propriedade especifica quais definições de política dentro de uma atribuição de iniciativa devem assumir a substituição do efeito.resourceLocation
: essa propriedade é usada para selecionar os recursos de acordo com o tipo. Não pode ser usado no mesmo seletor de recursos queresourceWithoutLocation
.
Valor permitido para
kind: policyVersion
:resourceLocation
: essa propriedade é usada para selecionar os recursos de acordo com o tipo. Não pode ser usado no mesmo seletor de recursos queresourceWithoutLocation
.
in
: a lista de valores permitidos para okind
especificado. Não pode ser usado comnotIn
. Pode conter até 50 valores.notIn
: a lista de valores não permitidos para okind
especificado. Não pode ser usado comin
. Pode conter até 50 valores.
Uma única substituição pode ser usada para substituir o efeito de várias políticas, especificando vários valores na matriz policyDefinitionReferenceId
. Uma única substituição pode ser usada para até 50 policyDefinitionReferenceId
, e uma única atribuição de política pode conter até 10 substituições, avaliadas na ordem em que foram especificadas. Antes da criação da atribuição, o efeito escolhido na substituição é validado em relação à regra de política e à lista de valores permitidos de parâmetro (nos casos em que o efeito é parametrizado).
Modo de imposição
A propriedade enforcementMode
oferece aos clientes a capacidade de testar o resultado de uma política em recursos existentes sem iniciar o efeito da política ou disparar entradas no log de Atividade do Azure.
Este cenário é comumente chamado de What If e está alinhado às práticas de implantação segura. O enforcementMode
é diferente do efeito Desabilitado, pois esse efeito impede que a avaliação de recursos aconteça.
Esta propriedade possui os seguintes valores:
Mode | Valor JSON | Tipo | Corrigir manualmente | Entrada do log de atividades | Descrição |
---|---|---|---|---|---|
habilitado | Padrão | string | Sim | Sim | O efeito de política é imposto durante a criação ou atualização do recurso. |
Desabilitado | DoNotEnforce | string | Sim | Não | O efeito de política não é imposto durante a criação ou atualização do recurso. |
Se enforcementMode
não for especificado em uma definição de política ou iniciativa, o valor Padrão será usado. As tarefas de correção podem ser iniciadas para políticas deployIfNotExists, mesmo quando enforcementMode
estiver definido como DoNotEnforce.
Escopos excluídos
O escopo da atribuição inclui todos os contêineres de recursos filho e recursos filho. Se um contêiner de recurso filho ou um recurso filho não precisar ter a definição aplicada, cada um deles poderá ser excluído da avaliação por meio da configuração notScopes
. Essa propriedade é uma matriz para habilitar a exclusão de um ou mais contêineres de recursos ou recursos da avaliação. notScopes
pode ser adicionado ou atualizado após a criação da atribuição inicial.
Observação
Um recurso excluído é diferente de um recurso isento. Para obter mais informações, veja Noções básicas do escopo no Azure Policy.
Mensagens de não conformidade
Para definir uma mensagem personalizada que descreve por que um recurso não está em conformidade com a definição de política ou iniciativa, defina nonComplianceMessages
na definição de atribuição. O nó é uma matriz de entradas de message
. Essa mensagem personalizada é um acréscimo à mensagem de erro padrão para não conformidade e é opcional.
Importante
As mensagens personalizadas de não conformidade são suportadas apenas em definições ou iniciativas com definições de modos do Resource Manager.
"nonComplianceMessages": [
{
"message": "Default message"
}
]
Se a atribuição for para uma iniciativa, diferentes mensagens poderão ser configuradas para cada definição de política na iniciativa. As mensagens usam o valor policyDefinitionReferenceId
configurado na definição da iniciativa. Para mais informações, confira propriedades das definições de política.
"nonComplianceMessages": [
{
"message": "Default message"
},
{
"message": "Message for just this policy definition by reference ID",
"policyDefinitionReferenceId": "10420126870854049575"
}
]
Parâmetros
Esse segmento da atribuição de políticas fornece os valores para os parâmetros definidos na definição de política ou definição de iniciativa. Esse design possibilita reutilizar uma definição de política ou iniciativa com recursos diferentes, mas verifica diferentes valores comerciais ou resultados.
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
}
Neste exemplo, os parâmetros definidos anteriormente na definição de política são prefix
e suffix
. Essa atribuição de políticas específica define prefix
como DeptA e suffix
para -LC. A mesma definição de política é reutilizável com um conjunto diferente de parâmetros para um departamento diferente, reduzindo a duplicação e a complexidade das definições de política, oferecendo flexibilidade.
Identidade
Para atribuições de política com efeito definido como deployIfNotExists
ou modify
, é necessário ter uma propriedade de identidade para fazer a correção em recursos sem conformidade. Quando uma atribuição usa uma identidade, o usuário também deve especificar uma localização para a atribuição.
Observação
Uma só atribuição de política pode ser associada a apenas uma identidade gerenciada atribuída pelo sistema ou pelo usuário. No entanto, essa identidade pode ser atribuída a mais de uma função, se necessário.
# System-assigned identity
"identity": {
"type": "SystemAssigned"
}
# User-assigned identity
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/SubscriptionID/resourceGroups/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
}
},
Próximas etapas
- Saiba mais sobre a estrutura da definição de política.
- Entenda como criar políticas de forma programática.
- Saiba como obter dados de conformidade.
- Saiba como corrigir recursos fora de conformidade.
- Veja o que é um grupo de gerenciamento com Organizar seus recursos com grupos de gerenciamento do Azure.