Design de rede VPC

Fundamentos de VPC, sub-redes publicas/privadas, a diferenca critica entre Security Groups e NACLs, NAT Gateway e VPC Endpoints explicados com analogias.

VPC (Virtual Private Cloud) e sua propria rede virtual privada dentro da AWS. Pode parecer complexo no inicio, mas pense nisso como projetar um condominio de apartamentos. Todo o condominio e sua VPC, cada edificio dentro e uma sub-rede, e o portao principal e o Internet Gateway. Tudo e seu para projetar e controlar.

 

O que e uma VPC e por que voce precisa de uma?

Quando voce coloca um servidor na internet, nao pode simplesmente lanca-lo sem planejamento. Voce precisa decidir quais enderecos IP ele usara, quem pode se conectar a ele e como seus servidores vao se comunicar entre si. A VPC oferece um espaco de rede privado onde voce controla todas essas decisoes.

Aqui esta um exemplo concreto. Imagine que voce gerencia uma plataforma de comercio eletronico. Seus servidores web precisam ser acessiveis para os clientes na internet. Mas seu banco de dados de pedidos nunca deve ser alcancavel diretamente da internet. Com uma VPC, voce pode projetar exatamente essa arquitetura, colocando servidores web em uma sub-rede publica e bancos de dados em uma sub-rede privada.

 

Bloco CIDR — Definindo seu intervalo de enderecos

Quando voce cria uma VPC, deve especificar o intervalo de enderecos IP que ela usara. Isso e chamado de bloco CIDR.

Pense nisso como atribuir um intervalo de numeros de unidades de apartamento ao seu condominio. Voce poderia dizer que os numeros de apartamento de 101 a 9999 pertencem a este condominio.

Usar 10.0.0.0/16 fornece 65.536 enderecos IP para trabalhar. Usar 10.0.0.0/24 fornece 256 enderecos. Quanto maior o numero apos a barra, menos enderecos voce tem disponivel.

 

Sub-redes — Os edificios dentro do seu condominio

Uma sub-rede divide sua VPC em redes menores, como edificios separados dentro de um condominio de apartamentos, cada um servindo a um proposito diferente.

Uma regra critica: cada sub-rede deve existir em exatamente uma Zona de Disponibilidade. Para alta disponibilidade, voce deve colocar sub-redes em multiplas AZs para que sua aplicacao sobreviva se um data center tiver uma interrupcao.

Sub-rede publica pode se comunicar diretamente com a internet. Voce coloca servidores web, balanceadores de carga e tudo que os usuarios externos precisam alcanzar em uma sub-rede publica. Pense nisso como as lojas no terreo do seu condominio, abertas e acessiveis a todos.

Sub-rede privada nao pode ser alcancada diretamente da internet. Voce coloca bancos de dados, servidores de aplicacoes internos e tudo que e sensivel em uma sub-rede privada. Pense nisso como os andares residenciais onde estranhos nao podem simplesmente entrar.

 

Tabelas de roteamento — Sinalizacoes de trafego

Uma tabela de roteamento e um conjunto de regras que diz a sua sub-rede para onde enviar seu trafego. Pense nisso como placas de sinalizacao em cada cruzamento.

Uma tabela de roteamento de sub-rede publica se parece com isso. O trafego destinado a 10.0.0.0/16 permanece local dentro da VPC. O trafego destinado a 0.0.0.0/0 (tudo na internet) vai para o Internet Gateway. E essa rota do Internet Gateway que torna uma sub-rede publica.

Uma tabela de roteamento de sub-rede privada e diferente. O trafego destinado a 10.0.0.0/16 permanece local. O trafego destinado a 0.0.0.0/0 vai para o NAT Gateway em vez do Internet Gateway. Como nao ha rota direta para o Internet Gateway, nada da internet pode alcancar esta sub-rede diretamente.

 

Internet Gateway — A entrada principal

O Internet Gateway e a porta entre sua VPC e a internet. Todo o trafego da internet passa por este unico ponto de entrada e saida. Voce so pode anexar um Internet Gateway por VPC.

Para que uma sub-rede publica se comunique realmente com a internet, duas coisas devem ser verdadeiras. A VPC deve ter um Internet Gateway anexado. A tabela de roteamento da sub-rede deve ter uma regra enviando trafego 0.0.0.0/0 para esse Internet Gateway.

 

Security Group vs Network ACL — A comparacao mais importante do exame

| Recurso | Security Group | Network ACL | |---------|---------------|-------------| | Aplicado em | Nivel de instancia (ENI) | Nivel de sub-rede | | Estado | Stateful (lembra conexoes) | Stateless (trata cada pacote independentemente) | | Tipos de regras | Apenas regras de permissao | Regras de permissao e negacao | | Trafego de retorno | Permitido automaticamente | Deve ser permitido explicitamente | | Padrao | Todo inbound negado, todo outbound permitido | Todo o trafego permitido |

O conceito mais confuso e Stateful vs Stateless. Aqui esta a forma mais clara de entender.

Security Group age como um guarda de seguranca inteligente com memoria perfeita. Quando um visitante entra no edificio, o guarda verifica sua identidade. Quando esse mesmo visitante sai, o guarda pensa "oh, essa e a pessoa que deixei entrar antes" e o deixa passar automaticamente. Voce nao precisa configurar a saida separadamente. Em termos de rede, se uma solicitacao de entrada e permitida, a resposta sai automaticamente sem precisar de uma regra de saida explicita.

