Checklist de segurança para pipelines CI/CD com runners self‑hosted e secrets management

Por · Publicado em · 9 min de leitura

Bancada com laptop aberto, caderno de anotações e papéis com esboços técnicos
Espaço de trabalho com notas e referências, adequado para checklists e auditoria de pipelines. Foto: ThisIsEngineering / Pexels

Este checklist de segurança para pipelines CI/CD com runners self‑hosted e secrets management foca em controles práticos: hardening de hosts, isolamento, políticas de acesso mínimo, gestão de segredos, cadeia de suprimentos e auditoria. Use como referência para reduzir riscos de vazamento, sequestro de runners e manipulação de artefatos em ambientes próprios.

Ameaças comuns em CI/CD self‑hosted: entenda o terreno

Runners self‑hosted dão controle e performance, mas ampliam a superfície de ataque. Ameaças típicas: vazamento de secrets em logs, jobs maliciosos, dependências comprometidas, invasão do host do runner e sequestro de credenciais de deploy. O primeiro passo é separar ambiente de build do de produção e adotar isolamento forte, com privilégios mínimos e rotinas de rotação de segredos.

Mapeie quem aciona pipelines, o que cada job acessa, para onde artefatos vão e quais redes são liberadas. Defina limites claros: o runner não deve ter acesso direto a bancos ou filas de produção sem controles adicionais e registros de auditoria.

Hardening do host do runner e rede: checklist essencial

Trate o host do runner como ativo sensível. Aplique hardening do sistema, atualizações automáticas e inventário de pacotes. Minimize a superfície: desabilite serviços desnecessários, ative firewall e limite portas abertas. Separe runners por sensibilidade (produção, homologação) em sub-redes distintas.

Reduza egress. Permita apenas destinos necessários: registries, mirrors, provedores de dependências, endpoints do CI e stores de secrets. Bloqueie entrada da Internet. Prefira NAT de saída, proxies autenticados e DNS interno com listas de permissão.

Para um reforço de base em servidores Linux, confira este guia prático de endurecimento: checklist de segurança para VPS Linux.

  • Sistema atualizado e reinicializações controladas
  • Firewall restritivo (deny by default) e logs de firewall
  • Acesso SSH com chaves, MFA no bastion e sem root remoto
  • Montagens temporárias com noexec,nosuid,nodev quando possível
  • Monitoramento e alertas do runner (CPU, disco, processos)
  • Backups e imagens douradas somente para templates de runner

Runners efêmeros, isolamento e privilégio mínimo

Runners efêmeros reduzem persistência de malware e rastros de dados. Suba um runner por job ou por lote pequeno e destrua após o término. Evite reutilizar diretórios de trabalho. Execute jobs como usuário sem privilégios, com controles de kernel (seccomp, AppArmor/SELinux) e cgroups para limitar recursos.

Se possível, isole cada job em containers ou VMs leves. Desabilite docker‑in‑docker privilegiado; prefira sockets limitados ou runtimes com políticas. Escopos e permissões dos tokens do CI devem ser mínimos e temporários.

Para arquitetura e automação de escala, veja: auto‑escalar runners self‑hosted no GitHub Actions.

  • Runner por job ou curta duração
  • Usuário sem privilégios; sem sudo no job
  • Policies de segurança de container (seccomp, AppArmor)
  • Limites de CPU/RAM/IO por job
  • Tokens com escopo mínimo e validade curta
  • Wipe seguro do workspace ao final do job

Secrets management: políticas, fluxo e controles de vazamento

Centralize segredos e reduza arquivos .env persistentes. Use secrets do CI, stores externos ou emissões temporárias via OIDC para obter credenciais sob demanda. Aplique rotação periódica, versionamento e trilhas de auditoria. No pipeline, mascare variáveis sensíveis, bloqueie echo e sanitize logs e artefatos.

Restrinja secrets por ambiente e branch. Evite passar segredos para jobs que não precisam. Prefira montar segredos em memória (tmpfs) e remova após uso. Faça varredura de repositórios e artefatos em busca de segredos acidentalmente commitados.

No mundo Docker, evite ARG/ENV com segredos em Dockerfiles. Injete apenas em tempo de build com escopo restrito e sem leak para camadas de imagem.

Opção Como funciona Quando usar Riscos/atenções
.env no servidor do runner Arquivo local lido pelo job Provas de conceito e ambientes temporários Alta chance de vazamento e drift; evite em produção
Secrets nativos do CI Armazenados e injetados pelo provedor do CI Equipes pequenas/médias; menor complexidade Controle de escopo por branch/ambiente; cuidado com logs
Secrets Manager/Vault externo Cofre central com políticas e rotação Múltiplos sistemas e auditoria forte Complexidade operacional, latência e custos
KMS + OIDC (credenciais temporárias) Emissão sob demanda e curta duração Cloud ou híbrido com identidade federada Exige configuração fina de IAM e confiança no emissor

Cadeia de suprimentos: dependências, builds e assinatura

Sua imagem de base e suas dependências são parte do perímetro. Fixe versões, use checksums e bloqueie updates não revisados. Gere SBOM em cada build e armazene junto ao artefato. Escaneie dependências e imagens em busca de CVEs antes de prosseguir para deploy.

