🧪 Caso de Estudo – Aplicar o SbD-ToE a um Projeto de Infraestrutura como Código (IaC)
Este estudo de caso descreve a aplicação prática, integrada e rastreável do manual Security by Design – Theory of Everything (SbD-ToE) a um projeto real de Infraestrutura como Código (IaC).
O objetivo não é ilustrar ferramentas, estilos de autoria ou processos criativos, mas demonstrar como as prescrições do Capítulo 08 são aplicadas de forma objetiva e verificável, desde a fase de inception até à operação contínua em produção.
Nota fundamental:
Neste estudo assume-se explicitamente que qualquer código IaC pode ter sido produzido total ou parcialmente com apoio de ferramentas automatizadas, incluindo sistemas de geração de código.
Por essa razão, nenhuma confiança é atribuída à autoria ou origem do código.
Todos os artefactos são tratados como input não confiável até validação técnica completa, de acordo com o modelo SbD-ToE.
O projeto analisado define ambientes dev, staging e prod para um cluster Kubernetes e respetivos serviços de rede, identidade e observabilidade. Foi classificado como criticidade L3 (elevada).
🧭 Classificação de risco
A classificação foi realizada segundo o Capítulo 01 — Gestão de Risco, tendo resultado em L3, com base nos seguintes fatores:
- Capacidade de impactar diretamente ambientes produtivos;
- Controlo de recursos críticos (rede, identidade, certificados, logging);
- Efeito transversal sobre múltiplas aplicações e equipas;
- Potencial elevado de impacto operacional e reputacional.
Esta classificação determinou a aplicação integral dos requisitos, validações e gates de aceitação previstos para L3 no Capítulo 08, independentemente da origem do código.
📐 Arquitetura e modelo de repositório
O desenho técnico do projeto seguiu princípios de desacoplamento, segregação e controlo explícito:
-
Terraform como ferramenta declarativa principal;
-
Estrutura modular por domínio técnico;
-
Separação física de repositórios:
iac-core(módulos e políticas comuns);iac-nonprod(ambientes não produtivos);iac-prod(produção, com controlos reforçados);
-
Pipelines CI/CD distintos por ambiente;
-
Backend remoto com locking e encriptação (
S3 + DynamoDB + KMS).
Esta estrutura assegura que nenhuma alteração pode ser aplicada sem passar pelos mecanismos formais de validação, aprovação e evidência, independentemente de quem ou do que produziu o código.
🔍 Threat Modeling aplicado a IaC
O threat modeling foi conduzido de acordo com o Capítulo 03 — Threat Modeling, tratando o projeto IaC como um ativo crítico.
Foram analisados os principais fluxos e superfícies de ataque, considerando explicitamente cenários de:
- alterações introduzidas por automação;
- reutilização de módulos externos;
- geração de código a partir de templates ou sugestões.
As ameaças identificadas incluíram:
- Tampering: modificação maliciosa ou inadvertida de módulos ou plans;
- Information Disclosure: exposição de topologia, permissões ou tags sensíveis;
- Repudiation: alterações sem evidência ou responsabilização clara;
- Elevation of Privilege: permissões IAM excessivas introduzidas por erro humano ou automatização.
Cada ameaça foi mapeada para requisitos IAC-XXX e respetivos controlos técnicos no pipeline.
🧱 Aplicação dos requisitos de segurança
Todos os requisitos IAC-001 a IAC-013 foram avaliados e aplicados segundo a matriz de proporcionalidade L3:
- Backend remoto com locking obrigatório;
- Validações automáticas completas (
tflint,tfsec,Checkov, OPA/Conftest); - Drift detection ativa (
terraform plan,driftctl, alertas); - Governação formal de módulos internos e externos;
- Gestão de segredos via Vault e workload identity;
- Rastreabilidade total entre código, plan, apply e ambiente;
- Enforcement bloqueante de políticas em todos os pipelines.
Em nenhum momento a aceitação de alterações dependeu da autoria do código, mas exclusivamente da evidência técnica produzida.
📊 Validação, evidência e auditoria
A estratégia de validação seguiu o modelo definido no Capítulo 10 — Validação:
- Todos os Pull Requests exigem validação automática e revisão humana;
- Relatórios de validação são arquivados por ambiente e build;
- Comparação contínua entre
planaprovado eapplyexecutado; - Exceções formalizadas, temporárias e aprovadas por AppSec, conforme Capítulo 14.
Este modelo garante que qualquer contribuição — humana ou automatizada — é sujeita ao mesmo escrutínio técnico.
🔐 Integração com pipelines CI/CD
Os pipelines CI/CD foram desenhados como mecanismos de controlo e decisão, não apenas de automação:
- Branch protection e regras de merge restritivas;
- Execução obrigatória de
terraform planem PR; - Apply apenas permitido após aprovação explícita e validação de artefactos;
- Runners dedicados e isolados;
- Assinatura e hash dos artefactos (
plan, relatórios, manifests).
🎓 Formação e capacitação da equipa
Reconhecendo que IaC seguro exige competências específicas, foi criado um programa de formação dedicado, cobrindo:
- Requisitos
REQ-XXXeIAC-XXX; - Interpretação de findings e impactos reais;
- Validação de alterações independentemente da autoria;
- Gestão de segredos e identidade;
- Ciclo completo de validação, evidência e exceções.
A formação tornou-se pré-requisito para permissões de escrita, reforçando que a responsabilidade final é sempre humana, mesmo quando existem ferramentas de apoio automatizado.
✅ Conclusão
Este caso de estudo demonstra que o SbD-ToE aplica-se de forma uniforme e robusta a projetos IaC, assumindo por defeito que o código não é confiável até prova em contrário.
A abordagem permite:
- Neutralizar riscos introduzidos por automação ou reutilização;
- Manter critérios de aceitação estáveis ao longo do tempo;
- Escalar IaC seguro sem depender de confiança implícita em pessoas ou ferramentas.
💡 Este estudo constitui o modelo canónico de aplicação do SbD-ToE a IaC, válido independentemente da evolução das ferramentas de autoria.