Recupere o Controle dos Recursos do Azure com a Política do Azure

A common theme in cloud environments today is the ability to define templates, policies, and procedures. These templates then dictate what can be done and verify that what does exist is correct. A service from Microsoft called Azure Policy is a great way to make that happen.

Neste artigo, você aprenderá como o Azure Policy funciona e depois verá como criar várias políticas e ações corretivas.

Criando uma Política Azure

Há muitas maneiras de criar políticas, como através do Portal Azure, PowerShell, Azure CLI e modelos ARM.

Portal Azure

Se você prefere a rota GUI ou está explorando suas opções, começar aqui é uma boa introdução às políticas. A interface é simples e permite que você veja suas opções de relance.

  1. Dentro do Portal Azure, pesquise por Política.
  2. Clique em Atribuições na seção Autoria
  3. Clique em Atribuir política
  4. Clique nos pontos suspensivos em Abrangência para selecionar a assinatura a ser aplicada e, opcionalmente, o grupo de recursos
  5. Clique nos pontos suspensivos em Definição de política para selecionar a política a ser definida
  6. Use o nome gerado padrão em Nome da atribuição ou insira um para identificar exclusivamente sua política
  7. Preencha quaisquer parâmetros conforme necessário com base na política escolhida
  8. Finalmente, crie uma identidade gerenciada e defina sua localização, se necessário
Creating a Policy

PowerShell

Felizmente, o PowerShell torna rápido e fácil atribuir uma definição de política Azure a uma atribuição de política. Existem dois pré-requisitos, que são a necessidade da versão mais recente do Azure PowerShell instalada e o registro do provedor de recursos Azure Policy Insights.

Register Policy Insights Resource Provider
PS51> Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Assign the Policy
PS51> $resourceGroup = Get-AzResourceGroup -Name '<resourceGroupName>'

PS51> $definition = Get-AzPolicyDefinition | Where-Object { $_.Properties.DisplayName -eq '<policyName>' }

PS51> New-AzPolicyAssignment -Name '<assignment-name>' -DisplayName '<friendlyName>' -Scope $resourceGroup.ResourceId -PolicyDefinition $definition -listOfResourceTypesAllowed '<parameterValues>'

Azure CLI

Se o PowerShell não estiver disponível ou não for preferido, então usar o Azure CLI também permite que você faça muito do mesmo. Isso também pode ser útil em cenários de cross-platform se você não conseguir usar o PowerShell em todos os sistemas operacionais.

> az policy assignment create --name '<policyName>' --display-name '<friendlyName>' --scope '<scope>' --policy '<policyDefinitionID>'

Modelos de Política do Azure

Modelos do Azure Resource Manager são mais uma maneira de criar e atribuir políticas a recursos. Abaixo está um modelo inicial que você pode usar para escolher uma política para atribuir a um grupo de recursos como exemplo.


