Conceito e mecanismo
Uma pipeline executa código e pode ter acesso a sistemas sensíveis. Trata contribuições externas, títulos de pull requests e artefactos recebidos como entradas não confiáveis até avaliação adequada. Não coloques código de uma contribuição desconhecida num job privilegiado apenas para tornar os testes mais convenientes. Em GitHub, pull_request_target e workflow_run exigem atenção especial quando combinados com checkout de código não confiável. Mantém permissões mínimas por job e revê ações de terceiros. Fixar uma ação a um commit completo estabiliza a revisão usada, mas não demonstra que essa revisão é segura. Uma cache também pode transportar conteúdo não confiável e nunca deve conter secrets.
Aplicação guiada
Num exercício fictício, um teste de pull request não precisa da credencial que permite implementar em produção. Separa execução e promoção e disponibiliza acesso apenas ao contexto autorizado. Masking reduz exposição acidental nos logs, mas não impede um job malicioso de usar uma credencial. Runners próprios precisam de isolamento, limpeza e limites de rede adequados; uma aprovação de environment não transforma a máquina num ambiente isolado. OIDC permite obter credenciais cloud temporárias depois de validar a identidade do workflow e as condições de confiança. Se falhar, compara issuer, audience, subject e contexto autorizado, sem ampliar a confiança para qualquer repositório. Os formatos e capacidades variam: confirma a documentação e configuração atuais em vez de copiar um subject antigo como regra universal.
Credenciais mascaradas continuam utilizáveis pelo código que as recebe.
Armadilhas comuns
Masking como autorização; SHA como código seguro; runner privado como isolamento; wildcard para corrigir OIDC.
Tópicos relacionados: Integração e entrega · Jobs e dependências · Artefactos e evidência
Concede acesso pelo contexto de confiança e verifica identidade antes de promover.
Referência: Untrusted workflow inputs least privilege and runner isolation · CI/CD practices 2026-09; scoped GitHub Actions GitLab Jenkins and Azure DevOps Services documentation