Estratégias Avançadas para o Azure Policy: Definições Personalizadas e Boas Práticas de Governança

Estratégias Avançadas para o Azure Policy: Definições Personalizadas e Boas Práticas de Governança

O Azure Policy é uma ferramenta essencial no Microsoft Azure, projetada para auxiliar as organizações a manter a conformidade e a segurança de seus recursos na nuvem. Este guia aborda técnicas avançadas para a criação de políticas personalizadas e a aplicação de boas práticas, com o objetivo de otimizar a governança de recursos e fortalecer a postura de segurança.

Estrutura Fundamental de uma Política Azure

Cada política no Azure é composta por três elementos primários: a Regra da Política (Policy Rule), os Parâmetros (Parameters) e o Efeito (Effect). Para ilustrar, considere a esrtutura JSON de uma política típica:

{
  "properties": {
    "displayName": "Auditoria de Contas de Armazenamento por Nível de Acesso",
    "policyType": "Custom",
    "mode": "Indexed",
    "description": "Esta política verifica se as contas de armazenamento estão utilizando um nível de acesso aprovado, como Hot ou Cool.",
    "parameters": {
      "nivelAcessoPermitido": {
        "type": "String",
        "metadata": { 
          "displayName": "Nível de Acesso Esperado",
          "description": "Selecione o nível de acesso que as contas de armazenamento devem usar."
        },
        "allowedValues": ["Hot", "Cool"],
        "defaultValue": "Hot"
      },
      "efeitoPolitica": {
        "type": "String",
        "metadata": { 
          "displayName": "Efeito da Política",
          "description": "Define a ação a ser tomada quando a política for violada."
        },
        "allowedValues": ["Audit", "Deny", "Disabled"],
        "defaultValue": "Audit"
      }
    },
    "policyRule": {
      "if": {
        "allOf": [
          { "field": "type", "equals": "Microsoft.Storage/storageAccounts" },
          { "field": "Microsoft.Storage/storageAccounts/accessTier", "notEquals": "[parameters('nivelAcessoPermitido')]" }
        ]
      },
      "then": { "effect": "[parameters('efeitoPolitica')]" }
    }
  }
}

No exemplo acima, a seção policyRule define a lógica. A condição if especifica quando a política deve ser acionada, e a seção then, através do effect, determina a ação a ser executada (como Audit para auditoria, Deny para bloqueio ou Modify para correção).

Explorando os Pirncipais Efeitos de Política

1. Audit (Auditoria)

A opção Audit é a mais segura para começar. Ela não impede a criação de recursos não conformes, mas registra as violações. É ideal para avaliar o impacto potencial de uma política antes de impor restrições mais severas:

"effect": "Audit"

2. Deny (Bloqueio)

O efeito Deny impõe um controle rigoroso, impedindo a criação ou atualização de recursos que não estejam em conformidade. É recomendado para requisitos críticos de segurança:

"effect": "Deny"

3. Modify (Modificação)

O Modify permite que as políticas corrijam automaticamente as configurações não conformes, como garantir que o tráfego HTTPS seja forçado para contas de armazenamento ou adicionar tags ausentes:

{
  "type": "Modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46cb-834c-87d7b1d620e0" 
    ],
    "operations": [
      {
        "operation": "addOrReplace",
        "field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
        "value": true
      }
    ]
  }
}

O roleDefinitionIds especifica as permissões necessárias para que a política realize a modificação.

Processo de Desenvolvimento de Políticas Personalizadas

1. Definição Clara do Objetivo

Comece identificando o problema que a política visa resolver. Exemplos incluem:

  • Restringir a implantação de recursos a regiões geográficas específicas.
  • Garantir que a criptografia de dados esteja ativada para todos os serviços de armazenamento.
  • Proibir a criação de máquinas virtuais com endereços IP públicos diretamente anexados.

2. Elaboração da Regra de Política

Escreva a lógica condicional usando a linguagem JSON do Azure Policy. É aconselhável consultar a vasta biblioteca de políticas internas do Azure ou exemplos disponíveis para inspiração e melhores práticas de codificação.

3. Teste e Validação