Network ACL age como um guarda de seguranca sem memoria alguma. Quando um visitante entra, o guarda verifica sua identidade. Quando esse mesmo visitante tenta sair, o guarda o esqueceu completamente e verifica sua identidade novamente do zero. Em termos de rede, voce deve configurar explicitamente tanto as regras de entrada quanto de saida, incluindo regras para o trafego de resposta.

Ao configurar regras de saida do NACL, voce deve permitir o intervalo de portas efemeras (1024-65535). Quando seu navegador se conecta a um servidor na porta 443, o servidor envia sua resposta de volta para uma porta alta aleatoria no seu computador. O NACL deve permitir explicitamente o trafego para essas portas altas.

!Security Group vs Network ACL

NAT Gateway — A janela da internet da zona privada

As vezes as instancias em uma sub-rede privada precisam acessar a internet. Por exemplo, um servidor de aplicacoes pode precisar baixar atualizacoes de software ou chamar uma API externa. Mas voce nao quer que a internet possa alcancar essas instancias diretamente.

O NAT Gateway resolve isso perfeitamente. Ele permite que o trafego de saida de instancias privadas alcance a internet, mas bloqueia quaisquer conexoes de entrada da internet para essas instancias.

Usando a analogia do apartamento: os moradores (instancias privadas) podem pedir delivery (saida permitida). Mas estranhos nao podem simplesmente bater na porta do apartamento diretamente (entrada bloqueada).

Regras chave para o NAT Gateway. Deve ser colocado em uma sub-rede publica, nao privada. Requer um Elastic IP (um endereco IP publico estatico). Para alta disponibilidade, implante um NAT Gateway por Zona de Disponibilidade.

 

VPC Endpoints — Acessar servicos AWS sem a internet

Suponha que uma instancia em uma sub-rede privada precise salvar arquivos no S3. Sem um VPC Endpoint, o trafego sairia pelo NAT Gateway, cruzaria a internet publica e chegaria ao S3. Isso cria tanto um risco de seguranca quanto um custo desnecessario.

Um VPC Endpoint permite que suas instancias se conectem a servicos AWS atraves da rede privada interna da AWS, sem nunca tocar a internet publica.

| Tipo | Servicos suportados | Como funciona | Custo | |------|---------------------|---------------|-------| | Gateway Endpoint | Apenas S3 e DynamoDB | Adiciona uma rota a sua tabela de roteamento | Gratis | | Interface Endpoint | A maioria dos outros servicos AWS | Cria um ENI na sua sub-rede | Por hora + taxas de dados |

Ao acessar S3 ou DynamoDB de dentro de uma VPC, sempre prefira o Gateway Endpoint gratuito.

 

VPC Flow Logs — Registrando todo o trafego de rede

O VPC Flow Logs captura informacoes sobre o trafego IP que entra e sai das interfaces de rede na sua VPC. Voce pode enviar esses logs para o CloudWatch Logs ou S3 para analise.

Cada entrada de log informa: IP e porta de origem, IP e porta de destino, protocolo utilizado (TCP ou UDP), se o trafego foi aceito (ACCEPT) ou bloqueado (REJECT), e quantos bytes foram transferidos.

Aqui esta um cenario real de solucao de problemas. Seu desenvolvedor diz "nao consigo fazer SSH na minha instancia EC2." Voce verifica o VPC Flow Logs e encontra entradas REJECT para trafego na porta 22. Entao voce olha o Security Group e percebe que alguem deletou acidentalmente a regra de entrada da porta 22. Voce adiciona a regra de volta e a conexao funciona.

 

Acessando instancias privadas

Como voce se conecta a uma instancia EC2 em uma sub-rede privada sem acesso direto a internet?

A abordagem Bastion Host e o metodo tradicional. Voce coloca uma pequena instancia EC2 (o bastion) em uma sub-rede publica e faz SSH nela primeiro. De la voce faz SSH novamente para alcancar sua instancia privada. A desvantagem e que voce deve gerenciar chaves SSH e manter o bastion host seguro e atualizado.

A abordagem Session Manager e o metodo moderno e mais seguro. E um recurso do AWS Systems Manager que permite abrir uma sessao de terminal em qualquer instancia EC2 diretamente do console AWS ou AWS CLI, sem chaves SSH necessarias e sem necessidade de abrir a porta 22. Cada sessao e registrada no CloudTrail.

No exame, sempre que voce vir frases como "sem chaves SSH" ou "sem abrir a porta 22," Session Manager e a resposta.

 

Elastic IP — Um endereco publico fixo

Um Elastic IP e um endereco IP publico estatico que permanece igual mesmo quando voce para e reinicia uma instancia EC2. Normalmente, parar uma instancia faz com que seu IP publico mude quando ela reinicia.

Voce precisa de um Elastic IP ao criar um NAT Gateway. Voce tambem o usa quando sistemas externos precisam se conectar a um endereco IP especifico e permanente.

Nota importante: voce e cobrado por Elastic IPs que estao alocados mas nao associados a uma instancia em execucao. Libere quaisquer Elastic IPs que nao esteja usando ativamente.

Voltar à lista do blog