🟠 Intermédio 🕐 ~65 min Módulo 5 de 7

Redes Virtuais
Azure

As redes virtuais (VNets) são a base da conectividade no Azure. Permitem que os recursos Azure comuniquem entre si de forma segura, isolada da Internet pública. Neste módulo dominamos VNets, NSGs, load balancers e conectividade híbrida.

1 Virtual Network (VNet)

Uma Virtual Network (VNet) é o bloco fundamental de rede privada no Azure — equivalente a uma rede física tradicional, mas virtualizada e totalmente gerida. Todos os recursos que colocas numa VNet podem comunicar entre si por defeito.

Arquitectura típica de uma VNet com múltiplas subnets
🌐 VNet: 10.0.0.0/16
empresa.local · Portugal Central
↙ ↓ ↘
📱 Web Tier
10.0.1.0/24
⚙️ App Tier
10.0.2.0/24
🗄️ Data Tier
10.0.3.0/24

As subnets isolam logicamente diferentes camadas da aplicação — cada tier só comunica com o que precisa.

Azure CLI — Criar VNet com subnets
# Criar VNet principal
az network vnet create \
  --name vnet-lab-mod5 \
  --resource-group rg-lab-mod3 \
  --location PortugalCentral \
  --address-prefix 10.0.0.0/16

# Criar subnet para camada web
az network vnet subnet create \
  --name snet-web \
  --vnet-name vnet-lab-mod5 \
  --resource-group rg-lab-mod3 \
  --address-prefix 10.0.1.0/24

# Criar subnet para camada de dados
az network vnet subnet create \
  --name snet-data \
  --vnet-name vnet-lab-mod5 \
  --resource-group rg-lab-mod3 \
  --address-prefix 10.0.3.0/24

# Listar subnets da VNet
az network vnet subnet list \
  --vnet-name vnet-lab-mod5 \
  --resource-group rg-lab-mod3 \
  --output table

2 Network Security Groups (NSG)

Um NSG é uma firewall virtual que filtra tráfego de rede de e para recursos Azure. Contém regras de segurança que permitem ou negam tráfego com base em protocolo, porta, origem e destino. Pode ser aplicado a subnets ou interfaces de rede individuais.

Como funcionam as regras NSG

CampoDescriçãoExemplo
Prioridade100 a 4096 — menor número = maior prioridade. A primeira regra que corresponde é aplicada.100, 200, 300...
NomeIdentificador descritivo da regraAllow-HTTP, Deny-SSH-Internet
ProtocoloTCP, UDP, ICMP ou AnyTCP
Origem / DestinoIP, CIDR, Service Tag ou Application Security GroupInternet, VirtualNetwork, 10.0.0.0/8
PortaPorta única, intervalo ou *80, 443, 22, 3389, 8080-8090, *
AcçãoAllow ou DenyAllow

Regras padrão (não elimináveis)

Todos os NSGs têm 3 regras de entrada e 3 de saída por defeito, com prioridade 65000+:

DireçãoNome padrãoPrioridadeEfeito
EntradaAllowVnetInBound65000Permite tráfego de qualquer VNet
EntradaAllowAzureLoadBalancerInBound65001Permite health probes do Load Balancer
EntradaDenyAllInBound65500Nega todo o resto da entrada
SaídaAllowVnetOutBound65000Permite saída para qualquer VNet
SaídaAllowInternetOutBound65001Permite saída para a Internet
SaídaDenyAllOutBound65500Nega todo o resto da saída
Azure CLI — Criar e configurar NSG
# Criar NSG
az network nsg create \
  --name nsg-web \
  --resource-group rg-lab-mod3 \
  --location PortugalCentral

# Adicionar regra: permitir HTTP (porta 80) da Internet
az network nsg rule create \
  --nsg-name nsg-web \
  --resource-group rg-lab-mod3 \
  --name Allow-HTTP \
  --priority 100 \
  --protocol Tcp \
  --direction Inbound \
  --source-address-prefix Internet \
  --destination-port-range 80 \
  --access Allow

# Adicionar regra: permitir HTTPS (porta 443)
az network nsg rule create \
  --nsg-name nsg-web \
  --resource-group rg-lab-mod3 \
  --name Allow-HTTPS \
  --priority 110 \
  --protocol Tcp \
  --direction Inbound \
  --source-address-prefix Internet \
  --destination-port-range 443 \
  --access Allow

