Pular para o conteúdo principal

Política de CI/CD Seguro

1. Objetivo

Esta política define os requisitos de segurança aplicáveis ao design, configuração e operação de pipelines de integração e entrega contínua (CI/CD) para aplicações classificadas como L1, L2 ou L3.

O pipeline CI/CD é um componente crítico da postura de segurança de uma organização: é o caminho pelo qual o código chega a produção. Um pipeline comprometido, mal configurado ou sem controlos adequados é equivalente a uma porta de serviço sem cadeado - pode ser usado para introduzir código malicioso, escalar privilégios, ou exfiltrar segredos sem que o processo de revisão de código seja relevante.

O objetivo desta política é garantir que:

  • Os pipelines são configurados com segurança e versionados como código
  • Os gates de segurança são automatizados, com thresholds documentados e bloqueantes
  • Os segredos usados no pipeline são geridos de forma centralizada e nunca expostos em logs
  • A promoção entre ambientes é controlada e requer aprovação proporcional ao risco
  • Os artefactos produzidos são assinados e verificados antes de qualquer deploy

2. Âmbito

Esta política aplica-se a todos os pipelines CI/CD que produzam artefactos destinados a ambientes de teste, homologação ou produção, incluindo pipelines de build, teste, análise, empacotamento, containerização e deploy.


3. Pipeline como código versionado

O pipeline deve ser definido como código, versionado no repositório da aplicação, sujeito a revisão de código e com alterações rastreáveis:

RequisitoL1L2L3
Pipeline definido como código (ci-pipeline.yml ou equivalente)ObrigatórioObrigatórioObrigatório
Alterações ao pipeline sujeitas a revisão de código e aprovaçãoRecomendadoObrigatórioObrigatório + AppSec
Pipeline versionado no mesmo repositório da aplicação (ou monorepo controlado)ObrigatórioObrigatórioObrigatório
Sem edição direta do pipeline em ambiente de execução (sem manual override)RecomendadoObrigatórioObrigatório

4. Gates de segurança obrigatórios

Os seguintes gates devem ser configurados no pipeline, com thresholds documentados e comportamento bloqueante conforme a tabela de proporcionalidade:

4.1 Gates de análise de código e dependências

GateL1L2L3
Secret detection (TruffleHog, Gitleaks, detect-secrets)AlertaBloqueia qualquer findingBloqueia qualquer finding
SAST (Semgrep, CodeQL, SonarQube, Bandit)AlertaBloqueia High/CriticalBloqueia Medium+
Linters de segurança por stackRecomendadoObrigatórioObrigatório
SCA (Dependency-Check, Trivy, Grype)AlertaBloqueia High/CriticalBloqueia Medium+
Validação de licençasRecomendadoObrigatórioObrigatório

4.2 Gates de build e artefactos

GateL1L2L3
Geração de SBOM por buildObrigatório (básico)Obrigatório (completo)Obrigatório (completo + assinado)
Assinatura de artefactos (Cosign ou equivalente)RecomendadoObrigatórioObrigatório
Verificação de assinatura antes de promoçãoNão aplicávelObrigatórioObrigatório
Scan de vulnerabilidades em imagens containerRecomendadoObrigatórioObrigatório

4.3 Regras gerais de gates

  • Os thresholds (severidade mínima de bloqueio) devem ser documentados e versionados (gates-config.yaml ou equivalente)
  • A alteração de um threshold requer aprovação de AppSec Engineer
  • Um gate desativado ou com threshold reduzido temporariamente deve ser registado como exceção formal
aviso

Gates configurados em modo "warn-only" (sem bloqueio) em L2/L3 não cumprem esta política, exceto durante período de exceção formalmente aprovado com data de expiração definida.


5. Gestão de segredos no pipeline

Segredos usados no pipeline (tokens de CI, chaves de deploy, credenciais de registo, etc.) devem ser geridos de acordo com a Política de Gestão de Segredos. Os princípios específicos para o contexto do pipeline são:

  • Segredos injetados por variáveis de ambiente geridas pelo sistema de CI, nunca hardcoded no ficheiro de pipeline
  • Segredos nunca impressos em logs (configuração de masking obrigatória)
  • Acesso a segredos de produção restrito a jobs que genuinamente necessitam (princípio de mínimo privilégio)
  • Segredos rotacionados conforme política; rotação verificável sem alteração do pipeline
  • Sem segredos em artefactos de build (imagens, JARs, pacotes)

6. Separação de ambientes e promoção controlada

O pipeline deve implementar separação física ou lógica entre ambientes (desenvolvimento, integração, staging, produção), com promoção controlada:

