🚀 Capítulo 15: Infraestrutura como Código Segura (IaC) (Tema: Lego)
NOTE
Este capítulo utiliza a temática de Lego para explicar a Infraestrutura como Código. Escrever o manual de montagem da sua fortaleza garante que ela seja recriada perfeitamente, mas se houver um erro no manual, a fortaleza inteira cairá!
1. 🎯 Objetivo da Aula
Compreender o conceito de Infraestrutura como Código (IaC) e aprender a identificar falhas de segurança em arquivos de configuração (como Terraform), garantindo que os recursos na nuvem nasçam seguros.
2. 🏢 O Cenário Prático (Seu Desafio)
Você quer construir uma fortaleza de Lego gigante e super segura.
- O Jeito Antigo: Você vai pegando as peças e montando na hora, de cabeça. Se você precisar construir outra igual amanhã, você não vai lembrar onde colocou cada peça.
- O Jeito Moderno (IaC): Você desenha o manual de instruções passo a passo em um papel. O manual diz: “Coloque 4 blocos aqui, deixe uma porta ali”. Qualquer pessoa que seguir o manual vai criar a fortaleza exatamente igual.
No mundo da computação em nuvem (AWS, Azure, Google Cloud), nós não clicamos mais em botões na tela para criar servidores. Nós escrevemos um arquivo de texto (o manual) dizendo como queremos a rede e os servidores. Isso é a IaC. O perigo: Se você escrever no manual “Deixe a porta do banco de dados aberta para qualquer um na internet”, o sistema vai criar o banco vulnerável automaticamente! Seu desafio é garantir que o manual esteja perfeito!
🧠 Fundamentos: A Teoria Traduzida
IaC (Infrastructure as Code) permite gerenciar e provisionar a infraestrutura de TI através de arquivos de definição legíveis por máquina, em vez de configuração física ou ferramentas de configuração interativas.
🚨 O Maior Risco da IaC: Configurações Inseguras em Larga Escala
Como a IaC automatiza a criação de tudo, um erro pequeno no código se multiplica por toda a empresa.
- Exemplo clássico: Deixar um “Bucket S3” (pasta de arquivos na nuvem da AWS) configurado como público por engano. Qualquer pessoa na internet poderá baixar os arquivos secretos da empresa.
🤖 Como testar a IaC?
Nós usamos ferramentas de SAST específicas para IaC (como o Checkov ou terrascan). Elas lêem o seu arquivo de configuração (Ex: Terraform) antes de você enviá-lo para a nuvem e avisam se você está criando algo inseguro!
4. 📖 Exemplo Guiado: O Erro no Terraform
Veja este exemplo de código Terraform (usado para criar recursos na nuvem):
# Criando um servidor na nuvem
resource "aws_instance" "servidor_web" {
ami = "ami-123456"
instance_type = "t2.micro"
# PERIGO: Permitindo acesso SSH (porta 22) de QUALQUER IP da internet!
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"] # Significa: Qualquer um do mundo!
}
}Como corrigir: Em cidr_blocks, devemos colocar apenas o IP da rede interna da empresa, e nunca 0.0.0.0/0.
5. 🛠️ Prática Obrigatória 1: Auditando o Manual
Imagine que você está revisando um arquivo de IaC que cria um Banco de Dados na nuvem e encontra a seguinte linha:
publicly_accessible = true
- O que essa configuração faz com o banco de dados?
- Qual a boa prática recomendada para bancos de dados em relação ao acesso público?
6. 🛠️ Prática Obrigatória 2: O Benefício da IaC
Se a IaC pode multiplicar um erro por toda a empresa, por que ainda assim dizemos que ela melhora a segurança em relação ao jeito antigo (onde o administrador criava as coisas clicando na tela)? (Dica: Pense em padronização e revisão de código).
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 15 Seguranca) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_12_desenvolvimento_seguro/
├── capitulos/
│ ├── capitulo_15_iac.md
│ └── codigos/
│ └── cap15/
│ └── infra_config.tf💡 Checkpoint de Lógica
Assim como revisamos o código que os programadores escrevem, os arquivos de IaC que os engenheiros de DevOps escrevem também devem passar por revisão por pares (Code Review) antes de serem aplicados!
10. 🔥 Desafio de Fixação
Pesquise sobre as duas ferramentas de IaC mais famosas do mercado: Terraform e Ansible.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Ela torna o banco de dados acessível diretamente pela internet por qualquer pessoa.
- Bancos de dados NUNCA devem ser públicos. Eles devem ficar em redes privadas, acessíveis apenas pelo servidor do site. Gabarito da Prática 2: Porque com o código escrito, nós podemos: 1. Passar ferramentas automáticas de segurança antes de criar; 2. Ter outros engenheiros revisando o arquivo; 3. Garantir que todos os servidores sigam o mesmo padrão seguro, sem depender da memória ou do cansaço do administrador.