Chega a fatura da nuvem e alguém pergunta que equipa gastou mais. Se metade dos seus recursos não tem etiquetas, a resposta honesta é «não sabemos». A etiquetagem é a base de qualquer repartição de custos e, ao mesmo tempo, a tarefa que todos deixam para depois. Neste artigo vemos que etiquetas vale a pena usar em AWS, Azure e Google Cloud, e como o AAA Sentinel o ajuda a medir a cobertura, priorizar o que mais custa e etiquetá-lo sem sair da plataforma.
Porque é que o gasto sem etiquetas é um problema
Um recurso sem etiquetas custa o mesmo que um etiquetado, mas não tem dono. Não aparece no relatório de nenhuma equipa, ninguém o revê quando sobe e ninguém se atreve a desligá-lo quando deixa de ser preciso. E o problema cresce sozinho: os recursos são criados à pressa «e depois etiquetamos», a política de etiquetagem chega quando já há centenas sem etiquetas, e etiquetar à posteriori é um trabalho manual que nunca é prioritário.
Etiquetar ao criar demora segundos; etiquetar meses depois obriga a descobrir de quem é cada recurso. Por isso a estratégia tem duas frentes: impedir que entrem recursos novos sem etiquetas e limpar os que já existem, começando pelos mais caros.
O que ganha com isto
Com uma cobertura de etiquetas alta, a conversa sobre o gasto muda:
- Cada equipa vê que parte do gasto é sua e responde por ela.
- Encontra mais cedo os recursos esquecidos: o que não tem dono é o primeiro candidato a revisão.
- Os relatórios por equipa, projeto ou centro de custo deixam de ter um grande buraco de «outros».
- Pode automatizar com mais segurança: saber o que é produção e o que é desenvolvimento é a primeira coisa de que precisa qualquer desligamento programado.
As cinco etiquetas de governança
Não é preciso um esquema de vinte chaves. O AAA Sentinel trabalha com cinco etiquetas de governança que cobrem quase tudo o que uma equipa FinOps precisa:
- Environment: production, staging, development. Separa o que não se pode tocar do que se pode desligar.
- Project: o produto ou a aplicação. Dá o custo total de cada produto.
- Owner: a pessoa ou a equipa responsável. É a quem se pergunta quando algo sobe.
- CostCenter: o centro de custo contabilístico, para bater certo com as finanças.
- Team: a equipa que o opera, base do chargeback interno.
Escreva-as exatamente assim ou tudo em minúsculas (environment, costcenter). Em AWS e Azure, a plataforma não reconhece variantes como Cost-Center, cost_center ou env: um recurso etiquetado assim conta como não etiquetado. Decida a ortografia antes de começar e não a mude.
AWS, Azure e Google Cloud: o que muda
A ideia é a mesma nas três nuvens, mas os detalhes não:
- AWS: as etiquetas distinguem maiúsculas de minúsculas. As Tag Policies do AWS Organizations ajudam a impor o esquema, e para ver uma etiqueta no Cost Explorer é preciso ativá-la antes como etiqueta de alocação de custos em Billing.
- Azure: por omissão, os recursos não herdam as etiquetas do seu grupo de recursos. Pode forçá-lo com Azure Policy (a política que herda uma etiqueta do grupo de recursos) ou ativar a herança de etiquetas no Cost Management, que só afeta os dados de custo.
- Google Cloud: para custos usam-se labels, não tags (as tags do Google Cloud servem para políticas e firewall). As labels só aceitam minúsculas, números, hífenes e underscores, por isso use environment, team ou costcenter.
Etiquetar na origem com IaC
A forma mais fiável de um recurso nascer etiquetado é definir as etiquetas na infraestrutura como código. No Terraform, o bloco default_tags do provider da AWS e default_labels do provider da Google aplicam as etiquetas a tudo o que esse provider cria. No Azure não há equivalente ao nível do provider: o habitual é um mapa comum de etiquetas que se funde em cada recurso, mais uma Azure Policy que rejeite ou complete o que chegue sem elas.
provider "aws" {
region = "eu-west-1"
default_tags {
tags = {
Environment = "production"
Project = "loja"
Owner = "equipa-plataforma"
CostCenter = "cc-vendas"
Team = "plataforma"
}
}
}Isto resolve o que for criado a partir de hoje. O que já existe tem de ser encontrado e etiquetado, e é aí que entra a plataforma.
Como o AAA Sentinel resolve
O AAA Sentinel aborda a etiquetagem a partir de quatro pontos, todos alimentados pela mesma análise das suas contas:
- Três regras de governança, incluídas em todos os planos, que criam uma deteção por cada recurso sem as etiquetas mínimas. Vê-as em Descobertas ativas e em Regras de análise.
- A página Estratégia de tagging (plano Pro), que mede a cobertura de cada conta, estima o gasto não atribuído e ordena os recursos sem etiquetas por custo.
- O botão «Etiquetar» (plano Business), que prepara uma automação com os valores que escreve; o agente executa-a quando alguém a aprova.
- Os relatórios Por etiquetas (plano Pro) e Chargeback (plano Business), que mostram como fica repartido o gasto.
As três regras: o que conta exatamente
Cada nuvem tem a sua regra, e não medem exatamente o mesmo:
AAA Sentinel · regras de governança de etiquetas
- GOVERNANCE_NO_TAGS · AWS · severidade média
- Instâncias EC2, volumes EBS, RDS, balanceadores, buckets S3, NAT Gateway, VPN Gateway, Transit Gateway e VPC endpoints do tipo Interface com menos de duas das cinco etiquetas de governança
- AZURE_GOVERNANCE_NO_TAGS · Azure · severidade média
- Máquinas virtuais, discos, SQL Database, balanceadores, contas de armazenamento, Functions, Cosmos DB, IPs públicos, AKS, Container Apps e NAT Gateway com menos de duas das cinco
- GCP_GOVERNANCE_NO_LABELS · Google Cloud · severidade média
- Instâncias e discos do Compute Engine, Cloud SQL, buckets, Cloud Functions e datasets do BigQuery com menos de duas das cinco, escritas como labels (environment ou env, project, owner, cost-center, cost_center ou costcenter, team)
- Com duas etiquetas de governança, a deteção fecha-se sozinha na análise seguinte. Não é preciso marcá-la como resolvida.
- A deteção indica que etiquetas o recurso tem e quais faltam, e não estima poupança: o seu valor está em poder atribuir o custo, não em reduzi-lo.
Caso prático: ACME
A ACME, uma empresa fictícia, tem a sua loja online numa conta AWS. Há dois anos que cria recursos à mão e com Terraform, e as finanças querem agora repartir a fatura por equipa. Depois da primeira análise, a Estratégia de tagging mostra isto:
ACME · Cobertura por tipo de recurso
- EC2 · 18 recursos, 12 etiquetados (67 %)
- 520 USD/mês sem etiqueta
- RDS · 3 recursos, 1 etiquetado (33 %)
- 410 USD/mês sem etiqueta
- EBS · 12 recursos, 4 etiquetados (33 %)
- 180 USD/mês sem etiqueta
- S3 · 7 recursos, 5 etiquetados (71 %)
- 40 USD/mês sem etiqueta
- Total · 40 recursos, 22 bem etiquetados (55 %)
- 1.150 USD/mês não atribuídos
Passo 1: ler a Estratégia de tagging
A página está no menu, em Estratégia de tagging, e trabalha sobre a última análise concluída da conta que escolher no topo. De cima para baixo:
- Quatro indicadores: Recursos etiquetáveis, Bem etiquetados (os que têm pelo menos duas das cinco etiquetas), Custo não atribuído e as cinco Tags de governança.
- Saúde do tagging: um diagnóstico segundo a percentagem bem etiquetada. A ACME, com 55 %, fica em cobertura moderada.
- Cobertura por tag de governança: que percentagem de recursos tem cada uma das cinco. Costuma denunciar a etiqueta que ninguém põe; na ACME é CostCenter.
- Cobertura por tipo de recurso: a tabela do caso prático, ordenada por custo sem etiqueta.
- Recursos sem etiqueta com maior custo: os dez mais caros, com as etiquetas que já têm.
- Recomendações: a etiqueta e o tipo de recurso com pior cobertura, um aviso se o gasto não atribuído for alto e o lembrete de levar as etiquetas para a sua IaC.
O custo não atribuído é uma estimativa: a plataforma toma o custo real de cada serviço e aplica-lhe a proporção de recursos sem etiquetas desse tipo. O custo de cada recurso da lista é o do serviço repartido em partes iguais. Serve para priorizar, não para faturar.
Passo 2: etiquetar os recursos mais caros sem sair da plataforma
Na ACME, o primeiro da lista é orders-db, a base de dados RDS de encomendas: só tem Project=loja, uma etiqueta de governança em cinco. Com o plano Business, o botão «Etiquetar» dessa linha abre a janela «Automatizar esta detetação»:
- A janela explica o que vai ser feito, o impacto e como reverter, e em Parâmetros pede um valor para cada etiqueta de governança em falta. A ACME escreve Environment=production, Owner=equipa-pagamentos, CostCenter=cc-pagamentos e Team=pagamentos.
- Ao carregar em «Criar automação» nada é executado ainda: a ação fica a aguardar aprovação em Agente IA, e o botão da linha passa a «Pendente».
- Quando alguém com permissão de aprovação (proprietário, administrador ou aprovador) a aprova, o agente escreve as etiquetas no recurso. É uma ação de risco baixo e sem período de espera.
- O agente acrescenta as chaves indicadas e não toca nas restantes etiquetas do recurso. Antes de escrever guarda o valor anterior das chaves que já existiam, para poder desfazer a alteração.
- Na análise seguinte, orders-db já tem cinco etiquetas de governança e a sua deteção desaparece.
- Os recursos fora dos dez primeiros etiquetam-se da mesma forma a partir da sua deteção, em Descobertas ativas.
Para o agente poder escrever, a conta precisa da sua permissão de escrita: é o passo opcional «Ativar agente autónomo» ao ligá-la. No Google Cloud, os valores só aceitam minúsculas, números, hífenes e underscores, e a janela avisa-o se escrever outra coisa.
Passo 3: acompanhar a evolução em Por etiquetas
Depois da análise seguinte, Relatórios → Por etiquetas mostra a Cobertura de tags de cada uma das cinco chaves na conta escolhida, junto com as deteções por região e por tipo de recurso e a desagregação do gasto por serviço. É a vista rápida para acompanhar o progresso. A ACME define como meta que nenhuma chave fique abaixo de 80 %, que é também o limiar a partir do qual a plataforma deixa de recomendar essa etiqueta.
Passo 4: Chargeback, sabendo como é calculado
Com o plano Business, Relatórios → Chargeback junta todas as suas contas: gasto total, Detalhamento por conta, serviços mais caros e uma Distribuição por cada etiqueta de governança, que separa o gasto em Etiquetado e Não atribuído. Convém saber o que está por trás:
- A repartição é por cobertura, não por valor: se 60 % dos recursos de uma conta têm Team, 60 % do seu gasto aparece como Etiquetado. Ainda não separa Team=pagamentos de Team=loja.
- Para repartir por valor, e cobrir com regras de etiquetagem virtual o que não está etiquetado, existe a repartição de custos sobre a fatura FOCUS. Explicamo-la em «Da fatura cloud ao custo por pedido: repartição por centro de custo e custo unitário em AWS, Azure e Google Cloud».
- Mesmo assim, a parte Não atribuído é o número a baixar, e funciona bem como indicador mensal para o comité FinOps.
O que ainda não faz
Para não haver surpresas:
- Não impede a criação de recursos sem etiquetas: isso faz-se na nuvem, com Tag Policies, Azure Policy ou verificações no seu pipeline de IaC.
- Não etiqueta em massa com um clique: cada recurso é uma automação com os seus valores e a sua aprovação.
- Não reconhece chaves com outra ortografia: CostCenter ou costcenter sim; Cost-Center ou cost_center, em AWS e Azure, não. No Google Cloud, onde as labels vão em minúsculas, contam cost-center, cost_center e costcenter, e env conta como environment.
- Os valores de custo não atribuído são estimativas a partir do custo de cada serviço, não uma repartição recurso a recurso.
Checklist para começar
Com isto a funcionar, da próxima vez que alguém perguntar de quem é um gasto terá resposta, e a parte sem dono irá diminuindo todos os meses.
- Cinco chaves acordadas e escritas sempre da mesma forma: Environment, Project, Owner, CostCenter e Team.
- default_tags ou default_labels na sua IaC, e uma política na nuvem que trave o que chegue sem etiquetas.
- As contas ligadas e analisadas, e as deteções de governança revistas em Descobertas ativas.
- A Estratégia de tagging revista todas as semanas, começando pelos recursos mais caros.
- A permissão de escrita do agente ativada se for etiquetar a partir da plataforma (plano Business).
- Uma meta de cobertura por chave, por exemplo 80 %, e a parte Não atribuído do Chargeback como indicador mensal.