Tutorial: Gerenciar a governança de marca com o Azure Policy

Marcas representam um aspecto fundamental da organização dos recursos do Azure em uma taxonomia. Ao seguir as práticas recomendadas para gerenciamento de marcas, essas podem ser a base de aplicação das suas políticas de negócios com o Azure Policy ou para controlar custos com o Gerenciamento de Custos. Não importa como ou por quê você usa essas marcas, é importante que possa adicionar, alterar e removê-las rapidamente de seus recursos do Azure. Para ver se o recurso do Azure dá suporte à marcação, confira Suporte a marcas.

O efeito Modificar do Azure Policy foi desenvolvido para ajudar na governança das marcas, independentemente do estágio atual da governança do recurso. O Modificar ajuda quando:

  • Você não tem experiência na nuvem e não tem qualquer governança de marca
  • Você já tem milhares de recursos sem governança de marca
  • Você já tem uma taxonomia que precisa de mudança

Neste tutorial, você concluirá as seguintes tarefas:

  • Identificar seus requisitos de negócios
  • Mapear cada requisito para uma definição de política
  • Agrupar as políticas de tag em uma iniciativa

Pré-requisitos

Para concluir este tutorial, você precisa de uma assinatura do Azure. Se você não tiver uma, crie uma conta gratuita antes de começar.

Identificar os requisitos

Como qualquer implementação de qualidade dos controles de governança, os requisitos devem vir das necessidades de seus negócios e estarem bem definidos antes da criação dos controles técnicos. Para o tutorial deste cenário, os itens a seguir são nossos requisitos de negócios:

  • Duas marcas obrigatórias em todos os recursos: CostCenter e Env
  • CostCenter deve existir em todos os contêineres e recursos individuais
    • Os recursos herdam do contêiner no qual residem, mas podem ser substituídos individualmente
  • Env deve existir em todos os contêineres e recursos individuais
    • Os recursos determinam o ambiente por esquema de nomenclatura do contêiner e não podem ser substituídos
    • Todos os recursos em um contêiner fazem parte do mesmo ambiente

Configurar a marca CostCenter

Em termos específicos a um ambiente do Azure gerenciado pelo Azure Policy, os requisitos da marca CostCenter exigem os seguintes resultados:

  • Negar grupos de recursos que não tenham a marca CostCenter
  • Modificar recursos para adicionar a marca CostCenter do grupo de recursos pai quando esta não estiver presente

Negar grupos de recursos que não tenham a marca CostCenter

Como a marca CostCenter de um grupo de recursos não pode ser determinada pelo nome do grupo de recursos, ela deve ser definida na solicitação para criar o grupo de recursos. A regra de política a seguir com o efeito Deny impede a criação ou atualização de grupos de recursos que não tenham a marca CostCenter:

"if": {
    "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "tags['CostCenter']",
            "exists": false
        }
    ]
},
"then": {
    "effect": "deny"
}

Observação

Como essa regra de política é direcionada a um grupo de recursos, o mode na definição de política deve ser "All" em vez de "Indexed".

Modificar os recursos para que herdem a marca CostCenter quando não estiver presente

A segunda necessidade de CostCenter é que qualquer recurso herde a marca do grupo de recursos pai quando esta não estiver presente. Se a marca já está definida no recurso, mesmo se é diferente do grupo de recursos pai, ela deve ser mantida sozinha. A regra de política a seguir usa Modificar:

"policyRule": {
    "if": {
        "field": "tags['CostCenter']",
        "exists": "false"
    },
    "then": {
        "effect": "modify",
        "details": {
            "roleDefinitionIds": [
                "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
            ],
            "operations": [{
                "operation": "add",
                "field": "tags['CostCenter']",
                "value": "[resourcegroup().tags['CostCenter']]"
            }]
        }
    }
}

Essa regra de política usa a operação add em vez de addOrReplace, pois não queremos alterar o valor da marca se ela estiver presente ao corrigir recursos existentes. Ela também usa a função de modelo [resourcegroup()] para obter o valor da marca do grupo de recursos pai.

Observação

Como essa regra de política é direcionada a recursos que oferecem suporte a marcas, o mode na definição da política deve ser "Indexed". Essa configuração também garante que essa política ignore grupos de recursos.

Configurar a marca Env

