Corrigir recursos que não estão em conformidade com o Azure Policy

Recursos que não estão em conformidade com políticas de deployIfNotExists ou efeitos de modify podem ser colocados em um estado de conformidade por meio da Correção. A correção é realizada por meio de tarefas de correção que implantam o modelo deployIfNotExists ou as operações modify da política atribuída em seus recursos e assinaturas existentes, independentemente dessa atribuição ser para um grupo de gerenciamento, uma assinatura, um grupo de recursos ou um recurso individual. Este artigo mostra as etapas necessárias para entender e realizar a correção com o Azure Policy.

Como o controle de acesso de correção funciona

Quando o Azure Policy inicia uma implantação de modelo ao avaliar políticas deployIfNotExists ou modifica um recurso ao avaliar políticas de modificação, ele faz isso usando uma identidade gerenciada associada à atribuição de política. As atribuições de política usam identidades gerenciadas para autorização de recursos do Azure. As atribuições de política podem usar uma identidade gerenciada atribuída pelo sistema criada pelo serviço de política ou uma identidade atribuída pelo usuário fornecida pelo usuário. É necessário atribuir à identidade gerenciada as funções mínimas necessárias de controle de acesso baseado em função (RBAC) para corrigir os recursos. Se a identidade gerenciada tiver funções ausentes, esse erro será exibido no portal durante a atribuição da política ou uma iniciativa. Quando o portal é usado, o Azure Policy concederá automaticamente a identidade gerenciada às funções listadas quando a atribuição for iniciada. Ao usar um kit de desenvolvimento de software (SDK) do Azure, as funções devem ser concedidas manualmente à identidade gerenciada. O local da identidade gerenciada não afeta a operação com o Azure Policy.

Observação

A alteração de uma definição de política não atualiza automaticamente a atribuição ou a identidade gerenciada associada.

A segurança da correção pode ser configurada por meio das seguintes etapas:

Configurar a definição de política

Como pré-requisito, uma definição de política precisa definir as funções de que deployIfNotExists e modify precisam para implantar com êxito o conteúdo do modelo incluído. Nenhuma ação é necessária para uma definição de política interna porque essas funções são preenchidas previamente. Para uma definição de política personalizada, na propriedade detalhes, adicione uma propriedade roleDefinitionIds. Essa propriedade é uma matriz de cadeias de caracteres que correspondem a funções no ambiente. Para ver um exemplo completo, veja exemplo de deployIfNotExists ou exemplos de modify.

"details": {
    ...
    "roleDefinitionIds": [
        "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
        "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
    ]
}

A propriedade roleDefinitionIds usa todo o identificador de recurso e não adota o roleName abreviado da função. Para obter a ID para a função "Colaborador" em seu ambiente, use o seguinte código da CLI do Azure:

az role definition list --name "Contributor"

Importante

As permissões devem ser restritas ao menor conjunto possível ao definir roleDefinitionIds em uma definição de política ou atribuir permissões a uma identidade gerenciada manualmente. Confira Recomendações de melhores práticas para identidade gerenciada para conhecer mais melhores práticas.

Configurar a identidade gerenciada

Cada atribuição de Azure Policy pode ser associada a apenas uma identidade gerenciada. No entanto, a identidade gerenciada pode ser atribuída a várias funções. A configuração ocorre em duas etapas: primeiro, crie uma identidade gerenciada atribuída pelo sistema ou pelo usuário e conceda a ela as funções necessárias.

Observação

Ao criar uma identidade gerenciada por meio do portal, as funções serão concedidas automaticamente a ela. Se roleDefinitionIds forem editados posteriormente na definição da política, as novas permissões deverão ser concedidas manualmente, mesmo no portal.

Criar a identidade gerenciada

Ao criar uma atribuição usando o portal, o Azure Policy pode gerar uma identidade gerenciada atribuída pelo sistema e conceder a ela as funções definidas na roleDefinitionIds da definição de política. Como alternativa, você pode especificar uma identidade gerenciada atribuída pelo usuário que recebe a mesma atribuição de função.