Após a criação, teste a política rigorosamente:

  1. Implante a definição da política usando a CLI do Azure (az policy definition create) ou o portal.
  2. Atribua a política a um escopo relevante (grupo de gerenciamento, assinatura ou grupo de recursos).
  3. Monitore os resultados na seção "Conformidade" do Azure Policy no portal, observando os recursos que foram sinalizados ou modificados.

5 Boas Práticas Essenciais para Azure Policy

1. Parametrização Robusta das Definições

Utilizar parâmetros torna as políticas mais flexíveis e reutilizáveis em diferentes ambientes, reduzindo a necessidade de criar múltiplas definições para variações semelhantes.

{
  "parameters": {
    "skuNamesPermitidosVM": {
      "type": "Array",
      "metadata": {
        "displayName": "SKUs de Máquina Virtual Permitidos",
        "description": "Lista de SKUs de máquina virtual que podem ser implantados."
      },
      "defaultValue": ["Standard_D2s_v3", "Standard_B2ms"]
    },
    "efeito": {
      "type": "String",
      "metadata": { "displayName": "Efeito" },
      "allowedValues": ["Deny", "Audit", "Disabled"],
      "defaultValue": "Deny"
    }
  },
  "policyRule": {
    "if": {
      "allOf": [
        { "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
        { "not": { "field": "Microsoft.Compute/virtualMachines/sku.name", "in": "[parameters('skuNamesPermitidosVM')]" } }
      ]
    },
    "then": { "effect": "[parameters('efeito')]" }
  }
}

2. Aplicação de Operadores Lógicos Complexos

Combine allOf, anyOf e not para construir regras que se adequem a cenários complexos, verificando múltiplos critérios simultaneamente.

"if": {
  "allOf": [
    { "field": "type", "equals": "Microsoft.Storage/storageAccounts" },
    { "not": { "field": "tags['Projeto']", "exists": true } },
    { "anyOf": [
        { "field": "Microsoft.Storage/storageAccounts/encryption.services.blob.enabled", "equals": false },
        { "field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess", "equals": true }
      ]
    }
  ]
},
"then": { "effect": "Audit" }

3. Preferência por Políticas Nativas (Built-in)

Sempre que possível, utilize as políticas internas fornecidas pela Microsoft. Elas são amplamente testadas e alinhadas com as melhores práticas de segurança e conformidade, servindo também como base para políticas personalizadas.

4. Organização com Iniciativas de Política

Agrupe políticas relacionadas em uma iniciativa (anteriormente conhecida como "conjunto de políticas") para simplificar a atribuição e o gerenciamento em larga escala.

{
  "properties": {
    "displayName": "Conformidade Essencial de Rede",
    "description": "Conjunto de políticas para garantir a segurança da rede na sua assinatura.",
    "policyDefinitions": [
      {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/83a86a60-8356-42d4-8332-cf777e4e8913", 
        "policyDefinitionReferenceId": "denyPublicIp",
        "parameters": {
          "effect": { "value": "Deny" }
        }
      },
      {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/e427187e-e141-4122-863a-23d2011b714b", 
        "policyDefinitionReferenceId": "auditNsgOnSubnet",
        "parameters": {
          "effect": { "value": "Audit" }
        }
      }
    ]
  }
}

5. Análise e Atualização Contínua

O ambiente de nuvem é dinâmico. Revise regularmente suas políticas para garantir que permaneçam relevantes, removendo as obsoletas, ajustando parâmetros e incorporando novas exigências de segurança e conformidade.

Recursos para Início Rápido

Para aprofundar seus conhecimentos e prática com o Azure Policy, explore:

  • Repositórios de Amostras Oficiais: Contêm exemplos completos para diversos cenários, como gerenciamento automatizado de tags ou auditoria de extensões de máquinas virtuais.
  • Padrões de Política: Consulte guias de padrões que demonstram o uso de operadores lógicos e configurações avançadas de parâmetros.
  • Integração com Kubernetes: Explore definições de política específicas para ambientes de contêiner.

Tags: AzurePolicy CloudGovernance CustomPolicy AzureSecurity ResourceManagement

Publicado em 6-13 20:37 por Thomas