Tutorial: Gerir a governação com a Política AzureTutorial: Manage tag governance with Azure Policy

As etiquetas são uma parte crucial da organização dos seus recursos Azure numa taxonomia.Tags are a crucial part of organizing your Azure resources into a taxonomy. Ao seguir as melhores práticas de gestão de etiquetas,as etiquetas podem ser a base para aplicar as suas políticas de negócio com a Azure Policy ou monitorizar custos com a Gestão de Custos.When following best practices for tag management, tags can be the basis for applying your business policies with Azure Policy or tracking costs with Cost Management. Não importa como ou por que usa tags, é importante que possa adicionar, alterar e remover essas etiquetas nos seus recursos Azure.No matter how or why you use tags, it's important that you can quickly add, change, and remove those tags on your Azure resources. Para ver se o seu recurso Azure suporta a marcação, consulte o suporte da Tag.To see if your Azure resource supports tagging, see Tag support.

O efeito modificação da Política Azure destina-se a ajudar na governação das etiquetas, independentemente da fase da governação dos recursos em que se encontra.Azure Policy's Modify effect is designed to aid in the governance of tags no matter what stage of resource governance you are in. Modificar ajuda quando:Modify helps when:

  • És novo na nuvem e não tens uma governação de etiquetas.You're new to the cloud and have no tag governance
  • Já tem milhares de recursos sem governaçãoAlready have thousands of resources with no tag governance
  • Já tem uma taxonomia existente que precisa mudarAlready have an existing taxonomy that you need changed

Neste tutorial, completará as seguintes tarefas:In this tutorial, you'll complete the following tasks:

  • Identifique os seus requisitos de negócioIdentify your business requirements
  • Mapear cada requisito para uma definição de políticaMap each requirement to a policy definition
  • Agrupar as políticas de etiquetas numa iniciativaGroup the tag policies into an initiative

Pré-requisitosPrerequisites

Para concluir este tutorial, precisa de uma subscrição do Azure.To complete this tutorial, you need an Azure subscription. Se não tiver uma, crie uma conta gratuita antes de começar.If you don't have one, create a free account before you begin.

Identificar requisitosIdentify requirements

Como qualquer boa implementação dos controlos de governação, os requisitos devem vir das necessidades do seu negócio e ser bem compreendidos antes de criar controlos técnicos.Like any good implementation of governance controls, the requirements should come from your business needs and be well understood before creating technical controls. Para este cenário tutorial, os seguintes itens são os nossos requisitos de negócio:For this scenario tutorial, the following items are our business requirements:

  • Duas etiquetas necessárias em todos os recursos: CostCenter e EnvTwo required tags on all resources: CostCenter and Env
  • CostCenter deve existir em todos os contentores e recursos individuaisCostCenter must exist on all containers and individual resources
    • Os recursos herdam do contentor em que estão, mas podem ser individualmente ultrapassados.Resources inherit from the container they're in, but may be individually overridden
  • Env deve existir em todos os contentores e recursos individuaisEnv must exist on all containers and individual resources
    • Os recursos determinam o ambiente através de um esquema de nomeação de contentores e não podem ser ultrapassadosResources determine environment by container naming scheme and may not be overridden
    • Todos os recursos num contentor fazem parte do mesmo ambienteAll resources in a container are part of the same environment

Configure a etiqueta CostCenterConfigure the CostCenter tag

Em termos específicos de um ambiente Azure gerido pela Azure Policy, os requisitos de etiquetas CostCenter exigem os seguintes resultados:In terms specific to an Azure environment managed by Azure Policy, the CostCenter tag requirements call for the following outcomes:

  • Negar grupos de recursos que faltem à etiqueta CostCenterDeny resource groups missing the CostCenter tag
  • Modifique os recursos para adicionar a etiqueta CostCenter do grupo de recursos-mãe quando faltarModify resources to add the CostCenter tag from the parent resource group when missing

Negar grupos de recursos que faltem à etiqueta CostCenterDeny resource groups missing the CostCenter tag