Screenshot of a policy assignment creating a system-assigned managed identity in East US with Log Analytics Contributor permissions.

Para definir uma identidade gerenciada atribuída pelo sistema no portal:

  1. Na guia Correção da exibição de atribuição criar/editar, em Tipos de Identidade gerenciada, verifique se a Identidade gerenciada atribuída pelo sistema está selecionada.

  2. Especifique o local no qual a identidade gerenciada deve ser localizada.

  3. Não atribua um escopo para a identidade gerenciada atribuída pelo sistema porque o escopo será herdado do escopo de atribuição.

Para definir uma identidade gerenciada atribuída pelo usuário no portal:

  1. Na guia Correção da exibição de atribuição criar/editar, em Tipos de Identidade gerenciada, verifique se a Identidade gerenciada atribuída pelo usuário está selecionada.

  2. Especifique o escopo em que a identidade gerenciada está hospedada. O escopo da identidade gerenciada não precisa ser igual ao escopo da atribuição, mas deve estar no mesmo locatário.

  3. Em Identidades atribuídas pelo usuário existentes, selecione a identidade gerenciada.

Conceder permissões à identidade gerenciada por meio de funções definidas

Importante

Se a identidade gerenciada não tiver as permissões necessárias para executar a tarefa de correção necessária, ela receberá permissões automaticamente somente por meio do portal. Você poderá ignorar essa etapa se estiver criando uma identidade gerenciada por meio do portal.

Para todos os outros métodos, a identidade gerenciada da atribuição deve receber acesso manualmente por meio da adição de funções, ou a implantação da correção falhará.

Cenários de exemplo que exigem permissões manuais:

  • Se a atribuição for criada por meio de um SDK (kit de desenvolvimento de software) do Azure
  • Se um recurso modificado por deployIfNotExists ou modify estiver fora do escopo da atribuição de política
  • Se o modelo acessar propriedades em recursos fora do escopo da atribuição de política

Há duas maneiras de conceder uma identidade gerenciada da atribuição às funções definidas pelo portal: usando Controle de acesso (IAM) ou editando a atribuição de política ou iniciativa e clicando em Salvar.

Para adicionar uma função à identidade gerenciada da atribuição, siga estas etapas:

  1. Inicie o serviço do Azure Policy no portal do Azure selecionando Todos os serviços e, em seguida, pesquisando e selecionando Política.

  2. Selecione Atribuições no lado esquerdo da página de Política do Azure.

  3. Localize a atribuição que tem uma identidade gerenciada e clique no nome.

  4. Localize a propriedade ID de Atribuição na página de edição. A ID de atribuição será algo como:

    /subscriptions/{subscriptionId}/resourceGroups/PolicyTarget/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5
    

    O nome da identidade gerenciada é a última parte da ID do recurso de atribuição, que é 2802056bfc094dfb95d4d7a5 neste exemplo. Copie essa parte da ID do recurso da atribuição.

  5. Navegue até o recurso ou os recursos do contêiner pai (grupo de recursos, assinatura, grupo de gerenciamento) que precisa na definição de função adicionada manualmente.

  6. Clique no link Controle de acesso (IAM) na página de recursos e clique em + Adicionar atribuição de função na parte superior da página do controle de acesso.

  7. Selecione a função apropriada que corresponde a roleDefinitionId da definição de política. Deixe Atribuir acesso definido como o padrão de 'Usuário, grupo ou aplicativo do Azure AD'. Na caixa Selecionar, cole ou digite a parte da ID do recurso de atribuição localizada anteriormente. Depois que a pesquisa for concluída, clique no objeto com o mesmo nome para selecionar a ID e clique em Salvar.

Criar uma tarefa de correção

Inicie o serviço do Azure Policy no portal do Azure selecionando Todos os serviços e, em seguida, pesquisando e selecionando Política.

Screenshot of searching for Policy in All Services.

Etapa 1: iniciar a criação da tarefa de correção

Há três maneiras de criar uma tarefa de correção por meio do portal.

