pular para o conteúdo
voltar ao mapa
prática
etapa: entregar
2 min de leitura

Hardening de CI/CD

A esteira guarda credenciais, executa código de terceiros e publica o que vai para produção. Comprometê-la é a rota mais curta para comprometer tudo.

GitHub ActionsGitLab CIAzure DevOpsSigstore cosign

O que é

Hardening de CI/CD é reduzir o que um atacante consegue se comprometer a esteira: um runner, uma ação de terceiros, um token vazado ou um pull request malicioso. Os incidentes reais de cadeia de suprimentos mostram o padrão: o alvo deixa de ser a aplicação e passa a ser o caminho que leva o código à produção.

Fora com os segredos estáticos: OIDC

Chaves de nuvem guardadas como segredo da esteira vazam e vivem para sempre. A alternativa é a federação por OIDC: a esteira prova sua identidade ao provedor de nuvem com um token de curta duração, e o provedor entrega credenciais temporárias, restritas àquele repositório e àquela branch.

.github/workflows/deploy.ymlyaml
permissions:
  contents: read        # mínimo por padrão
  id-token: write       # permite pedir o token OIDC

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@<sha-completo-do-commit>   # fixado por SHA
      - uses: aws-actions/configure-aws-credentials@<sha-completo>
        with:
          role-to-assume: arn:aws:iam::123456789012:role/ci-deploy
          aws-region: us-east-1
      - run: ./scripts/deploy.sh

Dependências da esteira também são dependências

  • Fixar ações e imagens por digest ou SHA, não por tag mutável: uma tag pode ser reapontada para código malicioso.
  • Permissões mínimas para o token da esteira, definidas por job.
  • Cuidado com gatilhos que rodam código de forks com acesso a segredos (por exemplo, pull_request_target em GitHub Actions): tratar entrada de PR como não confiável.
  • Injeção em scripts: nunca interpolar títulos de PR, nomes de branch ou mensagens de commit direto em comandos de shell.

Runners e ambientes

Runners efêmeros (um por job, descartado ao final) evitam que um job contamine o próximo e que credenciais fiquem em disco. Runners compartilhados e de longa vida acumulam estado e viram alvo. Separe os runners que fazem deploy em produção dos que rodam testes de código externo, e restrinja a rede de saída ao necessário.

Integridade do que sai da esteira

Assinar artefatos e registrar a proveniência (quem construiu, a partir de qual commit, em qual ambiente) permite que o destino verifique que o que vai rodar é exatamente o que a esteira produziu. Frameworks como o descrevem níveis crescentes dessas garantias, e ferramentas como o cosign cuidam da assinatura de imagens.

SLSASupply-chain Levels for Software Artifacts: escala de 1 a 4 para a integridade do build — do 'tem documentação' até 'build à prova de adulteração com proveniência verificável'.ver no glossário →

conexões no mapa

atualizado em 14/10/2026 · fontes para aprofundar · reportar erro

em outros domínios

Estude antes

Desbloqueia

teste o que entendeu

Carregando perguntas…