# Negar SSH da Internet (boa prática — usa Azure Bastion em produção)
az network nsg rule create \
  --nsg-name nsg-web \
  --resource-group rg-lab-mod3 \
  --name Deny-SSH-Internet \
  --priority 200 \
  --protocol Tcp \
  --direction Inbound \
  --source-address-prefix Internet \
  --destination-port-range 22 \
  --access Deny

# Associar NSG à subnet web
az network vnet subnet update \
  --vnet-name vnet-lab-mod5 \
  --name snet-web \
  --resource-group rg-lab-mod3 \
  --network-security-group nsg-web

3 Endereços IP Públicos

📍

IP Dinâmico

Atribuído automaticamente, pode mudar ao parar/reiniciar o recurso. Gratuito. Só para dev/test.

📌

IP Estático

Fixo, não muda mesmo ao reiniciar. Pequeno custo mensal (~3 EUR). Obrigatório para produção e DNS.

🏷️

DNS Label

Nome DNS personalizado do tipo nome.PortugalCentral.cloudapp.azure.com. Aponta sempre para o IP correcto.

🔢

SKU Standard

Obrigatório para Load Balancer Standard e Zones. Seguro por defeito — nega tráfego sem regras NSG.

4 VNet Peering

O VNet Peering liga duas VNets Azure (mesma ou diferentes regiões) permitindo que os recursos comuniquem como se estivessem na mesma rede. O tráfego passa pela rede backbone da Microsoft — baixa latência, sem Internet pública.

ℹ️
Peering não é transitivo! Se VNet A faz peering com B, e B faz peering com C, A não consegue comunicar com C automaticamente. Para conectividade full-mesh, precisas de peering directo entre todas as VNets ou de um hub VNet central (hub-and-spoke).
Azure CLI — VNet Peering
# Criar segunda VNet para fazer peering
az network vnet create \
  --name vnet-lab-mod5-b \
  --resource-group rg-lab-mod3 \
  --address-prefix 10.1.0.0/16 \
  --location PortugalCentral

# Criar peering de A para B
az network vnet peering create \
  --name peering-a-to-b \
  --resource-group rg-lab-mod3 \
  --vnet-name vnet-lab-mod5 \
  --remote-vnet vnet-lab-mod5-b \
  --allow-vnet-access

# Criar peering de B para A (o peering é bidirecional mas requer criação dos dois lados)
az network vnet peering create \
  --name peering-b-to-a \
  --resource-group rg-lab-mod3 \
  --vnet-name vnet-lab-mod5-b \
  --remote-vnet vnet-lab-mod5 \
  --allow-vnet-access

# Verificar estado do peering
az network vnet peering list \
  --resource-group rg-lab-mod3 \
  --vnet-name vnet-lab-mod5 \
  --output table

5 Azure Load Balancer

O Azure Load Balancer distribui tráfego de rede de entrada por múltiplas VMs (backend pool), garantindo alta disponibilidade e escalabilidade. Actua na camada 4 (TCP/UDP).

TipoTráfegoUso
Public Load BalancerInternet → VMsDistribuir tráfego externo (web, API) por múltiplas VMs
Internal Load BalancerVNet → VMsBalancear tráfego interno entre tiers (app → DB)
Azure CLI — Load Balancer Básico
# 1. Criar IP público para o Load Balancer
az network public-ip create \
  --name ip-lb-lab \
  --resource-group rg-lab-mod3 \
  --sku Standard \
  --allocation-method Static

# 2. Criar Load Balancer Standard
az network lb create \
  --name lb-lab \
  --resource-group rg-lab-mod3 \
  --sku Standard \
  --public-ip-address ip-lb-lab \
  --frontend-ip-name frontend-lb \
  --backend-pool-name backend-pool

# 3. Criar health probe (verifica se as VMs estão saudáveis)
az network lb probe create \
  --lb-name lb-lab \
  --resource-group rg-lab-mod3 \
  --name probe-http \
  --protocol Http \
  --port 80 \
  --path /health