Opção 1: criar uma tarefa de correção na página Correção

  1. Selecione Correção no lado esquerdo da página do Azure Policy.

    Screenshot of the Remediation node on the Policy page.

  2. Todas as atribuições de política deployIfNotExists e modify são mostradas na guia Políticas para corrigir. Selecione uma com recursos que não estejam em conformidade para abrir a página Nova tarefa de correção.

  3. Siga as etapas para especificar os detalhes da tarefa de correção.

Opção 2: criar uma tarefa de correção com base em uma atribuição de política sem conformidade

  1. Selecione Conformidade no lado esquerdo da página do Azure Policy.

  2. Selecione uma atribuição de política ou iniciativa sem conformidade que contenha os efeitos deployIfNotExists ou modify.

  3. Selecione o botão Criar Tarefa de Correção na parte superior da página para abrir a página Nova tarefa de correção.

  4. Siga as etapas para especificar os detalhes da tarefa de correção.

Opção 3: criar uma tarefa de correção durante a atribuição de política

Se a definição de política ou iniciativa a ser atribuída tiver um efeito deployIfNotExists ou Modify, a guia Correção do assistente oferecerá uma opção Criar uma tarefa de correção, que criará uma tarefa de correção ao mesmo tempo que a atribuição de política.

Observação

Essa é a abordagem mais simplificada para criar uma tarefa de correção e tem suporte para políticas atribuídas em uma assinatura. Para políticas atribuídas em um grupo de gerenciamento, as tarefas de correção devem ser criadas usando a Opção 1 ou a Opção 2 após a avaliação determinar a conformidade do recurso.

  1. No assistente de atribuição no portal, navegue até a guia Correção. Marque a caixa de seleção para Criar uma tarefa de correção.

  2. Se a tarefa de correção for iniciada com base em uma atribuição de iniciativa, selecione a política para corrigir na lista suspensa.

  3. Configure a identidade gerenciada e preencha o restante do assistente. A tarefa de correção será criada quando a atribuição for criada.

Etapa 2: especificar os detalhes da tarefa de correção

Essa etapa só é aplicável ao usar a Opção 1 ou a Opção 2 para iniciar a criação de tarefas de correção.

  1. Se a tarefa de correção for iniciada com base em uma atribuição de iniciativa, selecione a política para corrigir na lista suspensa. Uma política deployIfNotExists ou modify pode ser corrigida por meio de uma tarefa de correção por vez.

  2. Opcionalmente, modifique as configurações de correção na página. Para obter informações sobre o que cada configuração controla, confiraestrutura de tarefas de correção.

  3. Na mesma página, filtre os recursos a serem corrigidos usando as reticências de Escopo para escolher os recursos filho nos quais a política está atribuída (incluindo até os objetos do recurso individuais). Além disso, use a lista suspensa Locais para filtrar ainda mais os recursos.

    Screenshot of the Remediate node and the grid of resources to remediate.

  4. Inicie a tarefa de correção depois que os recursos forem filtrados clicando em Corrigir. A página de conformidade de política abre na guia Tarefas de correção para mostrar o estado do progresso das tarefas. As implantações criadas pela tarefa de correção são iniciadas imediatamente.

    Screenshot of the Remediation tasks tab and progress of existing remediation tasks.

Etapa 3: acompanhar o andamento da tarefa de correção

  1. Navegue até a guia Tarefas de correção na página Correção. Clique em uma tarefa de correção para exibir os detalhes da filtragem usada, o status atual e uma lista de recursos que estão sendo corrigidos.

  2. Na página de detalhes da Tarefa de correção, clique com o botão direito do mouse em um recurso para exibir o recurso ou a implantação da tarefa de correção. No final da linha, clique em Eventos relacionados para ver os detalhes, como uma mensagem de erro.

    Screenshot of the context menu for a resource on the Remediate task tab.

Os recursos implantados por meio de uma tarefa de correção são adicionados à guia Recursos Implantados na página de detalhes da atribuição de política.

Próximas etapas