O caso
O banco de dados da loja tinha endereço público. Qualquer um na internet podia bater na porta dele.
O Isaac criou o servidor web e o banco de dados da loja do mesmo jeito: cada VM com um endereço público, para facilitar o acesso. No dia seguinte, o log do banco já mostrava centenas de tentativas de login vindas de países que ele nunca vendeu.
Só o servidor web precisava ser visto pela internet. O banco só precisava conversar com o servidor web.
Este post parte de Regiões e Zonas, de Máquinas Virtuais e de Responsabilidade Compartilhada: a configuração da rede é parte da segurança que fica com você.
O problema
Tudo exposto
Uma VM com endereço público recebe tentativas de acesso o tempo todo, de robôs que varrem a internet em busca de portas abertas. Quanto mais coisas expostas, maior a superfície de ataque.
A maioria dos componentes de um sistema não precisa ser alcançada de fora: o banco de dados, as filas, os serviços internos. Eles precisam falar só com outros componentes.
A solução
Uma rede privada, só sua
A nuvem deixa você criar uma rede virtual, um pedaço da rede do provedor isolado dos outros clientes, onde você define os endereços, as regras e as rotas. Na AWS e no Google Cloud ela se chama VPC; no Azure, Virtual Network (VNet); na Oracle, VCN.
Dentro dela, você divide o espaço em sub-redes. A sub-rede é o que decide quem enxerga quem:
- Sub-rede pública (public subnet): tem uma rota para a internet. Aqui ficam os componentes que o mundo precisa alcançar, como o servidor web.
- Sub-rede privada (private subnet): não tem rota de entrada da internet. Aqui ficam o banco de dados e os serviços internos.
Rede virtual (virtual private cloud, VPC)
O seu espaço isolado na nuvem. Você escolhe a faixa de endereços privados e o que entra nela.
Na loja: uma única rede para a loja inteira.
Sub-rede (subnet)
Uma divisão da rede virtual. Define, pelas rotas, quem fala com a internet e quem não fala.
Na loja: uma sub-rede pública para o site e uma privada para o banco.
Gateway de internet (internet gateway)
A porta que liga a rede virtual à internet, nos dois sentidos, para quem tem endereço público.
Na loja: é por ele que o cliente chega ao site.
NAT
Deixa quem está na sub-rede privada sair para a internet, sem permitir que alguém entre.
Na loja: o banco baixa atualizações, e ninguém de fora o alcança.
O nome em cada nuvem
Os conceitos valem para qualquer provedor. Mudam os produtos:
| AWS | Azure | Google Cloud | Oracle Cloud | |
|---|---|---|---|---|
| Rede virtual (virtual network) | VPC | Virtual Network | VPC | VCN |
| Saída sem entrada (NAT) | NAT Gateway | NAT Gateway | Cloud NAT | NAT Gateway |
| VPN até a empresa (site-to-site VPN) | Site-to-Site VPN | VPN Gateway | Cloud VPN | Site-to-Site VPN |
| Link dedicado (dedicated connection) | Direct Connect | ExpressRoute | Cloud Interconnect | FastConnect |
Quem pode entrar
Firewalls
A sub-rede diz por onde o tráfego pode passar. O firewall diz o que pode passar. São regras de entrada e de saída: de qual endereço, para qual porta, com qual protocolo.
Em geral, tudo o que não foi liberado explicitamente é bloqueado. Você abre só o necessário:
| Quem | Regra de entrada (inbound rule) |
|---|---|
| Servidor web | Qualquer endereço, portas 80 e 443 (a web) |
| Banco de dados | Só o servidor web, na porta do banco |
Cada provedor tem o seu: grupos de segurança na AWS, Network Security Groups no Azure, regras de firewall da VPC no Google Cloud e Network Security Groups na Oracle. Mudam os nomes e alguns detalhes; a ideia é a mesma.
Não confunda
Gateway de internet × NAT
Os dois ligam a rede à internet, e as provas adoram trocá-los. A pergunta é quem inicia a conversa.
Gateway de internet (internet gateway)
“Quero que a internet alcance o meu servidor, e que ele alcance a internet?”
- Exemplo
- O servidor web da loja, atendendo os clientes.
- Foco
- Entrada e saída, para quem tem endereço público.
NAT
“Quero que o servidor privado acesse a internet, sem que ninguém de fora o alcance?”
- Exemplo
- O banco de dados baixando uma atualização de segurança.
- Foco
- Só saída: quem está dentro inicia, quem está fora não.
Na prática
O que fica onde
| O que você tem | Onde colocar |
|---|---|
| Site e API que os clientes acessam | Sub-rede pública (public subnet) |
| Banco de dados e serviços internos | Sub-rede privada (private subnet) |
| Servidor privado que precisa baixar atualizações | Sub-rede privada (private subnet), com NAT |
| Escritório que acessa a rede da nuvem de forma segura | VPN pela internet, ou link dedicado |
A VPN cria um túnel criptografado pela internet. O link dedicado é um cabo reservado entre a empresa e o provedor, com mais estabilidade e custo maior.
Termos-chave
Seis termos para fixar
Toque no cartão para ver a definição.
Teste rápido
Três perguntas, estilo prova
01
Um servidor numa sub-rede privada precisa baixar atualizações da internet, sem receber conexões de fora. O que usar?
02
Em qual sub-rede deve ficar o banco de dados, que só o servidor web precisa acessar?
03
Uma empresa quer ligar o escritório à rede virtual, com o tráfego criptografado, usando a internet comum. O que usar?
A pergunta de prova sobre rede costuma ser a mesma: quem precisa ser alcançado de fora, e quem não precisa? Quem precisa fica numa sub-rede pública. O resto fica numa sub-rede privada, protegido por firewall, e sai pelo NAT quando precisa. É o que o Isaac faria hoje, com o banco longe da internet. O próximo passo da trilha é Custos na Nuvem.