# 4. Criar regra de balanceamento (porta 80 → VMs na porta 80)
az network lb rule create \
  --lb-name lb-lab \
  --resource-group rg-lab-mod3 \
  --name rule-http \
  --protocol Tcp \
  --frontend-port 80 \
  --backend-port 80 \
  --frontend-ip-name frontend-lb \
  --backend-pool-name backend-pool \
  --probe-name probe-http

6 Application Gateway

O Application Gateway é um load balancer de camada 7 (HTTP/HTTPS). Ao contrário do Load Balancer (camada 4), consegue rotear com base em URL, cabeçalhos, cookies — e inclui WAF (Web Application Firewall) para proteção contra OWASP Top 10.

🔀

URL-based routing

/api/* → backend API · /imagens/* → Storage CDN · /* → app principal

🔒

SSL Termination

Desencripta HTTPS no gateway, reduzindo carga nas VMs backend. Certificado gerido no Key Vault.

🛡️

WAF

Protege contra SQL injection, XSS, CSRF e outros ataques OWASP. Regras geridas ou personalizadas.

📊

Session affinity

Cookie-based affinity garante que o mesmo utilizador vai sempre ao mesmo backend (sessões stateful).

7 VPN Gateway e ExpressRoute

🔐

VPN Gateway

Ligação encriptada entre a tua rede on-premises e o Azure via Internet pública. Até 10 Gbps. Mais económico mas com latência variável.

⚡

ExpressRoute

Ligação privada dedicada ao Azure, sem passar pela Internet. Até 100 Gbps, latência previsível. Requer parceiro de telecomunicações.

💻

Point-to-Site VPN

Ligação VPN individual de um PC ao Azure. Útil para administradores e teletrabalho. Cliente VPN no PC.

🏢

Site-to-Site VPN

Ligação permanente entre escritório e Azure (router on-premises ↔ VPN Gateway). Transparente para utilizadores.

⚠️
Custo do VPN Gateway: o gateway tem um custo fixo de ~27 EUR/mês (SKU Basic) independentemente de uso. Para laboratórios, cria apenas se necessário e elimina no final. O ExpressRoute começa em ~55 EUR/mês (1 Gbps circuit).
Laboratório

Lab 5 — Criar VNet, NSG e testar isolamento de rede

Passo a passo

Rede virtual com segmentação por subnets e NSG

  1. Cria a VNet: az network vnet create --name vnet-lab5 --resource-group rg-lab-mod3 --address-prefix 10.10.0.0/16 --location PortugalCentral
  2. Cria duas subnets: az network vnet subnet create --name snet-publico --vnet-name vnet-lab5 --resource-group rg-lab-mod3 --address-prefix 10.10.1.0/24
  3. Cria subnet privada: az network vnet subnet create --name snet-privado --vnet-name vnet-lab5 --resource-group rg-lab-mod3 --address-prefix 10.10.2.0/24
  4. Cria NSG para a subnet pública: az network nsg create --name nsg-publico --resource-group rg-lab-mod3 --location PortugalCentral
  5. Adiciona regra para permitir HTTP: az network nsg rule create --nsg-name nsg-publico --resource-group rg-lab-mod3 --name Allow-HTTP --priority 100 --protocol Tcp --direction Inbound --source-address-prefix Internet --destination-port-range 80 --access Allow
  6. Associa NSG à subnet pública: az network vnet subnet update --vnet-name vnet-lab5 --name snet-publico --resource-group rg-lab-mod3 --network-security-group nsg-publico
  7. No portal Azure, navega para vnet-lab5 → Diagram — deves ver visualmente a VNet com as duas subnets e o NSG associado.
  8. Usa o Network Watcher → IP flow verify para simular tráfego: testa se HTTP (porta 80) é permitido na subnet pública e negado na privada.
🎯
Desafio extra: Adiciona uma VM em cada subnet e verifica que as VMs dentro da mesma VNet comunicam entre si (ping funciona), mas a subnet privada não é acessível da Internet.
Quiz

Verifica os teus conhecimentos — Módulo 5

1. Numa regra NSG com prioridade 100 (Allow-HTTP) e outra com prioridade 200 (Deny-All), o que acontece ao tráfego HTTP de entrada?

2. O VNet Peering não é transitivo. O que significa isto na prática?

3. Qual a diferença principal entre Azure Load Balancer e Application Gateway?