20 tipos distintos em 8 resource groups
Relatorio automatico para avaliacao de postura operacional, seguranca, custos e governanca da subscription Azure. Esta versao consolida inventario tecnico em uma narrativa executiva, priorizada e replicavel.
20 tipos distintos em 8 resource groups
2 altos, 2 medios e 1 informativo
Private Endpoints, Bastion, NAT e DNS privado
Estimativa mensal com otimizacoes aplicadas
Visao compacta para leitura executiva e rastreabilidade tecnica.
| Categoria | Quantidade | Componentes principais | Avaliacao |
|---|---|---|---|
| Compute | 9 | 3 VMSS, 3 Shared Image Galleries, 3 image definitions | Bom |
| Network | 25 | VNet, AGW, Load Balancer, NAT, Bastion, 5 Private Endpoints, 5 NICs de PE | Bem segmentado |
| DNS privado | 10 | 5 private DNS zones com 5 virtual network links | Completo |
| Dados | 2 | Azure Database for MySQL Flexible Server e Redis Enterprise | Revisar custo |
| Seguranca | 6 | 4 NSGs, Key Vault e User Assigned Managed Identity | Requer hardening |
| Storage | 2 | Storage de dados e storage de Terraform state | Validar exposicao |
Itens ordenados por impacto operacional, seguranca e custo.
O state pode conter informacoes sensiveis da infraestrutura. Confirmar acesso publico, versioning, soft delete e acesso apenas por pipeline/Managed Identity.
O ambiente fica dependente das regras default, incluindo saida para internet. Criar regras explicitas por camada e aplicar menor privilegio.
Tier possivelmente superdimensionado para ambiente nao produtivo. Validar features usadas e testar downgrade para Premium ou Standard.
O inventario nao confirma Log Analytics, diagnostic settings e alertas de budget. Sem telemetria centralizada, incidentes e custos ficam menos previsiveis.
Apenas uma User Assigned Managed Identity aparece. Auditar VMSS e servicos para evitar credenciais estaticas ou segredos fora do Key Vault.
A subnet /24 oferece folga operacional, mas pode ser revista para preservar endereco IP em arquiteturas maiores.
| Controle | Evidencia |
|---|---|
| Private Endpoints | MySQL, Redis, Key Vault, Blob e File protegidos por conectividade privada. |
| DNS privado | Zonas privatelink com VNet links configurados. |
| Acesso remoto | Azure Bastion reduz exposicao direta de RDP/SSH. |
| Compute elastico | Uso de VMSS e Shared Image Galleries favorece padronizacao. |
| Segmentacao | Subnets separadas para client, app, data, private endpoints, Bastion e AGW. |
| Acao | Economia estimada |
|---|---|
| Downgrade Redis Enterprise para Premium, se compativel | ~$1.000/mes |
| Auto-shutdown dos VMSS fora do horario comercial | ~$450/mes |
| Reserved Instances para capacidade base dos VMSS | ~$360/mes |
| Reduzir capacity units minimos do Application Gateway | ~$100/mes |
| Revisar Bastion SKU/agendamento | ~$100/mes |
Sequencia sugerida para reduzir risco antes de perseguir otimizacoes de menor impacto.
Definir regras customizadas nos NSGs, revisar saida para internet e documentar fluxos permitidos entre camadas.
Proteger Terraform state, validar Private Endpoint, habilitar soft delete/versioning e auditar acesso por identidade.
Habilitar diagnostic settings, Log Analytics, alertas de disponibilidade, budget alerts e trilha de auditoria do Key Vault.
Testar downgrade do Redis, aplicar auto-shutdown em staging, revisar capacity minima e limpar imagens antigas.
Camada expansivel para justificar as notas, escolhas e recomendacoes do resumo executivo.
Explica os criterios usados para transformar o inventario em uma avaliacao executiva.
Lista resumida dos recursos que sustentam as conclusoes de arquitetura, seguranca e custo.
vmss-demo-app-process-brs-001vmss-demo-app-rabbitmq-brs-001vmss-demo-app-client-brs-001sig_vmss_demo_app_*vnet-demo-app-network-brs-001172.16.0.0/21 com 6 subnets.agw-demo-app-brs-001172.16.4.0/24.lb-demo-app-brs-001nat-demo-app-network-brs-001bas-demo-app-brs-001pip-*mysql-flex-demo-app-brs-001redis-demo-app-brs-001stdemoapptfstatestdemoappdata001kvdemoappbrs001id-agw-demo-app-brs-001| Servico | Private Endpoint | Zona DNS privada | Interpretacao |
|---|---|---|---|
| Blob Storage | pe-stdemoappdata001-blob | privatelink.blob.core.windows.net | Boa pratica para dados via rede privada. |
| File Storage | pe-stdemoappdata001-file | privatelink.file.core.windows.net | Boa pratica para compartilhamentos privados. |
| Key Vault | pe-kvdemoappbrs001 | privatelink.vaultcore.azure.net | Reduz exposicao de secrets. |
| Redis | pe-redis-demo-app-brs-001-redis | privatelink.redis.cache.windows.net | Isola cache da internet publica. |
| MySQL | pe-mysql-flex-demo-app-brs-001 | privatelink.mysql.database.azure.com | Isola banco da internet publica. |
Mostra por que cada item foi classificado como alto, medio ou baixo.
| Risco | Evidencia no inventario | Por que impacta a nota | Validacao recomendada |
|---|---|---|---|
| Terraform state exposto ou pouco protegido | stdemoapptfstate aparece como storage account dedicada ao state, mas nao ha Private Endpoint correspondente no inventario. |
State pode conter referencias sensiveis e detalhes de toda a infraestrutura. | Checar public network access, firewall, private endpoint, versioning, soft delete e RBAC. |
| NSGs sem regras customizadas | 4 NSGs por camada foram identificados, mas sem regras customizadas no report original. | Dependencia de regras default reduz controle explicito de trafego e saida. | Exportar regras efetivas por subnet/NIC e criar matriz de fluxos permitidos. |
| Redis Enterprise em staging | redis-demo-app-brs-001 usa Microsoft.Cache/redisEnterprise. |
Tier pode estar superdimensionado para ambiente staging, elevando custo recorrente. | Validar uso de features Enterprise e executar teste de carga em Premium/Standard. |
| Observabilidade nao evidenciada | Inventario nao mostra Log Analytics workspace, diagnostic settings ou alert rules. | Sem logs centralizados, investigacao e auditoria ficam incompletas. | Consultar diagnostic settings por recurso e configurar dashboards/alertas minimos. |
| Managed identities incompletas | Apenas id-agw-demo-app-brs-001 aparece como User Assigned Managed Identity. |
Pode indicar lacuna de identidade nos VMSS ou dados nao coletados. | Auditar System Assigned Identity, User Assigned Identity e acesso a Key Vault. |
Detalha as inferencias feitas a partir de subnets, VMSS, PaaS e recursos de borda.
| Area | Evidencia | Conclusao |
|---|---|---|
| Entrada de trafego | Application Gateway com Public IP proprio e subnet dedicada. | Modelo esperado para entrada controlada; validar WAF_v2, autoscaling e regras de listener. |
| Camada client/API | Subnet snet-demo-app-client-brs-001 e VMSS client. | Boa separacao da camada voltada a cliente; validar NSG efetivo. |
| Camada app/workers | Subnet snet-demo-app-app-brs-001 e VMSS process/RabbitMQ. | Arquitetura sugere processamento assincrono e mensageria interna. |
| Camada data | Subnet snet-demo-app-data-brs-001, MySQL e Redis. | Dados isolados da borda; conectividade via Private Endpoint reduz superficie publica. |
| Administracao | Azure Bastion em AzureBastionSubnet. | Evita IP publico em VMs e reduz risco de acesso remoto direto. |
| Saida para internet | NAT Gateway com Public IP dedicado. | Bom controle de egress, mas deve ser combinado com NSG e monitoramento de destinos. |
Define quais objetos o backend deve gerar para preencher esta secao sem edicao manual.
score_breakdown[] com criterio, pontuacao, evidencia e motivo de perda de pontos.resource_groups_by_domain[] com dominio, recursos principais, quantidade e interpretacao.risk_evidence[] com risco, severidade, evidencia, impacto e validacao recomendada.architecture_notes[] com area, recursos relacionados, inferencia e confianca da inferencia.Conteudo original do assessment preservado em formato profissional para consulta, auditoria e rastreabilidade.
Inclui tabelas de inventario, arquitetura, seguranca, custos, observacoes e sumario final do report original.
Gerado em: Análise completa da subscription AZURE_ASSESSMENT_SAMPLE
Região Principal: Brazil South (brazilsouth)
Ambiente: Staging (stg) — Aplicação: SampleCommerce (sc)
A subscription AZURE_ASSESSMENT_SAMPLE hospeda o ambiente de staging da aplicação SampleCommerce, composto por 48 recursos distribuídos em 20 tipos distintos, todos concentrados na região Brazil South. A infraestrutura segue um padrão bem estruturado baseado em escala horizontal via Virtual Machine Scale Sets (VMSS), com isolamento de rede via Private Endpoints e forte adoção de práticas de segurança perimetral. O gerenciamento de infraestrutura é feito via Terraform, evidenciado pela storage account dedicada ao estado remoto.
| Métrica | Valor |
|---|---|
| Total de Recursos | 48 |
| Tipos de Recursos Distintos | 20 |
| Resource Groups | 8 |
| Região(ões) Ativas | Brazil South |
| Virtual Machines (standalone) | 0 |
| VM Scale Sets (VMSS) | 3 |
| VNets | 1 |
| NSGs | 4 |
| Storage Accounts | 2 |
| Bancos de Dados | 2 (MySQL Flexible + Redis Enterprise) |
| AKS Clusters | 0 |
| Ambiente | Staging |
| Tipo de Recurso | Quantidade | Localização |
|---|---|---|
| Microsoft.Network/privateDnsZones | 5 | Global |
| Microsoft.Network/privateDnsZones/virtualNetworkLinks | 5 | Global |
| Microsoft.Network/privateEndpoints | 5 | Brazil South |
| Microsoft.Network/networkInterfaces | 5 | Brazil South |
| Microsoft.Network/networkSecurityGroups | 4 | Brazil South |
| Microsoft.Network/publicIPAddresses | 3 | Brazil South |
| Microsoft.Compute/galleries | 3 | Brazil South |
| Microsoft.Compute/virtualMachineScaleSets | 3 | Brazil South |
| Microsoft.Compute/galleries/images | 3 | Brazil South |
| Microsoft.Storage/storageAccounts | 2 | Brazil South |
| Microsoft.DBforMySQL/flexibleServers | 1 | Brazil South |
| Microsoft.Cache/redisEnterprise | 1 | Brazil South |
| Microsoft.Network/virtualNetworks | 1 | Brazil South |
| Microsoft.Network/applicationGateways | 1 | Brazil South |
| Microsoft.Network/loadBalancers | 1 | Brazil South |
| Microsoft.Network/bastionHosts | 1 | Brazil South |
| Microsoft.Network/natGateways | 1 | Brazil South |
| Microsoft.Network/networkWatchers | 1 | Brazil South |
| Microsoft.KeyVault/vaults | 1 | Brazil South |
| Microsoft.ManagedIdentity/userAssignedIdentities | 1 | Brazil South |
| Nome | Tipo | Localização | Resource Group |
|---|---|---|---|
| vmss-demo-app-process-brs-001 | VM Scale Set | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| vmss-demo-app-rabbitmq-brs-001 | VM Scale Set | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| vmss-demo-app-client-brs-001 | VM Scale Set | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| sig_vmss_demo_app_process_brs_001 | Shared Image Gallery | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| sig_vmss_demo_app_rabbitmq_brs_001 | Shared Image Gallery | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| sig_vmss_demo_app_client_brs_001 | Shared Image Gallery | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| sig_vmss_demo_app_process_brs_001/img_vmss_demo_app_process_brs_001 | Gallery Image Definition | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| sig_vmss_demo_app_rabbitmq_brs_001/img_vmss_demo_app_rabbitmq_brs_001 | Gallery Image Definition | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
| sig_vmss_demo_app_client_brs_001/img_vmss_demo_app_client_brs_001 | Gallery Image Definition | Brazil South | rg-stg-samplecommerce-compute-brs-001 |
Inferência de Workloads: Os três VMSS revelam a arquitetura da aplicação SampleCommerce:
| Nome | Tipo | Localização | Resource Group |
|---|---|---|---|
| mysql-flex-demo-app-brs-001 | Azure Database for MySQL Flexible Server | Brazil South | rg-stg-samplecommerce-data-brs-001 |
| redis-demo-app-brs-001 | Azure Cache for Redis Enterprise | Brazil South | rg-stg-samplecommerce-data-brs-001 |
| Nome | Tipo | Localização | Resource Group |
|---|---|---|---|
| vnet-demo-app-network-brs-001 | Virtual Network | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nsg-demo-app-app-brs-001 | NSG | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nsg-demo-app-client-brs-001 | NSG | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nsg-demo-app-data-brs-001 | NSG | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nsg-demo-app-pe-brs-001 | NSG | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| agw-demo-app-brs-001 | Application Gateway | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| lb-demo-app-brs-001 | Load Balancer | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nat-demo-app-network-brs-001 | NAT Gateway | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| bas-demo-app-brs-001 | Azure Bastion | Brazil South | rg-stg-samplecommerce-mgmt-brs-001 |
| pip-nat-demo-app-network-brs-001 | Public IP (NAT Gateway) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| pip-agw-demo-app-brs-001 | Public IP (App Gateway) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| pip-bas-demo-app-brs-001 | Public IP (Bastion) | Brazil South | rg-stg-samplecommerce-mgmt-brs-001 |
| NetworkWatcher_sample-region | Network Watcher | Brazil South | rg-demo-networkwatcher |
| pe-stdemoappdata001-blob | Private Endpoint (Blob Storage) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| pe-stdemoappdata001-file | Private Endpoint (File Storage) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| pe-kvdemoappbrs001 | Private Endpoint (Key Vault) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| pe-redis-demo-app-brs-001-redis | Private Endpoint (Redis) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| pe-mysql-flex-demo-app-brs-001 | Private Endpoint (MySQL) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nic-stdemoappdata001-blob | NIC (PE Blob) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nic-stdemoappdata001-file | NIC (PE File) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nic-kvdemoappbrs001 | NIC (PE Key Vault) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nic-redis-demo-app-brs-001-redis | NIC (PE Redis) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| nic-mysql-flex-demo-app-brs-001 | NIC (PE MySQL) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
| Zona DNS Privada | Virtual Network Link | Resource Group |
|---|---|---|
| privatelink.vaultcore.azure.net | link-privatelink-vaultcore-azure-net | rg-stg-samplecommerce-privatedns-brs-001 |
| privatelink.blob.core.windows.net | link-privatelink-blob-core-windows-net | rg-stg-samplecommerce-privatedns-brs-001 |
| privatelink.file.core.windows.net | link-privatelink-file-core-windows-net | rg-stg-samplecommerce-privatedns-brs-001 |
| privatelink.mysql.database.azure.com | link-mysql-flex-demo-app-brs-001 | rg-stg-samplecommerce-privatedns-brs-001 |
| privatelink.redis.cache.windows.net | link-privatelink-redis-cache-windows-net | rg-stg-samplecommerce-privatedns-brs-001 |
✅ Todas as zonas DNS privadas possuem Virtual Network Links configurados, garantindo resolução DNS correta para os Private Endpoints.
| Nome | Kind | SKU | Resource Group |
|---|---|---|---|
| stdemoapptfstate | StorageV2 | Standard_LRS | rg-demo-terraform-state |
| stdemoappdata001 | StorageV2 | Standard_LRS | rg-stg-samplecommerce-data-brs-001 |
| Nome | Tipo | Localização | Resource Group |
|---|---|---|---|
| kvdemoappbrs001 | Key Vault | Brazil South | rg-stg-samplecommerce-security-brs-001 |
| id-agw-demo-app-brs-001 | Managed Identity (User Assigned) | Brazil South | rg-stg-samplecommerce-network-brs-001 |
⚠️ Nenhuma VM standalone encontrada. O ambiente utiliza exclusivamente Virtual Machine Scale Sets (VMSS) para os workloads de compute, o que é uma boa prática para ambientes elásticos.
172.16.0.0/21 (2046 IPs utilizáveis)
| Subnet | CIDR | IPs Disponíveis | Finalidade Inferida |
|---|---|---|---|
| snet-demo-app-client-brs-001 | 172.16.0.64/26 | 59 IPs | VMSS Client (frontend/API) |
| snet-demo-app-app-brs-001 | 172.16.0.128/26 | 59 IPs | VMSS Process/App Workers |
| snet-demo-app-data-brs-001 | 172.16.1.0/27 | 27 IPs | Banco de dados (MySQL, Redis) |
| snet-demo-app-pe-brs-001 | 172.16.2.0/27 | 27 IPs | Private Endpoints |
| AzureBastionSubnet | 172.16.3.0/26 | 59 IPs | Azure Bastion (acesso remoto seguro) |
| snet-demo-app-agw-brs-001 | 172.16.4.0/24 | 251 IPs | Application Gateway |
📌 Observações:
/21 é bem dimensionado para um ambiente staging, com espaço para expansão/24) está generosamente provisionada — pode ser reduzidasnet-demo-app-app-brs-001
Application Gateway (pip-agw-demo-app-brs-001)
└── snet-demo-app-agw-brs-001 (172.16.4.0/24)
↓
snet-demo-app-client-brs-001 ← NSG: nsg-demo-app-client-brs-001
└── vmss-demo-app-client-brs-001
└── vmss-demo-app-rabbitmq-brs-001 (provável)
snet-demo-app-app-brs-001 ← NSG: nsg-demo-app-app-brs-001
└── vmss-demo-app-process-brs-001
snet-demo-app-data-brs-001 ← NSG: nsg-demo-app-data-brs-001
└── mysql-flex-demo-app-brs-001
└── redis-demo-app-brs-001
snet-demo-app-pe-brs-001 ← NSG: nsg-demo-app-pe-brs-001
└── pe-stdemoappdata001-blob
└── pe-stdemoappdata001-file
└── pe-kvdemoappbrs001
└── pe-redis-demo-app-brs-001-redis
└── pe-mysql-flex-demo-app-brs-001
AzureBastionSubnet (172.16.3.0/26)
└── bas-demo-app-brs-001 (pip-bas-demo-app-brs-001)
NAT Gateway: nat-demo-app-network-brs-001 (pip-nat-demo-app-network-brs-001)
└── Saída controlada para internet dos VMSS
Load Balancer: lb-demo-app-brs-001
└── Provável balanceamento interno para VMSS
ℹ️ Nenhum cluster AKS encontrado nesta subscription.
| Atributo | Valor |
|---|---|
| Nome | mysql-flex-demo-app-brs-001 |
| Tipo | Azure Database for MySQL Flexible Server |
| Localização | Brazil South |
| Resource Group | rg-stg-samplecommerce-data-brs-001 |
| Conectividade | Private Endpoint (pe-mysql-flex-demo-app-brs-001) |
| DNS Privado | privatelink.mysql.database.azure.com |
| NIC | nic-mysql-flex-demo-app-brs-001 |
| Acesso Público | ❌ Bloqueado (via Private Endpoint) |
| SKU/Tier | Não informado no inventário |
✅ Isolado da internet — acesso exclusivo via rede privada
| Atributo | Valor |
|---|---|
| Nome | redis-demo-app-brs-001 |
| Tipo | Redis Enterprise (Microsoft.Cache/redisEnterprise) |
| Localização | Brazil South |
| Resource Group | rg-stg-samplecommerce-data-brs-001 |
| Conectividade | Private Endpoint (pe-redis-demo-app-brs-001-redis) |
| DNS Privado | privatelink.redis.cache.windows.net |
| NIC | nic-redis-demo-app-brs-001-redis |
| Acesso Público | ❌ Bloqueado (via Private Endpoint) |
| Tier | Enterprise (tier mais avançado — alto desempenho) |
⚠️ Redis Enterprise é o tier mais caro do Azure Cache for Redis. Para um ambiente de staging, avaliar se o tier Premium ou Standard seria suficiente (ver seção de custos).
| Banco | Private Endpoint | DNS Privado | Acesso Público |
|---|---|---|---|
| MySQL Flexible Server | ✅ pe-mysql-flex-demo-app-brs-001 | ✅ privatelink.mysql.database.azure.com | ❌ Desabilitado |
| Redis Enterprise | ✅ pe-redis-demo-app-brs-001-redis | ✅ privatelink.redis.cache.windows.net | ❌ Desabilitado |
| NSG | Subnet Associada (Inferida) | Regras Customizadas | Status |
|---|---|---|---|
| nsg-demo-app-client-brs-001 | snet-demo-app-client-brs-001 | 0 (apenas regras padrão Azure) | ⚠️ Somente default rules |
| nsg-demo-app-app-brs-001 | snet-demo-app-app-brs-001 | 0 (apenas regras padrão Azure) | ⚠️ Somente default rules |
| nsg-demo-app-data-brs-001 | snet-demo-app-data-brs-001 | 0 (apenas regras padrão Azure) | ⚠️ Somente default rules |
| nsg-demo-app-pe-brs-001 | snet-demo-app-pe-brs-001 | 0 (apenas regras padrão Azure) | ⚠️ Somente default rules |
Regras padrão do Azure (presentes em todo NSG):
AllowVNetInBound — permite tráfego intra-VNet (prioridade 65000)AllowAzureLoadBalancerInBound — permite health probes (prioridade 65001)DenyAllInBound — nega todo tráfego externo restante (prioridade 65500)AllowVnetOutBound — permite saída intra-VNet (prioridade 65000)AllowInternetOutBound — permite saída para internet (prioridade 65001) ⚠️DenyAllOutBound — nega demais saídas (prioridade 65500)
Impacto: NSGs criados mas sem regras customizadas dependem
exclusivamente das regras padrão do Azure.
A regra "AllowInternetOutBound" está ativa por padrão,
permitindo que os VMSS façam conexões de saída irrestrita
para a internet.
Afetados: Todos os 4 NSGs
Mitigação: Adicionar regras explícitas de deny/allow conforme
o princípio do menor privilégio.
O nat-demo-app-network-brs-001 com IP público pip-nat-demo-app-network-brs-001
provê saída à internet para os VMSS. Isso é esperado para
atualizações de SO e chamadas a APIs externas, mas deve ser
monitorado e, idealmente, restrito via NSG de saída.
Nome: stdemoapptfstate
RG: rg-demo-terraform-state
SKU: Standard_LRS (sem redundância geográfica)
CRÍTICO: Esta storage account armazena o Terraform state file,
que contém configurações sensíveis de TODA a infraestrutura.
Verificar:
- Acesso público está desabilitado?
- Private Endpoint configurado? (NÃO há PE registrado para esta SA)
- Versioning habilitado para rollback do state?
- Soft delete habilitado?
- Acesso restrito apenas à pipeline CI/CD via Managed Identity?
Apenas id-agw-demo-app-brs-001 está visível no inventário.
Os VMSS e outros serviços podem estar usando System-Assigned
Identities (não visíveis neste inventário) ou, pior,
credenciais estáticas armazenadas em variáveis de ambiente.
Recomendação: Auditar autenticação de todos os VMSS
e garantir uso de Managed Identities.
Nome: kvdemoappbrs001
O inventário não confirma se Diagnostic Settings estão
habilitados no Key Vault para auditoria de acesso a secrets.
Verificar habilitação de audit logs no Azure Monitor.
| Controle | Status | Detalhe |
|---|---|---|
| Private Endpoints para todos os PaaS | ✅ Excelente | MySQL, Redis, Key Vault, Blob, File — todos via PE |
| Azure Bastion | ✅ Excelente | Acesso remoto seguro sem expor RDP/SSH |
| NAT Gateway | ✅ Bom | Saída controlada com IP estático |
| Key Vault dedicado | ✅ Bom | Secrets centralizados em kvdemoappbrs001 |
| DNS Privado completo | ✅ Excelente | 5 zonas com VNet Links configurados |
| NSGs por camada | ✅ Bom | Segmentação por app/client/data/PE |
| Network Watcher | ✅ Bom | Monitoramento de rede habilitado |
| Sem IPs públicos em VMs | ✅ Excelente | Nenhuma VM com IP público direto |
| # | Recomendação | Recurso Afetado | Ação |
|---|---|---|---|
| 1 | Proteger Terraform State com Private Endpoint | stdemoapptfstate | Criar PE + desabilitar acesso público |
| 2 | Adicionar regras customizadas nos NSGs | nsg-demo-app-* (4 NSGs) | Definir regras mínimas de entrada/saída |
| 3 | Restringir saída à internet nos NSGs | Todos os NSGs | Adicionar regra DenyAllOutbound customizada |
| 4 | Habilitar Diagnostic Settings no Key Vault | kvdemoappbrs001 | Enviar logs para Log Analytics |
| 5 | Auditar autenticação dos VMSS | vmss-demo-app-* | Confirmar uso de Managed Identities |
| # | Recomendação | Recurso Afetado | Ação |
|---|---|---|---|
| 6 | Habilitar Zone Redundancy no MySQL | mysql-flex-demo-app-brs-001 | Alta disponibilidade com standby em outra AZ |
| 7 | Habilitar GRS/ZRS na Storage Account de dados | stdemoappdata001 | Mudar de LRS para ZRS |
| 8 | Habilitar soft delete e versioning no Blob | stdemoapptfstate + stdemoappdata001 | Proteção contra exclusão acidental |
| 9 | Configurar Autoscaling nos VMSS | vmss-demo-app-* | Definir políticas de scale in/out |
| 10 | Avaliar redundância do Application Gateway | agw-demo-app-brs-001 | Confirmar SKU WAF_v2 com autoscaling |
| # | Recomendação | Recurso Afetado | Ação |
|---|---|---|---|
| 11 | Redimensionar subnet do AGW | snet-demo-app-agw-brs-001 | /24 é excessivo para AGW — reduzir para /26 |
| 12 | Avaliar downgrade do Redis Enterprise | redis-demo-app-brs-001 | Testar se Premium ou Standard atende staging |
| 13 | Implementar Azure Policy para tags | Todos os RGs | Garantir tags de custo, ambiente e time |
| 14 | Configurar Budget Alerts | Subscription | Alertas de custo em 80% e 100% |
| 15 | Revisar galleries/images obsoletas | sig_vmss_demo_app_* | Limpar versões de imagem antigas |
| 16 | Adicionar Azure Monitor + Log Analytics | Todos os recursos | Centralizar logs e métricas |
| 17 | Configurar Azure Defender for Databases | MySQL + Redis | Detecção de ameaças em tempo real |
Nota: Estimativas baseadas nos preços públicos da região Brazil South (USD/BRL). Valores aproximados para fins de planejamento. Sem informações de SKU dos VMSS, estimativas usam configurações típicas para workloads similares.
| Recurso | Tipo/SKU | Custo Est. (USD/mês) | Observação |
|---|---|---|---|
| redis-demo-app-brs-001 | Redis Enterprise E10 | ~$700–$1.200 | Tier mais caro — revisar necessidade |
| mysql-flex-demo-app-brs-001 | MySQL Flexible (estimado D4s_v3, 2 vCores) | ~$150–$300 | Depende do tier/SKU real |
| vmss-demo-app-process-brs-001 | VMSS (estimado 2x Standard_D2s_v3) | ~$180–$350 | Depende do autoscaling |
| vmss-demo-app-rabbitmq-brs-001 | VMSS (estimado 2x Standard_D2s_v3) | ~$180–$350 | RabbitMQ tipicamente 2-3 nós |
| vmss-demo-app-client-brs-001 | VMSS (estimado 2x Standard_D2s_v3) | ~$180–$350 | Depende do autoscaling |
| agw-demo-app-brs-001 | Application Gateway WAF_v2 | ~$200–$350 | Inclui WAF + capacity units |
| bas-demo-app-brs-001 | Azure Bastion Standard | ~$140–$200 | Custo fixo por hora + dados |
| nat-demo-app-network-brs-001 | NAT Gateway | ~$35–$50 | Fixo + por GB processado |
| pip-* (3x IPs Públicos) | Public IP Standard | ~$11–$15 | ~$3,65/IP/mês |
| stdemoapptfstate | Storage V2 Standard_LRS | ~$5–$20 | Depende do volume de dados |
| stdemoappdata001 | Storage V2 Standard_LRS | ~$20–$80 | Depende do volume de dados |
| kvdemoappbrs001 | Key Vault Standard | ~$5–$15 | Por operações/secrets |
| lb-demo-app-brs-001 | Load Balancer Standard | ~$18–$25 | Fixo + por regra |
| Private Endpoints (5x) | Private Endpoint | ~$35–$50 | ~$7/PE/mês |
| TOTAL ESTIMADO | ~$1.859–$3.355/mês |
| Recurso | Custo Atual Est. | Ação Sugerida | Economia Estimada |
|---|---|---|---|
| redis-demo-app-brs-001 (Enterprise) | ~$1.200/mês | ⬇️ Downgrade para Redis Premium P1 (~$200/mês) se carga de staging permitir | ~$1.000/mês |
| vmss-demo-app-* (3 VMSS) | ~$900/mês combinado | ⏰ Implementar auto-shutdown em horários fora do expediente (staging) | ~$450/mês (50% redução) |
| bas-demo-app-brs-001 | ~$200/mês | ⏰ Usar Azure Bastion Basic ou desligar fora do horário comercial | ~$100/mês |
| stdemoapptfstate (LRS) | ~$10/mês | ✅ Manter LRS para state file (não precisa geo-redundância) | $0 |
| stdemoappdata001 (LRS) | ~$50/mês | ✅ LRS adequado para staging — sem ação | $0 |
| agw-demo-app-brs-001 | ~$300/mês | ⬇️ Reduzir capacity units mínimos para ambiente staging | ~$100/mês |
| VMSS — Reserved Instances | ~$900/mês (PAYG) | 💰 1-Year Reserved para instâncias base dos VMSS (~40% desconto) | ~$360/mês |
| Imagens obsoletas nas Galleries | ~$10–$30/mês (storage) | 🗑️ Limpar versões de imagem antigas não utilizadas | ~$15/mês |
| Categoria | Economia Mensal Estimada |
|---|---|
| Downgrade Redis Enterprise → Premium | ~$1.000/mês |
| Auto-shutdown VMSS (horário comercial) | ~$450/mês |
| Redução capacity AGW | ~$100/mês |
| Reserved Instances para VMSS base | ~$360/mês |
| Bastion Basic + agendamento | ~$100/mês |
| Limpeza de imagens nas Galleries | ~$15/mês |
| ECONOMIA TOTAL POTENCIAL | ~$2.025/mês (~$24.300/ano) |
Custo atual estimado: ~$1.859–$3.355/mês
Custo estimado pós-otimização: ~$1.330–$2.180/mês
Redução potencial: 35–60% dependendo do tier do Redis
O recurso redis-demo-app-brs-001 utiliza o tier Redis Enterprise, que é destinado a workloads de produção de alta escala com features como:
Para um ambiente de staging, este tier raramente é justificado a não ser que seja necessário testar comportamentos específicos do Enterprise. A migração para Premium ou até Standard pode representar a maior economia individual desta subscription.
1. Arquitetura bem segmentada — 6 subnets com propósitos claros e NSGs por camada
2. 100% dos PaaS críticos via Private Endpoints — MySQL, Redis, Key Vault, Storage
3. Infraestrutura como Código — Terraform state dedicado e centralizado
4. Zero VMs com IP público — Acesso gerenciado exclusivamente via Bastion
5. Nomenclatura consistente — Padrão tipo-env-app-recurso-região-seq em todos os recursos
6. VMSS com Shared Image Galleries — Imutabilidade e rastreabilidade de imagens
1. NSGs sem regras customizadas — Dependência das regras default do Azure
2. Redis Enterprise em staging — Custo desproporcional ao ambiente
3. Storage do Terraform State sem Private Endpoint confirmado
4. Sem evidência de Azure Monitor/Log Analytics configurado
5. Storage Accounts com LRS — Sem redundância zonal para dados da aplicação
Semana 1: Adicionar regras customizadas nos 4 NSGs
Semana 2: Avaliar downgrade do Redis Enterprise → Premium
Semana 3: Configurar Private Endpoint para stdemoapptfstate
Semana 4: Implementar Azure Monitor + Budget Alerts
*Relatório gerado com base no inventário da subscription AZURE_ASSESSMENT_SAMPLE. Valores de custo são estimativas baseadas em preços públicos da região Brazil South e podem variar conforme configurações específicas de SKU, consumo real e descontos contratuais.*
Formato adequado para geracao automatica e acompanhamento por backlog.
| Prioridade | Recomendacao | Recurso afetado | Resultado esperado |
|---|---|---|---|
| P1 | Adicionar Private Endpoint e bloquear acesso publico ao Terraform state. | stdemoapptfstate | Reduz exposicao de configuracoes sensiveis. |
| P1 | Criar regras customizadas nos NSGs por camada. | nsg-demo-app-* | Aplica menor privilegio e melhora controle de trafego. |
| P2 | Habilitar diagnostic settings e Log Analytics. | Key Vault, AGW, VMSS, DBs, Storage | Centraliza logs e acelera investigacao de incidentes. |
| P2 | Auditar Managed Identities nos VMSS e aplicacoes. | vmss-demo-app-* | Remove dependencia de credenciais estaticas. |
| P3 | Revisar tier do Redis Enterprise para staging. | redis-demo-app-brs-001 | Reduz custo sem prejudicar testes funcionais. |
| P3 | Configurar budget alerts e tags obrigatorias. | Subscription e resource groups | Melhora governanca financeira e alocacao de custos. |