2 de maio de 20265 min de leitura

Como automatizar padrões de nomenclatura no Azure usando API e DevOps

Banner - Como automatizar padrões de nomenclatura no Azure usando API e DevOps

Introdução

Em grandes ambientes Azure, um dos desafios de governança mais subestimados, porém críticos, é a consistência na nomenclatura de recursos. Embora as empresas definam padrões, o enforcement em larga escala — envolvendo múltiplas subscriptions, times e pipelines — frequentemente degenera em processos manuais e falhos.

Na prática, isso resulta em:

  • Confusão operacional.
  • Dificuldade na identificação de recursos.
  • Redução da rastreabilidade.
  • Lacunas de conformidade (governance gaps).

Para resolver isso, adotamos uma abordagem baseada em uma API de validação integrada aos pipelines de Azure DevOps, garantindo que cada recurso provisionado siga automaticamente os padrões organizacionais.

O Problema: Inconsistência nos Ambientes

Em times distribuídos, os problemas de nomenclatura surgem devido a:

  • Desenvolvedores provisionando recursos independentemente.
  • Ausência de um motor centralizado de enforcement.
  • Validação manual durante os deployments.
  • Falta de integração com o fluxo de CI/CD.

Exemplo (Antes da Automação)

Recurso Exemplo de Nome
Resource Group testRG1
Storage Account mystorage123
VM vm-prod

Problemas:

  • Estrutura sem padrão.
  • Ausência de contexto de ambiente ou região.
  • Difícil gestão em escala.

Qual o objetivo?

Assegurar:

✅ Nomenclatura padronizada em todos os recursos.
✅ Validação automatizada durante o ciclo de deployment.
✅ Zero intervenção manual.
✅ Integração nativa com workflows de DevOps.

Visão Geral da Solução

Implementamos um mecanismo de enforcement utilizando:

  • Azure Naming Tool API.
  • Azure DevOps Pipelines.
  • Managed Identity para autenticação segura.

Fluxo de Arquitetura

Fluxo de Validação de Nomes com Azure API, Managed Identity e DevOps Pipeline

Entendendo o Fluxo da Solução

  1. Desenvolvedor faz o commit: O processo inicia quando o código é enviado ao repositório, disparando o pipeline do Azure DevOps.
  2. Execução do Pipeline: O pipeline roda os scripts de deployment como parte do CI/CD.
  3. Autenticação com Managed Identity: O pipeline utiliza uma Managed Identity para obter um token de acesso de forma segura, eliminando o armazenamento de senhas.
  4. Chamada da Naming API: Uma requisição é enviada para a API contendo detalhes como: Resource type, Environment, Location e Application name.
  5. Validação & Geração do Nome: A API valida os inputs e retorna um nome compliant.
  6. Decisão de Deployment: Se a validação for positiva, o recurso é criado; caso contrário, o deployment é bloqueado.
  7. Provisionamento: Apenas recursos validados são provisionados no Azure.

Detalhes de Implementação

Autenticação via Managed Identity

Para acessar a API com segurança:

  • Managed Identity é utilizada.
  • Nenhum secret ou credencial fica exposto no pipeline.
  • Tokens são recuperados dinamicamente.

Implementação em PowerShell

Abaixo, um exemplo simplificado da lógica utilizada:

# Get access token using Managed Identity
$token = (Get-AzAccessToken -ResourceUrl "api://NamingTool").Token

# Call naming API
$response = Invoke-RestMethod `
    -Uri "https://your-namingtool-api-endpoint/api/naming" `
    -Headers @{ Authorization = "Bearer $token" } `
    -Method POST `
    -Body @{
        resourceType = "resourceGroup"
        environment  = "prod"
        location     = "eastus"
        application  = "app01"
    } | ConvertTo-Json

# Extract generated resource name
$resourceName = $response.name

Write-Output "Generated Name: $resourceName"

🔄 Integração com Azure DevOps

A validação é integrada diretamente ao pipeline de deployment:

- task: AzureCLI@2
  inputs:
    azureSubscription: 'ServiceConnection'
    scriptType: 'ps'
    scriptLocation: 'inlineScript'
    inlineScript: |
      Write-Output "Calling Naming Tool API"
      .\scripts\Get-ResourceName.ps1      

Benefício Chave:

👉 Os nomes dos recursos são validados antes do deployment, impedindo que recursos fora do padrão sejam persistidos.

Considerações de Segurança

  • Utilize sempre Managed Identity para a autenticação com APIs externas.
  • Evite de toda e qualquer forma o armazenamento de secrets em variáveis de pipeline.
  • Garanta que o acesso ao endpoint da API seja restrito e segmentado.

Como expandir esta solução?

Esta abordagem é modular e pode ser estendida para:

  • Enforcement de tags (FinOps).
  • Validação de políticas antes do deploy (Policy as Code).
  • Automação de 'subscription vending'.
  • Controles centralizados de custo via governança.

✨ Considerações Finais

Padrões de nomenclatura são, muitas vezes, apenas documentação esquecida em wikis. Ao integrar a validação via API diretamente aos pipelines, as organizações efetivamente movem sua governança de Diretrizes Teóricas para Enforcement Automatizado, tornando a infraestrutura mais escalável, consistente e amigável aos squads de engenharia.


Artigo originalmente publicado em Azure Updates - Latest from Azure Charts. ## Perguntas Frequentes

  • Por que a nomenclatura manual é um risco em grandes ambientes?

    A falta de padronização leva a confusão operacional, dificuldade na identificação de ativos e lacunas críticas de governança, o que prejudica a rastreabilidade e o controle de custos.

  • Como a API de nomenclatura mitiga falhas no deployment?

    Ao integrar a API ao pipeline, qualquer recurso que não esteja em conformidade com as regras de negócio definidas é bloqueado antes do provisionamento, garantindo que apenas recursos validados cheguem ao ambiente.

  • É seguro utilizar essa automação sem expor segredos?

    Sim. A implementação utiliza Managed Identity para autenticação entre o Azure DevOps e a API de Nomenclatura, eliminando a necessidade de armazenar credenciais ou segredos dentro do workflow do pipeline.

Gostou? Compartilhe:
Precisa de ajuda?Fale com nossos especialistas 👋
Avatar Walcew - Headset