Estrutura de atribuição do Azure Policy

As atribuições de política são usadas pela Política do Azure para definir quais recursos são atribuídos a quais políticas ou iniciativas. A atribuição de política pode determinar os valores dos parâmetros para esse grupo de recursos no momento da atribuição, tornando possível reutilizar definições de política que abordam as mesmas propriedades de recurso com diferentes necessidades de conformidade.

Nota

Para obter mais informações sobre o escopo da Política do Azure, consulte Entender o escopo na Política do Azure.

Você usa JavaScript Object Notation (JSON) para criar uma atribuição de política. A atribuição de política contém elementos para:

Por exemplo, o JSON a seguir mostra uma atribuição de política no modo DoNotEnforce com parâmetros dinâmicos:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "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": []
    }
}

Todos os exemplos de Política do Azure estão em Exemplos de Política do Azure.

Nome a apresentar e descrição

Use 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 descrição um comprimento máximo de 512 caracteres.

Metadados

A propriedade opcional metadata armazena informações sobre a atribuição de política. Os clientes podem definir quaisquer propriedades e valores úteis para sua organização no metadata. No entanto, existem algumas propriedades comuns usadas pela Política do Azure. Cada metadata propriedade tem um limite de 1.024 caracteres.

Propriedades comuns de metadados

  • assignedBy (string): O nome amigável da entidade de segurança que criou a atribuição.

  • createdBy (string): O GUID da entidade de segurança que criou a atribuição.

  • createdOn (string): O formato Universal ISO 8601 DateTime da hora de criação da atribuição.

  • parameterScopes (object): 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 de recursos usado no Portal para fornecer a lista de recursos disponíveis combinando strongType. Portal define esse valor se o escopo for diferente do escopo da atribuição. Se definido, uma edição da atribuição de política no Portal define 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 é para um parâmetro strongType chamado backupPolicyId que define um escopo para seleção de parameterScopes recursos quando a atribuição é editada no Portal.

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • updatedBy (string): o nome amigável da entidade de segurança que atualizou a atribuição, se houver.

  • updatedOn (string): O formato Universal ISO 8601 DateTime da hora de atualização da atribuição, se houver.

  • evidenceStorages (objeto): a conta de armazenamento padrão recomendada que deve ser usada para manter evidências para atestados para atribuições de política com efeito manual . A displayName propriedade é o nome da conta de armazenamento. A evidenceStorageAccountID propriedade é o ID do recurso da conta de armazenamento. A evidenceBlobContainer propriedade é o nome do contêiner de blob no qual você planeja armazenar as evidências.

    {
      "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 recursos

A propriedade opcional resourceSelectors facilita as práticas de implantação segura (SDP), permitindo que você implante gradualmente atribuições de política com base em fatores como local do recurso, tipo de recurso ou se um recurso tem um local. Quando os seletores de recursos são usados, a Política do Azure avaliará apenas os recursos que são aplicáveis às especificações feitas nos seletores de recursos. Os seletores de recursos também podem ser utilizados para restringir o âmbito das isenções da mesma forma.

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 estiver pronto para expandir o escopo de avaliação para sua política, basta modificar 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. Os valores permitidos são:

      • resourceLocation: Esta propriedade é usada para selecionar recursos com base em seu tipo. Não pode ser usado no mesmo seletor de recursos que resourceWithoutLocationo .

      • resourceType: Esta propriedade é usada para selecionar recursos com base em seu tipo.

      • resourceWithoutLocation: Esta propriedade é usada para selecionar recursos no nível da assinatura que não têm um local. Atualmente só suporta subscriptionLevelResources. Não pode ser usado no mesmo seletor de recursos que resourceLocationo .

    • in: A lista de valores permitidos para o .kind Não pode ser usado com notIn. Pode conter até 50 valores.

    • notIn: A lista de valores não permitidos para o .kind Não pode ser usado com in. Pode conter até 50 valores.

Um seletor de recursos pode conter vários seletores. Para ser aplicável a um seletor de recursos, um recurso deve atender aos requisitos especificados por todos os seus seletores. Além disso, até 10 seletores de recursos podem ser especificados em uma única atribuição. Os recursos no escopo são avaliados quando satisfazem qualquer um desses seletores de recursos.

Substituições

A propriedade opcional overrides permite alterar o efeito de uma definição de política sem modificar a definição de política subjacente ou usar um efeito parametrizado na definição de política.

O caso de uso mais comum para substituições é o de iniciativas políticas com um grande número de definições de políticas associadas. Nessa situação, o gerenciamento de múltiplos efeitos de política pode consumir um esforço administrativo significativo, especialmente quando o efeito precisa ser atualizado de tempos em tempos. As substituições podem ser usadas para atualizar simultaneamente os efeitos de várias definições de política dentro de uma iniciativa.

Vamos ver um exemplo. Imagine que você tem uma iniciativa de política chamada CostManagement que inclui uma definição de política personalizada com policyDefinitionReferenceIdcorpVMSizePolicy e um único efeito de audit. Suponha que você queira atribuir a iniciativa CostManagement, mas ainda não queira ver a conformidade relatada para essa política. O efeito de "auditoria" desta política pode ser substituído por "desativado" por meio de uma substituição na atribuição da iniciativa, conforme 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"
}