Uma vez que o CostCenter para um grupo de recursos não pode ser determinado pelo nome do grupo de recursos, deve ter a etiqueta definida no pedido de criação do grupo de recursos.Since the CostCenter for a resource group can't be determined by the name of the resource group, it must have the tag defined on the request to create the resource group. A seguinte regra política com o efeito Deny impede a criação ou atualização de grupos de recursos que não têm a etiqueta CostCenter:The following policy rule with the Deny effect prevents the creation or updating of resource groups that don't have the CostCenter tag:

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

Nota

Como esta regra política visa um grupo de recursos, o modo na definição de política deve ser "All" em vez de "Indexado".As this policy rule targets a resource group, the mode on the policy definition must be 'All' instead of 'Indexed'.

Modifique recursos para herdar a etiqueta CostCenter quando faltarModify resources to inherit the CostCenter tag when missing

A segunda necessidade do CostCenter é que quaisquer recursos herdem a etiqueta do grupo de recursos dos pais quando falta.The second CostCenter need is for any resources to inherit the tag from the parent resource group when it's missing. Se a etiqueta já estiver definida no recurso, mesmo que diferente do grupo de recursos dos pais, deve ser deixada em paz.If the tag is already defined on the resource, even if different from the parent resource group, it must be left alone. A seguinte regra de política utiliza Modificação:The following policy rule uses Modify:

"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']]"
            }]
        }
    }
}

Esta regra de política usa a operação de adição em vez de addOrReplace, uma vez que não queremos alterar o valor da etiqueta se estiver presente na remediação dos recursos existentes.This policy rule uses the add operation instead of addOrReplace as we don't want to alter the tag value if it's present when remediating existing resources. Também usa a [resourcegroup()] função de modelo para obter o valor da etiqueta do grupo de recursos dos pais.It also uses the [resourcegroup()] template function to get the tag value from the parent resource group.

Nota

Uma vez que esta regra política visa recursos que suportam etiquetas, o modo na definição de política deve ser "Indexado".As this policy rule targets resources that support tags, the mode on the policy definition must be 'Indexed'. Esta configuração também garante que esta política ignora grupos de recursos.This configuration also ensures this policy skips resource groups.

Configure a etiqueta EnvConfigure the Env tag

Em termos específicos de um ambiente Azure gerido pela Azure Policy, os requisitos da etiqueta Env exigem os seguintes resultados:In terms specific to an Azure environment managed by Azure Policy, the Env tag requirements call for the following outcomes:

  • Modifique a etiqueta Env no grupo de recursos com base no esquema de nomeação do grupo de recursosModify the Env tag on the resource group based on the naming scheme of the resource group
  • Modifique a etiqueta Env em todos os recursos do grupo de recursos para o mesmo que o grupo de recursos-mãeModify the Env tag on all resources in the resource group to the same as the parent resource group

Modificar grupos de recursos Env tag com base no nomeModify resource groups Env tag based on name

É necessária uma política de modificação para cada ambiente que exista no seu ambiente Azure.A Modify policy is required for each environment that exists in your Azure environment. A política de modificação para cada um se parece com esta definição de política:The Modify policy for each looks something like this policy definition:

"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"
            }]
        }
    }
}

Nota

Como esta regra política visa um grupo de recursos, o modo na definição de política deve ser "All" em vez de "Indexado".As this policy rule targets a resource group, the mode on the policy definition must be 'All' instead of 'Indexed'.

Esta política apenas corresponde aos grupos de recursos com o sistema de nomeação de amostras utilizado para os recursos de produção de prd- .This policy only matches resource groups with the sample naming scheme used for production resources of prd-. Esquemas de nomeação mais complexos podem ser alcançados com várias condições de jogo em vez de um único como neste exemplo.More complex naming scheme's can be achieved with several match conditions instead of the single like in this example.

Modificar recursos para herdar a etiqueta EnvModify resources to inherit the Env tag