{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "policyAssignmentName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the policy assignment."
      }
   },
    "rgName":{
      "type": "string",
      "defaultValue": "[resourceGroup().name]",
      "metadata": {
        "description": "Specifies the name of the resource group where you want to assign the policy."
      }
},
    "policyDefinitionID": {
      "type": "string",
      "metadata": {
        "description": "Specifies the ID of the policy definition or policy set definition being assigned."
      }
    }
},
  "resources": [
{
      "type": "Microsoft.Authorization/policyAssignments",
"name": "[parameters('policyAssignmentName')]",
"apiVersion": "2018-05-01",
"properties": {
   "scope": "[concat (subscription ( ).id, '/resourceGroups/', parameters('rgName'))]",
   

Como a Atribuição de Política do Azure Funciona

Após escolher ou criar as definições de política que você deseja aplicar, atribua essas definições para afetar um escopo específico. O escopo simplesmente define para o que a atribuição de política será aplicada, como um grupo de gerenciamento ou de recursos. Algo a ser observado é que a atribuição de política é herdada por todos os recursos filhos, mas você tem a capacidade de excluir um sub-escopo se necessário.

Exemplo de Políticas do Azure

Existem muitas definições de política por aí e pode ser difícil decidir o que é melhor aplicar. Então, quais são algumas das opções, quando você pode usá-las e por quê?

  • Exigir Tag e seu Valor – Isso pode ser usado de várias maneiras, mas uma possibilidade é para dizer códigos de custo, ou para identificar vários recursos diferentes espalhados por vários grupos de recursos.
  • Tipos de Recursos Permitidos – E se você só quiser permitir recursos específicos? Isso pode ser imposto, com apenas a capacidade de criar um recurso de armazenamento, por exemplo.
  • Auditar VMs Windows com um Reinício Pendente – Talvez você queira saber quais VMs Windows precisam de um reinício pendente, para garantir que elas não fiquem para trás? Use esta política para encontrar e possivelmente remediar essas em um cronograma.
  • Auditar Configuração de Diagnóstico – Se as configurações de diagnóstico não estiverem ativadas, esta política encontrará aquelas que não estão em conformidade.
  • As Portas de Gerenciamento Devem Permanecer Fechadas em suas Máquinas Virtuais – Verifique se as portas de gerenciamento em suas VMs estão fechadas, uma ótima política para quem se preocupa com a segurança.
  • Contas Obsoletas Devem ser Removidas de sua Assinatura – Para todas as contas que foram bloqueadas para login em um diretório, encontre aquelas que podem precisar de remediação. Embora haja muitas aqui, e ainda mais sendo criadas todos os dias, você também tem uma habilidade muito poderosa de criar suas próprias definições de política personalizada. Usando um esquema simples de definição de consulta, você pode criar construções poderosas de if-then para definir a quais políticas deseja aplicar.

Como Tornar as Políticas do Azure Mais Reutilizáveis

Parâmetros

Uma das ferramentas mais úteis é definir parâmetros para uso em suas políticas. Se você tivesse que definir uma política única para cada variação em uma política, poderia acabar com centenas delas. Uma ótima solução para isso é parametrizar uma política. Com isso, você pode personalizar a política no momento da atribuição e fazer com que uma definição de política se aplique a muitos casos de uso diferentes.

Iniciativas

O próximo passo lógico é reunir várias definições em um conjunto. Isso permite atribuir todas essas definições diferentes a um escopo sem ter que atribuir individualmente cada uma repetidamente.

Parâmetros da Iniciativa

Por fim, você pode adicionar parâmetros às iniciativas que podem ser herdados pelas políticas individuais. Isso significa que você não precisa atribuir parâmetros individualmente para cada política contida em uma iniciativa. Isso pode economizar muito tempo, pois você pode definir apenas algumas iniciativas que se apliquem a muitas políticas diferentes de várias maneiras diferentes, dependendo dos parâmetros escolhidos.

Tarefas de Remediação

E então, o que você faz quando tem uma política que avalia, mas encontra recursos em não conformidade? Nesse ponto, você pode iniciar uma tarefa de remediação para corrigir qualquer problema que possa existir. Isso pode ser bastante poderoso, mas também muito perigoso se configurado incorretamente. Mais uma vez, existem várias maneiras de definir essas tarefas, seja através do Portal do Azure, PowerShell ou através do Azure CLI.

Portal do Azure

Como antes, você pode usar o Portal do Azure para explorar a criação de uma tarefa de remediação. Se você perceber que não há políticas listadas, certifique-se de ter tanto políticas deployIfNotExists quanto aquelas que avaliaram como não conforme, caso contrário, elas não serão exibidas.

  1. No Portal do Azure, pesquise por Política
  2. Clique em Remediação no lado esquerdo
  3. Clique em uma política que seja do tipo deployIfNotExists e tenha recursos não conformes
  4. Filtre os recursos a serem remediados na página da Nova tarefa de remediação para limitar a aplicação da tarefa
  5. Clique em Remediar para iniciar a própria tarefa

PowerShell

É bastante simples criar uma tarefa de remediação via PowerShell. A coisa principal a lembrar é que você deve estar usando uma política de implantarSeNaoExistir

PS51> Start-AzPolicyRemediation -Name 'remediationTask' -PolicyAssignmentId '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{assignmentID}'

Azure CLI

Em vez de usar o PowerShell, você também pode usar o Azure CLI para iniciar uma tarefa de remediação. O mesmo vale para esta tarefa como para a tarefa do PowerShell.

> az policy remediation create --name remediationTask --policy-assignment '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{assignmentID}'

Resumo

O poder de usar as Políticas do Azure é que, para qualquer subscrição do Azure, você pode definir qualquer número de políticas flexíveis para ajudá-lo a gerenciar o seu ambiente. Além disso, com tempo, esforço e reflexão sobre como estruturar suas políticas, iniciativas e parâmetros, você pode criar uma configuração bem definida e fácil de remediar.

Considerando que as Políticas do Azure são gratuitas para qualquer subscrição do Azure, faz muito sentido dedicar tempo para implementar o que você precisa. Considerando a flexibilidade em como criar e implantar essas definições e políticas, elas podem se aplicar a quase tudo e ajudá-lo a manter controle sobre o seu ambiente!

Source:
https://adamtheautomator.com/azure-policy/