Pular para o conteúdo principal

🧭 Planeamento de Execução e Controlo de Estado

🌟 Objetivo

Garantir que todos os projetos de Infraestrutura como Código (IaC) mantêm um controlo consistente, seguro e rastreável do estado da infraestrutura e dos planos de execução (plan) gerados antes de qualquer alteração.

Esta prática permite:

  • Prevenir drift e alterações não autorizadas;
  • Evitar concorrência e conflitos entre múltiplos operadores;
  • Permitir auditoria e rollback seguros;
  • Viabilizar integração com pipelines CI/CD e processos de aprovação;
  • Assegurar integridade e conformidade com políticas de execução.

📌 O que deve ser feito

  1. Configurar backend remoto autenticado para armazenar o estado (terraform.tfstate, ou equivalente);
  2. Ativar mecanismo de locking para evitar concorrência durante o apply;
  3. Gerar e versionar planos de execução (plan) antes de aplicar alterações;
  4. Associar os plans a mecanismos de aprovação (ex: Pull Request, Change Request);
  5. Armazenar artefactos de plano e logs de execução com integridade verificável;
  6. Detetar e alertar sobre drift (diferença entre estado real e esperado);
  7. Proibir execuções locais manuais fora de contexto validado e controlado.

⚙️ Como aplicar

AçãoPrescrição
Backend remotoS3 + DynamoDB (AWS), Azure Blob + CosmosDB, ou GCS, com autenticação forte
Lockinglock = true + mecanismo como DynamoDB, Consul ou equivalente
Execução CI/CDProibir apply manual; plan gerado e versionado no pipeline
RastreabilidadeTags, branches, PR/MR ID, nome de release e output legível no diff
AuditoriaGuardar plan e logs com hashes e metadados (timestamp, hash, autor)
Drift detectionterraform plan -detailed-exitcode, driftctl, tfsec, ou CI agendado

🕒 Quando aplicar

MomentoAção esperada
Início do projeto IaCDefinir e documentar backend, ambiente e locking
Novo apply em produçãoGerar plan, submeter a aprovação, versionar artefacto
Após rollback, erro ou patchValidar estado atual e corrigir divergência
Periodicamente (ex: CI agendado)Verificar drift entre estado esperado e realidade

👥 Perfis envolvidos

PapelResponsabilidade
DevOps/CloudConfiguração de backend, execução via pipeline
SegurançaDefinição de política de execução controlada
ArquiteturaAprovação de ambientes e mecanismos de isolamento
GRC/ComplianceVerificação da rastreabilidade e mecanismos de auditoria

🧪 Exemplos práticos

  • terraform backend "s3" com encrypt = true, lock_table e versionamento;
  • Pipeline com job que faz terraform plan, armazena o .plan e aguarda aprovação para apply;
  • Tabela DynamoDB configurada para locking, com TTL e tags por projeto;
  • Armazenamento de planos e logs num bucket versionado (branch + timestamp + PR como nome do artefacto).

✅ Boas práticas

  • Nunca executar terraform apply localmente em ambientes de produção;
  • Validar e registar plan antes de qualquer alteração significativa;
  • Usar artefactos com hashes de integridade e rastreabilidade cruzada com PR ou release;
  • Monitorizar divergências entre o estado real e o esperado (drift detection) periodicamente;
  • Estabelecer uma política organizacional formal sobre execução controlada de infraestrutura.

🔗 Referências cruzadas

DocumentoRelação com esta prática
08-rastreabilidade-vulnerabilidades.mdReforça auditoria e rastreabilidade
04-integracao-ci-cd.mdExecução automatizada e validação de planos
02-matriz-requisitos-iac.mdRequisitos IAC-001, REQ-004, REQ-005
SSDF (PW.5) / SLSA (Build L2)Requisitos normativos sobre execução controlada

🔐 Este controlo é essencial para garantir integridade, rastreabilidade e conformidade no ciclo de vida de infraestrutura como código - sendo um dos pilares de maturidade em IaC seguro segundo o modelo SbD-ToE.