ATALAIA
  1. Início
  2. Serviços
  3. Auditoria de Pipeline CI/CD
06Estação 06 · Build

Auditoria de Pipeline CI/CD

O seu pipeline guarda as chaves da produção. Auditamos runners, tokens, actions de terceiros e quem pode alterar o próprio workflow.

Um pipeline, cinco pontos críticos

Um workflow típico, do pull request à produção. Cada número é um ponto onde uma alteração maliciosa se pode tornar numa release.

  1. 1Pull requestde um fork
  2. 2ci.ymlficheiro de workflow
  3. 3Runnerpartilhado, guarda cache
  4. 4Actionsuses: …@v3
  5. 5SecretsDEPLOY_TOKEN
  6. Produçãodeploy
  1. 1
    PRs de forks correm com os mesmos direitos que PRs de branches

    Workflow separado para forks, sem secrets.

  2. 2
    Qualquer pessoa com acesso de escrita pode editar o ci.yml

    CODEOWNERS e ficheiros de workflow protegidos.

  3. 3
    O runner guarda a cache entre jobs

    Runners efémeros, um por job.

  4. 4
    Actions fixadas a uma tag que o dono pode mover

    Fixar cada action a um SHA de commit.

  5. 5
    Um token chega a todos os ambientes, a partir de qualquer job

    Um token por ambiente, limitado ao job de deploy.

Seguir as chaves

Escolha um passo, ou deixe correr. Cada fala é o que alguém na sala diz de facto.

Passo 1Mapear a linha

Repos, workflows, runners, secrets e destinos de deploy.

ATALAIAVamos listar primeiro cada workflow, runner e secret.

PLATAFORMA23 workflows, dois runners partilhados e secrets em todos os repos.

Sai da salaMapa: 23 workflows, 4 runners, 31 secrets

Passo 2Seguir as chaves

Que passo chega a que secret e a que ambiente.

ATALAIAEste token de deploy é visível para todos os jobs, incluindo os testes.

PLATAFORMAÉ um token para todos os ambientes. Mais fácil de rodar.

ATALAIAE mais fácil de roubar. Um passo de teste pode fazer deploy em produção.

Sai da sala1 token chega a prod a partir de qualquer job

Passo 3Quebrar no papel

Como se moveria um PR, action ou runner malicioso.

ATALAIAUm PR de fork corre no runner partilhado, e o runner guarda a cache.

DEV LEADEntão um PR malicioso podia envenenar o próximo build?

ATALAIASim. E esta action está fixada a uma tag. Quem a detém pode mover a tag.

Sai da salaCaminho de ataque: PR de fork → runner → prod

Passo 4Reforçar os templates

Actions fixadas, tokens limitados, runners efémeros, workflows protegidos.

PLATAFORMANovo template: actions fixadas por SHA, um token por ambiente.

ATALAIARunners efémeros para forks e CODEOWNERS nos ficheiros de workflow.

DEV LEADAplicamos aos 23 repos, um PR cada.

Sai da salaTemplate: SHAs fixados, tokens limitados, runners efémeros

  • ATALAIA
  • PLATAFORMA
  • DEV LEAD
  • PROGRAMADOR

O que corre mal

Um pipeline que pode fazer deploy de tudo pode ser levado a fazer deploy de tudo. Runners partilhados, tokens amplos e actions não fixadas transformam um passo comprometido numa release comprometida.

SINAIS DE QUE ESTÁ AQUI

  • As actions de terceiros são referenciadas por tag, não por commit
  • Um token de deploy funciona em todos os ambientes
  • Qualquer pessoa com acesso de escrita pode editar os ficheiros de workflow

O que recebe

  • Um mapa de cada pipeline, runner e secret
  • Descobertas ordenadas por raio de impacto
  • Templates de workflow fixados e com privilégio mínimo
  • Definições de proteção de branches e workflows a aplicar

Formato típico: duas a quatro semanas, consoante o número de pipelines.

Vamos conversar

Uma chamada de 30 minutos. Sem slides, sem tabela de preços, e um próximo passo em qualquer caso.