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 aprovado2 anos (L2), 3 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