RequisitoL1L2L3
Ambientes separados com credenciais distintasRecomendadoObrigatórioObrigatório
Promoção a staging requer CI verde + gates OKRecomendadoObrigatórioObrigatório
Promoção a produção requer aprovação humanaRecomendadoObrigatórioObrigatório (dupla aprovação)
Promoção a produção usa artefacto imutável do build (não rebuild)RecomendadoObrigatórioObrigatório
Rollback automático disponível em caso de falha de health checkRecomendadoObrigatórioObrigatório

A identidade que executa o deploy em produção deve ter permissões mínimas - o pipeline nunca deve ter acesso de escrita em infraestrutura de desenvolvimento e produção simultaneamente.


7. Identidade e permissões do pipeline

O sistema de CI/CD opera com identidades próprias (service accounts, tokens de CI) que devem seguir o princípio do mínimo privilégio:

  • Cada pipeline tem identidade dedicada; sem uso de credenciais pessoais de developers
  • Permissões do pipeline limitadas ao necessário para cada job (leitura de código, escrita em registo de imagens, deploy em ambiente específico)
  • Tokens de CI com TTL curto; rotação automatizada
  • Auditoria de acessos do pipeline ativa em L3
  • Sem permissão de aprovação de PRs pela identidade do pipeline (evita self-merge automatizado)

8. Reprodutibilidade e rastreabilidade

Cada execução de pipeline deve ser rastreável:

  • Logs de execução retidos conforme Política de Rastreabilidade (mínimo 90 dias em L2, 1 ano em L3)
  • Artefactos de build associados ao commit SHA que os originou
  • SBOM associado ao artefacto produzido
  • Resultados de scanners arquivados como artefactos da execução
  • Aprovações de promoção registadas com identidade do aprovador, timestamp e referência ao artefacto aprovado

9. Integridade do pipeline

O próprio pipeline é um vector de ataque - deve ser tratado com o mesmo rigor que o código de aplicação:

  • Dependências do pipeline (actions, plugins, steps externos) fixadas a versões específicas com hash (ex: uses: actions/checkout@sha256:abc...)
  • Sem uso de latest em steps de pipeline em L2/L3
  • Actions ou plugins externos avaliados antes de adoção (origem, manutenção, permissões requeridas)
  • Pipeline não executa código arbitrário a partir de input de PRs externos sem sandbox adequado

10. Artefactos esperados

ArtefactoDescriçãoRetenção
ci-pipeline.ymlDefinição do pipeline versionadaHistórico de versões
Logs de execuçãoOutput completo de cada run90 dias (L2), 1 ano (L3)
Relatórios de scanners (SAST, SCA, secrets)Resultados por run, ligados ao commit90 dias (L2), 1 ano (L3)
SBOM por buildVer Política de SBOMVer Política de SBOM
Registos de aprovação de promoçãoIdentidade, timestamp, artefacto aprovado1 ano (L2), 2 anos (L3)
Configuração de gates/thresholdsThresholds documentados e versionadosHistórico de versões

11. Responsabilidades

RoleResponsabilidade
DeveloperManter pipeline como código; submeter alterações ao pipeline a revisão
DevOps / SREConfigurar e operar a plataforma CI/CD; gerir identidades do pipeline; configurar separação de ambientes
AppSec EngineerDefinir thresholds de gates; aprovar alterações a configurações de segurança do pipeline; rever uso de actions externas
Tech LeadAprovar promoções a produção conforme requisitos do nível
GRC / ComplianceAuditar logs e registos de aprovação; verificar conformidade com thresholds definidos

12. Revisão e auditoria desta política

Esta política deve ser revista anualmente ou após qualquer um dos seguintes eventos:

  • Incidente com origem no pipeline (comprometimento, promoção de código vulnerável)
  • Adoção de nova plataforma de CI/CD
  • Alteração significativa nas ferramentas de análise integradas

13. Referências normativas e técnicas

ReferênciaRelevância
SbD-ToE Cap. 07 - CI/CD SeguroGates, scanners, artefactos, separação de ambientes
SbD-ToE Cap. 05 - Dependências, SBOM e SCASCA e SBOM no pipeline
SbD-ToE Cap. 11 - Deploy SeguroGates de aprovação de promoção
Política de Gestão de Segredos (18_policy-gestao-segredos.md)Segredos no pipeline
Política de SBOM (11_policy-sbom.md)Geração e arquivo de SBOM por build
SLSA FrameworkNíveis de integridade de supply chain do pipeline
OWASP CI/CD Security Top 10Riscos de segurança em pipelines CI/CD
CIS Software Supply Chain Security GuideControlos de referência para pipelines seguros
NIST SP 800-218 (SSDF)PO.3, PW.8: infraestrutura segura e proteção de builds