VPC, subnets, rotas, IGW e NAT
Objetivos desta aula
- Desenhar VPC com camadas
- Entender o que torna uma subnet pública
- Decidir sobre NAT considerando custo
VPC é a sua rede isolada na nuvem. O desenho padrão de produção tem três camadas: subnets públicas (ALB e NAT), subnets privadas de aplicação e subnets privadas de dados. Distribua em pelo menos duas zonas de disponibilidade — requisito de RDS multi-AZ e de tolerância a falha.
O que torna uma subnet 'pública' não é o nome: é a tabela de rotas apontar 0.0.0.0/0 para um Internet Gateway. Subnet privada usa NAT Gateway para sair (atualizar pacotes, chamar APIs) sem aceitar conexões de entrada. Confundir isso é a origem clássica de banco exposto na internet.
Atenção ao custo: NAT Gateway tem cobrança por hora e por dado processado, sendo um dos maiores vilões de fatura em ambiente de estudo. Alternativas: VPC endpoints para S3/ECR, instância NAT pequena em laboratório, ou simplesmente destruir o ambiente ao final do dia.
1. VPC é a sua rede privada na nuvem
Você escolhe o bloco (ex.: 10.20.0.0/16) e o divide em subnets, cada uma em uma zona de disponibilidade (AZ). Espalhar por pelo menos duas AZs é o que dá resiliência a falhas de datacenter.
2. Subnet pública x privada
O que torna uma subnet pública não é o nome: é a rota 0.0.0.0/0 apontando para um Internet Gateway. Subnets privadas mandam 0.0.0.0/0 para um NAT Gateway (só saída) ou não têm saída alguma.
3. Desenho em três camadas
- Pública: ALB e NAT Gateway
- Privada de aplicação: EC2, ECS ou nós do EKS
- Privada de dados: RDS e ElastiCache, sem rota para a internet
4. Custo do NAT e VPC endpoints
NAT Gateway cobra por hora e por GB. Tráfego para S3 e DynamoDB pode passar por gateway endpoints gratuitos; para outros serviços, interface endpoints (pagos, mas às vezes mais baratos que o NAT).
5. Checagem final
Você deve desenhar a VPC do CloudShop com 2 AZs e 3 camadas e explicar por que o banco não tem rota para a internet.
Na prática
Criar a VPC do CloudShop por CLI
bash
VPC_ID=$(aws ec2 create-vpc --cidr-block 10.20.0.0/16 \
--tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=cloudshop},{Key=env,Value=dev}]' \
--query Vpc.VpcId --output text)
PUB=$(aws ec2 create-subnet --vpc-id "$VPC_ID" --cidr-block 10.20.1.0/24 \
--availability-zone us-east-1a --query Subnet.SubnetId --output text)
PRIV=$(aws ec2 create-subnet --vpc-id "$VPC_ID" --cidr-block 10.20.11.0/24 \
--availability-zone us-east-1a --query Subnet.SubnetId --output text)
IGW=$(aws ec2 create-internet-gateway --query InternetGateway.InternetGatewayId --output text)
aws ec2 attach-internet-gateway --vpc-id "$VPC_ID" --internet-gateway-id "$IGW"
RT=$(aws ec2 create-route-table --vpc-id "$VPC_ID" --query RouteTable.RouteTableId --output text)
aws ec2 create-route --route-table-id "$RT" --destination-cidr-block 0.0.0.0/0 --gateway-id "$IGW"
aws ec2 associate-route-table --route-table-id "$RT" --subnet-id "$PUB"
aws ec2 describe-route-tables --filters "Name=vpc-id,Values=$VPC_ID" \
--query 'RouteTables[].{RT:RouteTableId,Rotas:Routes[].DestinationCidrBlock}'Nota de segurança: Nunca associe a subnet do banco a uma route table com rota para IGW: isso o torna alcançável da internet.
Plano de endereçamento da VPC dev
text
VPC 10.20.0.0/16
public-a 10.20.0.0/24 rota 0.0.0.0/0 -> igw
public-b 10.20.1.0/24 rota 0.0.0.0/0 -> igw
app-a 10.20.10.0/24 rota 0.0.0.0/0 -> nat-a
app-b 10.20.11.0/24 rota 0.0.0.0/0 -> nat-a (dev: 1 NAT para economizar)
data-a 10.20.20.0/24 sem rota externa
data-b 10.20.21.0/24 sem rota externaInspecionar rotas com a CLI
bash
aws ec2 describe-route-tables --filters Name=vpc-id,Values=vpc-0abc \
--query 'RouteTables[].{id:RouteTableId,routes:Routes[].[DestinationCidrBlock,GatewayId,NatGatewayId]}'Por que isso importa
Sem entender rota e subnet você não depura 'a aplicação não alcança o banco' nem desenha ambiente auditável.
Erro comum
Colocar RDS em subnet pública para 'facilitar o acesso' e expor o banco.
Dica de produção
Reserve faixas por ambiente (dev 10.20/16, staging 10.30/16, prod 10.40/16) para permitir peering futuro sem conflito.
Alerta de segurança
Fluxo de saída irrestrito também é risco: exfiltração de dados sai por 443. Considere VPC endpoints.
Pergunta de entrevista
O que exatamente diferencia uma subnet pública de uma privada?
Glossário
- IGW
- Internet Gateway: componente que permite tráfego entre a VPC e a internet.
- NAT Gateway
- Serviço que permite saída à internet de subnets privadas, sem entrada.
- AZ
- Zona de disponibilidade: datacenter isolado dentro de uma região.
- Internet Gateway
- Componente que conecta a VPC à internet nos dois sentidos.
- NAT Gateway
- Permite saída para a internet a partir de subnets privadas.
- VPC endpoint
- Acesso privado a serviços AWS sem passar pela internet.
Conexão com o CloudShop
Construir a VPC 10.20.0.0/16 do CloudShop com camadas pública, aplicação e dados.
Quiz da aula
1. O que torna uma subnet pública?
2. O que torna uma subnet pública?
3. Como reduzir custo de tráfego privado para o S3?
Minhas anotações
Salvo automaticamente neste navegador.