A exigência do negócio exige que todos os recursos tenham a etiqueta Env que o seu grupo de recursos-mãe faz.The business requirement calls for all resources to have the Env tag that their parent resource group does. Esta etiqueta não pode ser ultrapassada, por isso vamos usar a operação do addOrReplace com o efeito Modificar.This tag can't be overridden, so we'll use the addOrReplace operation with the Modify effect. A política de modificação da amostra parece a seguinte regra:The sample Modify policy looks like the following rule:

"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']]"
            }]
        }
    }
}

Nota

Uma vez que esta regra política visa recursos que suportam etiquetas, o modo na definição de política deve ser "Indexado".As this policy rule targets resources that support tags, the mode on the policy definition must be 'Indexed'. Esta configuração também garante que esta política ignora grupos de recursos.This configuration also ensures this policy skips resource groups.

Esta regra de política procura qualquer recurso que não tenha o valor dos seus grupos de recursos-mãe para a etiqueta Env ou que esteja a perder a etiqueta Env.This policy rule looks for any resource that doesn't have its parent resource groups value for the Env tag or is missing the Env tag. Os recursos correspondentes têm a sua etiqueta Env definida para o valor dos grupos de recursos-mãe, mesmo que a etiqueta já existisse no recurso mas com um valor diferente.Matching resources have their Env tag set to the parent resource groups value, even if the tag already existed on the resource but with a different value.

Atribuir a iniciativa e remediar recursosAssign the initiative and remediate resources

Assim que as políticas de etiqueta acima forem criadas, junte-as numa única iniciativa para a governação do tag e atribua-as a um grupo de gestão ou subscrição.Once the tag policies above are created, join them into a single initiative for tag governance and assign them to a management group or subscription. A iniciativa e as políticas incluídas avaliam então o cumprimento dos recursos existentes e altera os pedidos de recursos novos ou atualizados que correspondam ao se imóvel na regra política.The initiative and included policies then evaluate compliance of existing resources and alters requests for new or updated resources that match the if property in the policy rule. No entanto, a política não atualiza automaticamente os recursos existentes não conformes com as alterações de etiqueta definidas.However, the policy doesn't automatically update existing non-compliant resources with the defined tag changes.

Tal como implementar as políticasifNotExists, a política de modificação utiliza tarefas de reparação para alterar os recursos existentes não conformes.Like deployIfNotExists policies, the Modify policy uses remediation tasks to alter existing non-compliant resources. Siga as instruções sobre como remediar recursos para identificar os seus recursos de modificação não conformes e corrigir as etiquetas para a sua taxonomia definida.Follow the directions on How-to remediate resources to identify your non-compliant Modify resources and correct the tags to your defined taxonomy.

Limpar os recursosClean up resources

Se já acabou de trabalhar com recursos deste tutorial, use os seguintes passos para eliminar qualquer uma das atribuições ou definições acima criadas:If you're done working with resources from this tutorial, use the following steps to delete any of the assignments or definitions created above:

  1. Selecione Definições (ou Atribuições se estiver a tentar apagar uma atribuição) em Autoria no lado esquerdo da página Política Azure.Select Definitions (or Assignments if you're trying to delete an assignment) under Authoring in the left side of the Azure Policy page.

  2. Procure a nova definição de iniciativa ou de política (ou atribuição) que acabou de remover.Search for the new initiative or policy definition (or assignment) you want to remove.

  3. Clique com o botão direito do rato na linha ou selecione as reticências no fim da definição (ou atribuição) e selecione Eliminar definição (ou Eliminar atribuição).Right-click the row or select the ellipses at the end of the definition (or assignment), and select Delete definition (or Delete assignment).

RevisãoReview

Neste tutorial, aprendeu sobre as seguintes tarefas:In this tutorial, you learned about the following tasks:

  • Identificou os seus requisitos de negócioIdentified your business requirements
  • Mapeado cada requisito para uma definição de políticaMapped each requirement to a policy definition
  • Agrupou as políticas de etiquetas numa iniciativaGrouped the tag policies into an initiative

Passos seguintesNext steps

Para saber mais sobre as estruturas de definições de política, veja este artigo:To learn more about the structures of policy definitions, look at this article: