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.
empresa.local · Portugal Central
10.0.1.0/24
10.0.2.0/24
10.0.3.0/24
As subnets isolam logicamente diferentes camadas da aplicação — cada tier só comunica com o que precisa.
# 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
| Campo | Descrição | Exemplo |
|---|---|---|
| Prioridade | 100 a 4096 — menor número = maior prioridade. A primeira regra que corresponde é aplicada. | 100, 200, 300... |
| Nome | Identificador descritivo da regra | Allow-HTTP, Deny-SSH-Internet |
| Protocolo | TCP, UDP, ICMP ou Any | TCP |
| Origem / Destino | IP, CIDR, Service Tag ou Application Security Group | Internet, VirtualNetwork, 10.0.0.0/8 |
| Porta | Porta única, intervalo ou * | 80, 443, 22, 3389, 8080-8090, * |
| Acção | Allow ou Deny | Allow |
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ção | Nome padrão | Prioridade | Efeito |
|---|---|---|---|
| Entrada | AllowVnetInBound | 65000 | Permite tráfego de qualquer VNet |
| Entrada | AllowAzureLoadBalancerInBound | 65001 | Permite health probes do Load Balancer |
| Entrada | DenyAllInBound | 65500 | Nega todo o resto da entrada |
| Saída | AllowVnetOutBound | 65000 | Permite saída para qualquer VNet |
| Saída | AllowInternetOutBound | 65001 | Permite saída para a Internet |
| Saída | DenyAllOutBound | 65500 | Nega todo o resto da saída |
# 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.
# 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).
| Tipo | Tráfego | Uso |
|---|---|---|
| Public Load Balancer | Internet → VMs | Distribuir tráfego externo (web, API) por múltiplas VMs |
| Internal Load Balancer | VNet → VMs | Balancear tráfego interno entre tiers (app → DB) |
# 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.
Lab 5 — Criar VNet, NSG e testar isolamento de rede
Rede virtual com segmentação por subnets e NSG
- Cria a VNet:
az network vnet create --name vnet-lab5 --resource-group rg-lab-mod3 --address-prefix 10.10.0.0/16 --location PortugalCentral - 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 - 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 - Cria NSG para a subnet pública:
az network nsg create --name nsg-publico --resource-group rg-lab-mod3 --location PortugalCentral - 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 - 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 - No portal Azure, navega para vnet-lab5 → Diagram — deves ver visualmente a VNet com as duas subnets e o NSG associado.
- 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.
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?