Em termos específicos a um ambiente do Azure gerenciado pelo Azure Policy, os requisitos da marca Env exigem os seguintes resultados:

  • Modificar a marca Env no grupo de recursos com base no esquema de nomenclatura do grupo de recursos
  • Modificar a marca Env em todos os recursos do grupo de recursos para que seja a mesma do grupo de recursos pai

Modificar a marca Env dos grupos de recursos com base no nome

É necessário ter uma política Modificar para cada ambiente existente em seu ambiente do Azure. A política Modificar de cada um é semelhante a esta definição de política:

"policyRule": {
    "if": {
        "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "name",
            "like": "prd-*"
        },
        {
            "field": "tags['Env']",
            "notEquals": "Production"
        }

    ]
    },
    "then": {
        "effect": "modify",
        "details": {
            "roleDefinitionIds": [
                "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
            ],
            "operations": [{
                "operation": "addOrReplace",
                "field": "tags['Env']",
                "value": "Production"
            }]
        }
    }
}

Observação

Como essa regra de política é direcionada a um grupo de recursos, o mode na definição de política deve ser "All" em vez de "Indexed".

Essa política só corresponde os grupos de recursos ao esquema de nomenclatura de exemplo usado para recursos de produção de prd-. É possível alcançar um esquema de nomenclatura mais complexo com várias condições de match em vez do único like desse exemplo.

Modificar recursos para herdar a marca Env

O requisito de negócios exige que todos os recursos tenham a mesma marca Env de seu grupo de recursos pai. Essa marca não pode ser substituída, portanto usaremos a operação addOrReplace com efeito o Modificar. O exemplo de política Modificar é semelhante à seguinte regra:

"policyRule": {
    "if": {
        "anyOf": [{
            "field": "tags['Env']",
            "notEquals": "[resourcegroup().tags['Env']]"
        },
        {
            "field": "tags['Env']",
            "exists": false
        }
    ]
    },
    "then": {
        "effect": "modify",
        "details": {
            "roleDefinitionIds": [
                "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
            ],
            "operations": [{
                "operation": "addOrReplace",
                "field": "tags['Env']",
                "value": "[resourcegroup().tags['Env']]"
            }]
        }
    }
}

Observação

Como essa regra de política é direcionada a recursos que oferecem suporte a marcas, o mode na definição da política deve ser "Indexed". Essa configuração também garante que essa política ignore grupos de recursos.

Essa regra de política procura qualquer recurso que não tenha o valor dos grupos de recursos pai para a marca Env ou que não tenha a marca Env. Os recursos correspondentes têm a marca Env definida com o valor dos grupos de recursos pai, mesmo que a marca já exista no recurso, mas com um valor diferente.

Atribuir a iniciativa e corrigir recursos

Após a criação das políticas de marca acima, junte-as em uma única iniciativa para governança de marcas e atribua-as a um grupo de gerenciamento ou assinatura. Em seguida, a iniciativa e as políticas incluídas avaliam a conformidade dos recursos existentes e alteram as solicitações de recursos novos ou atualizados que correspondam à propriedade if na regra de política. No entanto, a política não atualiza automaticamente os recursos existentes sem conformidade com as alterações de marca definidas.

Assim como as políticas deployIfNotExists, a política Modificar usa tarefas de correção para alterar os recursos existentes sem conformidade. Siga as instruções em Como corrigir recursos para identificar seus recursos Modificar sem conformidade e corrija as marcas em sua taxonomia definida.

Limpar os recursos

Se você estiver trabalhando com os recursos deste tutorial, use as etapas a seguir para excluir qualquer uma das atribuições ou definições criadas acima:

  1. Selecione Definições (ou Atribuições se você estiver tentando excluir uma atribuição) em Criação no lado esquerdo da página Azure Policy.

  2. Pesquisar pela nova iniciativa ou definição de política (ou atribuição) que você quer remover.

  3. Clique com o botão direito na linha e selecione as reticências no final da definição ou da atribuição e selecione Excluir Definição (ou Excluir Atribuição).

Revisão

Neste tutorial, você aprendeu as seguintes tarefas:

  • Identificou seus requisitos de negócios
  • Mapeou cada requisito para uma definição de política
  • Agrupou as políticas de marca em uma iniciativa

Próximas etapas

Para saber mais sobre as estruturas das definições de políticas, consulte este artigo: