Conectar Azure.
O GrandeTotal lê o custo diário e o detalhamento por serviço dos últimos 30 dias de uma assinatura Azure, pela API do Cost Management. O acesso é feito por um aplicativo (Service Principal) que você cria e controla, com uma única permissão: ler custos.
O que é pedido
- Um registro de aplicativo no Microsoft Entra ID, com um Client Secret.
- O papel Cost Management Reader para esse aplicativo, na assinatura que você quer conectar.
- Quatro valores: Tenant ID, Client ID, Subscription ID e o valor do Client Secret.
Contributor ou Owner para "simplificar", não é necessário.Antes de começar
- No Entra ID: permissão para registrar aplicativos (por padrão, qualquer usuário membro pode; em alguns tenants só administradores).
- Na assinatura: papel
OwnerouUser Access Administrator, que é o que permite atribuir papéis. - Tempo: cerca de 10 minutos. Depois de atribuir o papel, a Azure pode levar alguns minutos para propagar.
Caminho rápido: Azure CLI
Se preferir o terminal (ou o Cloud Shell do portal), três comandos fazem os passos 1 a 3 abaixo. Troque <SUBSCRIPTION_ID> pelo ID da assinatura.
az login
az account list --query "[].{nome:name, id:id, tenant:tenantId}" -o table
az ad sp create-for-rbac --name grandetotal-leitura --role "Cost Management Reader" --scopes /subscriptions/<SUBSCRIPTION_ID>A saída traz, em JSON, os valores que o painel pede:
appId→ Client IDpassword→ Client Secret (aparece só agora; guarde)tenant→ Tenant ID- O Subscription ID é o
idda assinatura na tabela do segundo comando.
Passo a passo pelo portal
1. Registre o aplicativo
No portal Azure, vá em Microsoft Entra ID → App registrations → New registration. Dê um nome reconhecível (por exemplo, grandetotal-leitura), deixe o tipo de conta padrão e registre. Na página do aplicativo, copie o Application (client) ID e o Directory (tenant) ID.
2. Crie o Client Secret
Em Certificates & secrets → New client secret, escolha uma validade (24 meses é o máximo habitual) e copie o Value na hora: ele só aparece uma vez. Não é o campo Secret ID.
3. Dê o papel de leitura na assinatura
Abra Subscriptions → sua assinatura → Access control (IAM) → Add role assignment. Escolha o papel Cost Management Reader, selecione o aplicativo criado no passo 1 e confirme. Copie também o Subscription ID da página da assinatura.
Onde achar cada valor
- Tenant ID: Entra ID → Overview → Tenant ID, ou na página do aplicativo (Directory (tenant) ID).
- Client ID: página do aplicativo → Application (client) ID.
- Subscription ID: Subscriptions → sua assinatura → Subscription ID.
- Client Secret: Certificates & secrets → coluna Value (não Secret ID).
Todos os identificadores têm o formato 00000000-0000-0000-0000-000000000000; o secret é um texto longo.
4. Cole os valores no painel
Em /painel/conectar, clique em Conectar Azure, preencha os quatro campos e clique em Verificar e conectar. O GrandeTotal faz o login e pede o custo de ontem; se o papel e o secret estiverem certos, a conexão fica conectada.
5. Sincronize
Use o botão de sincronizar no painel. A consulta ao Cost Management é gratuita (diferente do Cost Explorer da AWS), mas a Azure limita o ritmo das chamadas; por isso o GrandeTotal espera alguns minutos entre sincronizações e, se a Azure pedir, espera e tenta de novo. Os dados vêm com a origem azure_cost_management e o instante em que foram observados.
Conferir se deu certo
- No portal, Subscriptions → Access control (IAM) → Role assignments: o aplicativo deve aparecer com Cost Management Reader e nenhum outro papel.
- No painel, o cartão da Azure fica connected e, depois de sincronizar, o total dos últimos 30 dias deve bater com Cost Management → Cost analysis da mesma assinatura (visão Actual cost, agrupada por Service name).
- Pelo terminal:
az role assignment list --assignee <CLIENT_ID> --all -o table.
Trocar ou renovar o secret
O secret expira (a validade que você escolheu). Antes disso, crie um novo em Certificates & secrets e, no painel, refaça a conexão com o valor novo. Se esquecer, a sincronização começa a falhar e o cartão mostra erro; nada mais é afetado.
Como guardamos o secret
O Client Secret é cifrado no banco antes de ser gravado e nunca volta para a tela nem para a API do painel. Ele só é decifrado, na memória, no instante de consultar a Azure. Para a análise por IA, só vão custos agregados (nunca o secret, o Tenant ID, o Client ID ou o Subscription ID). Veja Segurança e acesso.
Erros comuns
- Não conseguimos ler os custos dessa assinatura: confira se os quatro valores estão certos, se o secret copiado é o Value, se não expirou e se o papel foi dado na assinatura (e não só no grupo de recursos).
- Funcionou no portal mas falha logo após atribuir o papel: espere de 5 a 10 minutos e verifique de novo; a atribuição de papéis demora a propagar.
- Erro persistente com tudo certo: o provedor de recursos precisa estar registrado. Rode
az provider register --namespace Microsoft.CostManagement(ou Subscriptions → Resource providers → Microsoft.CostManagement → Register) e tente de novo. - Muitas requisições em pouco tempo: a Azure responde 429 quando o ritmo é alto. O GrandeTotal espera e tenta de novo sozinho; se o erro aparecer, aguarde alguns minutos.
- Assinatura sem custos ainda: contas novas podem levar até 24 h para mostrar dados.
- Moeda diferente da outra nuvem: os painéis somam as nuvens em uma moeda só. Ainda não convertemos: se a AWS cobra em USD e a assinatura Azure em BRL, a sincronização é recusada com um aviso.
- Contrato Enterprise (EA): o administrador de cobrança precisa ter habilitado AO view charges (e, para contas de departamento, DA view charges); sem isso o papel de leitura não enxerga o custo.
- Parceiro CSP: o parceiro precisa liberar a visualização de custos para o cliente (política do Azure plan). A visão consolidada por conta de cobrança ainda não existe: lemos uma assinatura por conexão.
Revogar o acesso
A qualquer momento, remova o papel da assinatura ou apague o aplicativo/secret no Entra ID. A próxima sincronização falha e a conexão aparece como erro no painel. Não é necessário avisar o GrandeTotal.