Assine imagens e artefatos e publique atestações de proveniência. Mantenha caches, mirrors e registries privados controlados. Trate o cache como não confiável: valide outputs. Para um registry privado e autenticado, veja: registry Docker privado com mirror em VPS.

Para acelerar builds sem relaxar controles, confira: BuildKit e cache remoto no CI.

  • Fixar versões e checar integridade de downloads
  • Gerar SBOM e armazenar com o artefato
  • Assinar imagens/artefatos e validar na implantação
  • Bloquear egress para repositórios não aprovados
  • Escanear CVEs previamente e falhar o job em alto risco

Proteção de artefatos, logs e canais de deploy

Defina políticas de retenção e acesso a artefatos. Armazene em repositórios com trilha imutável e versionamento. Separe papéis: quem faz merge não deve poder alterar artefatos assinados. Em deploy, valide assinaturas e atestações antes de promover entre estágios.

Reduza sensibilidade dos logs: mascare variáveis e remova stack traces excessivos em jobs sensíveis. Limpe diretórios temporários ao final. Use contas de serviço dedicadas para CD, com permissões mínimas e janelas de tempo limitadas.

Para serviços internos expostos ao pipeline, use autenticação mútua entre serviços. Guia prático: mTLS no Docker Compose.

  • Retenção mínima necessária, com WORM quando aplicável
  • Assinatura verificada como gate de promoção
  • Contas de serviço separadas por ambiente
  • Mascaramento de logs e limpeza de workspaces
  • Aprovações manuais para mudanças de alto risco

Auditoria contínua, testes e resposta a incidentes

Registre quem acionou o pipeline, hash do commit, ID do runner, versões de ferramentas, digest dos artefatos e decisões de política. Centralize logs com correlação entre etapas. Teste periodicamente recuperação de segredos e rotação de chaves.

Prepare runbooks de incidente para: vazamento de secrets, comprometimento de runner, dependência maliciosa e falha de assinatura. Tenha caminho de break‑glass controlado, com expiração curta e auditoria forte. Revise trimestralmente permissões e inventário de secrets.

  • Coletar e reter logs de auditoria com integridade
  • Testes de rotação de secrets e revogação de credenciais
  • Runbooks com responsáveis e SLAs internos
  • Revisões periódicas de IAM e varredura de repositórios

Checklist resumido para aplicar hoje

Use esta lista como ponto de partida. Adapte ao seu contexto e riscos. Priorize itens com maior impacto e menor esforço, e evolua em ciclos curtos com métricas de redução de exposição e incidentes evitados.

  • Runners efêmeros, sem sudo, com políticas de kernel
  • Host endurecido, firewall restritivo e egress mínimo
  • Segredos centralizados, mascarados e rotacionados
  • OIDC para credenciais temporárias quando possível
  • Fixar versões, gerar SBOM e assinar artefatos
  • Scans de CVEs bloqueando build em alto risco
  • Artefatos em storage versionado e verificação de assinatura no deploy
  • Contas de serviço com privilégio mínimo por ambiente
  • Logs com mascaramento e rastreabilidade de ponta a ponta
  • Runbooks, drills e revisão periódica de permissões

Perguntas frequentes

O que muda na segurança ao usar runners self‑hosted?

Você passa a proteger também o host e a rede do runner. É preciso hardening do sistema, isolamento por job, controle de egress, rotação de segredos e auditoria completa. Sem esses controles, o runner pode vazar secrets, ser sequestrado para deploys maliciosos ou expor sua infraestrutura interna.

Runners efêmeros realmente reduzem risco?

Sim. Descartar o runner após cada job elimina persistência de malware, reduz chance de vazamento por reuso de workspace e força configuração conhecida por template. Combinados a usuário sem privilégios e tokens curtos, diminuem a janela de ataque e o impacto de compromissos.

Como evitar vazamento de secrets nos logs do pipeline?

Ative mascaramento de variáveis, proíba comandos que imprimem valores sensíveis e revise scripts para não ecoar secrets. Injete segredos apenas no escopo necessário, use montagem em memória quando possível e faça varreduras automáticas em repositórios e artefatos para detectar exposições acidentais.

OIDC pode substituir arquivos .env no CI/CD?

Em muitos cenários, sim. OIDC permite emitir credenciais temporárias sob demanda, evitando chaves estáticas em .env. Com políticas de IAM bem definidas, você reduz vazamentos e facilita rotação. Ainda assim, alguns sistemas legados podem exigir integração gradual ou cofre central paralelo.

Qual a frequência ideal de rotação de segredos?

Depende do risco e do sistema. Como regra, rotacione segredos sensíveis em janelas curtas e sempre após incidentes ou mudanças de equipe. Automatize rotação quando possível e mantenha registro de versões para rollback seguro. Use credenciais temporárias para reduzir a necessidade de chaves longas.

Onde armazenar artefatos gerados pelo CI com segurança?

Use repositórios de artefatos com versionamento e controles de acesso. Prefira storages com imutabilidade (WORM) e vincule cada artefato a seu commit hash e SBOM. Exija validação de assinatura antes de promover entre ambientes, mantendo trilhas de auditoria e retenção adequada.

Quer transformar este checklist em melhorias reais?

Converse sobre como adaptar estes controles ao seu pipeline CI/CD, priorizar riscos e estabelecer auditoria contínua com o mínimo de atrito.

Falar sobre seu pipeline CI/CD

Veja também