Pular para o conteúdo principal

Governação de Módulos e Reutilização Segura

🧩 Princípio base: módulos como código não confiável por origem

Independentemente de serem:

  • internos,
  • externos,
  • gerados automaticamente,
  • sugeridos por templates ou ferramentas assistidas,

👉 todo o módulo deve ser tratado como código não confiável por origem.

Consequentemente:

  • nenhum módulo pode ser consumido sem validação prévia;
  • a confiança não é implícita (nem pelo autor, nem pela ferramenta);
  • a decisão de reutilização deve ser explícita, rastreável e evidenciada.

Este princípio alinha a governação de módulos IaC com práticas modernas de segurança da cadeia de fornecimento de software.


📌 O que deve ser feito (prescrição mínima)

A organização deve garantir, no mínimo:

  1. Registo formal de módulos internos com:

    • origem,
    • responsável (owner),
    • versão,
    • estado de aprovação;
  2. Validação de proveniência e integridade de módulos externos antes da adoção;

  3. Definição de fontes confiáveis (allowlist) e bloqueio de origens não autorizadas;

  4. Controlo rigoroso de versões, evitando referências flutuantes (main, latest, ranges abertos);

  5. Documentação mínima obrigatória por módulo (inputs, outputs, dependências, efeitos);

  6. Validação automática de módulos internos antes de publicação;

  7. Inventário/SBOM de módulos efetivamente usados por ambiente;

  8. Revisão periódica de módulos críticos em uso ativo.


⚙️ Como aplicar (mecanismos técnicos)

DimensãoPrescrição
Módulos internosRepositório central versionado, CI/CD obrigatório, releases imutáveis
Módulos externosReferência com versão fixa ou digest (?ref=v1.2.3 ou SHA)
Fontes confiáveisAllowlist explícita (ex.: registry.terraform.io/org/, github.com/org/)
Controlo de versõesProibir main, latest e ranges abertos em L2/L3
IntegridadeVerificação de hash/digest quando aplicável
AprovaçãoAssociação explícita a análise de risco e decisão de aprovação
Validação automáticaLint, segurança e documentação antes de publish
Inventário / SBOMLista de módulos usados por deploy/ambiente

🔍 Validação e controlo reforçado para automação/assistência

Quando módulos são:

  • gerados automaticamente,
  • alterados em massa,
  • sugeridos por ferramentas assistidas,

devem aplicar-se regras reforçadas:

  • validação semântica do impacto do módulo (recursos, permissões, exposição);
  • revisão humana obrigatória antes de aprovação;
  • evidência explícita de decisão (quem aprovou, porquê, para que ambientes).

Este controlo evita que erros sistemáticos ou defaults inseguros se propaguem automaticamente.


🕒 Quando aplicar

MomentoAção esperada
Inclusão de módulo externoValidar origem, versão, integridade e conformidade
Criação/alteração de módulo internoValidar sintaxe, segurança e outputs antes de release
Pipeline de build/deployConfirmar que apenas módulos aprovados são usados
Revisão periódicaVerificar manutenção, vulnerabilidades e uso ativo
Incidente ou alertaReavaliar todos os projetos dependentes do módulo

👥 Perfis envolvidos

PapelResponsabilidade
DevOps / InfraIntegração técnica e consumo de módulos
ArquiteturaDefinição de padrões modulares e fontes autorizadas
AppSec / SegurançaValidação de origem, integridade e risco
Cloud / PlataformaGestão do repositório interno e ciclo de vida
GRC / ComplianceSupervisão de aprovação e rastreabilidade

🧪 Exemplos práticos

Referência segura a módulo externo

source = "git::https://github.com/org/vpc-module.git?ref=v1.2.3"

Bloqueio de fontes não autorizadas em pipeline

ALLOW_MODULE_SOURCES = [
"registry.terraform.io/org/",
"github.com/org/"
]

Pipeline de publicação de módulo interno

  • tflint (linting)
  • checkov ou tfsec (segurança)
  • terraform-docs (documentação atualizada)
  • aprovação explícita antes de release

Inventário interno (exemplo)

  • Nome do módulo
  • Owner
  • Versão
  • Última validação
  • Ambientes onde é usado

⚖️ Proporcionalidade L1–L3

ControloL1L2L3
Allowlist de fontesRecomendadoObrigatórioObrigatório
Pinning de versãoObrigatórioObrigatórioObrigatório
Validação automáticaRecomendadoObrigatórioObrigatório
Aprovação formalRecomendadoObrigatórioObrigatório (reforçada)
Inventário/SBOMRecomendadoObrigatórioObrigatório
Revalidação periódicaRecomendadoObrigatórioObrigatório + frequência maior

🔗 Referências cruzadas

DocumentoRelação
addon/02-validacoes-e-checks.mdValidação e evidência de módulos
addon/11-uso-ferramentas-automatizadas-iac.mdAutomação/assistência e riscos de processo
SSDF (PW.4, CM.3)Governação de componentes reutilizados
SLSA (Source L2+)Proveniência e integridade de código
CIS Controls (2, 8)Gestão segura de software reutilizado

📌 A governação de módulos é um controlo estrutural de supply chain em IaC. Sem validação, aprovação e evidência explícitas, a reutilização transforma-se num multiplicador de risco.