As substituições têm as seguintes propriedades:

  • kind: A propriedade que a atribuição substituirá. O tipo suportado é policyEffect.

  • value: O novo valor que substitui o valor existente. Os valores suportados são efeitos.

  • selectors: (Opcional) A propriedade usada para determinar qual escopo da atribuição de política deve assumir a substituição.

    • kind: A propriedade de um seletor que descreve qual característica reduzirá o escopo da substituição. O valor permitido para kind: policyEffect é:

      • policyDefinitionReferenceId: Especifica quais definições de política dentro de uma atribuição de iniciativa devem assumir a substituição do efeito.
    • in: A lista de valores permitidos para o .kind Não pode ser usado com notIn. Pode conter até 50 valores.

    • notIn: A lista de valores não permitidos para o .kind Não pode ser usado com in. Pode conter até 50 valores.

Observe que uma substituição pode ser usada para substituir o efeito de muitas políticas especificando vários valores na matriz policyDefinitionReferenceId. Uma única substituição pode ser usada para até 50 policyDefinitionReferenceIds, e uma única atribuição de política pode conter até 10 substituições, avaliadas na ordem em que são especificadas. Antes de a atribuição ser criada, o efeito escolhido na substituição é validado em relação à regra de política e à lista de valores permitidos (nos casos em que o efeito é parametrizado).

Modo de imposição

A propriedade enforcementMode fornece aos clientes a capacidade de testar o resultado de uma política em recursos existentes sem iniciar o efeito de política ou acionar entradas no log de atividades do Azure.

Esse cenário é comumente chamado de "E Se" e se alinha às práticas de implantação seguras. enforcementMode é diferente do efeito Disabled, pois esse efeito impede que a avaliação de recursos aconteça.

Esta propriedade tem os seguintes valores:

Modo Valor JSON Tipo Remediar manualmente Erro do registo de atividades Description
Ativado Predefinição string Yes Yes O efeito da política é imposto durante a criação ou atualização de recursos.
Desativado DoNotEnforce string Yes No O efeito da política não é imposto durante a criação ou atualização de recursos.

Se enforcementMode não for especificado em uma definição de política ou iniciativa, o valor Default será usado. As tarefas de correção podem ser iniciadas para políticas deployIfNotExists , mesmo quando enforcementMode está definido como DoNotEnforce.

Âmbitos 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 recurso filho não tiver a definição aplicada, cada um poderá ser excluído da avaliação definindo notScopes. Esta propriedade é uma matriz para permitir a exclusão de um ou mais contêineres de recursos ou recursos da avaliação. notScopes podem ser adicionados ou atualizados após a criação da atribuição inicial.

Nota

Um recurso excluído é diferente de um recurso isento . Para obter mais informações, veja Compreender o âmbito no Azure Policy.

ID de definição de política

Este campo deve ser o nome completo do caminho de uma definição de política ou de uma definição de iniciativa. 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 é avaliada. Recomenda-se que, se várias políticas forem frequentemente atribuídas juntas, use uma iniciativa .

Mensagens de não conformidade

Para definir uma mensagem personalizada que descreva 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. Este nó é uma matriz de message entradas. Esta mensagem personalizada é adicional à mensagem de erro padrão para não conformidade e é opcional.

Importante

As mensagens personalizadas para não conformidade só são suportadas 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, mensagens diferentes podem ser configuradas para cada definição de política na iniciativa. As mensagens usam o policyDefinitionReferenceId valor configurado na definição da iniciativa. Para obter detalhes, consulte propriedades de definições de política.

"nonComplianceMessages": [
    {
        "message": "Default message"
    },
    {
        "message": "Message for just this policy definition by reference ID",
        "policyDefinitionReferenceId": "10420126870854049575"
    }
]

Parâmetros

Este segmento da atribuição de política fornece os valores para os parâmetros definidos na definição de política ou na definição de iniciativa. Esse design torna possível reutilizar uma definição de política ou iniciativa com recursos diferentes, mas verificar valores ou resultados de negócios diferentes.

"parameters": {
    "prefix": {
        "value": "DeptA"
    },
    "suffix": {
        "value": "-LC"
    }
}

Neste exemplo, os parâmetros previamente definidos na definição de política são prefix e suffix. Esta atribuição de política específica é definida prefix como DeptA e suffix -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 e, ao mesmo tempo, proporcionando flexibilidade.

Identidade

Para atribuições de política com efeito definido como deployIfNotExist ou modificar, é necessário ter uma propriedade identity para fazer correção em recursos não compatíveis. Ao usar a identidade, o usuário também deve especificar um local para a atribuição.

Nota

Uma única 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/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

Próximos passos