O que é um Escopo de Token? Limitando o que uma Credencial Pode Fazer
Um escopo de token é um rótulo anexado a uma credencial que restringe quais ações e recursos ela tem permissão de tocar.
Um escopo de token é como você torna uma credencial menos perigosa. Em vez de entregar a um token as chaves de tudo, você concede a ele apenas as permissões específicas de que ele precisa, como acesso de leitura a um repositório. Escopos são a materialização prática do menor privilégio e, em CI/CD, muitas vezes são a diferença entre um vazamento contido e uma violação.
Como os escopos funcionam
Quando um token é emitido, ele carrega um conjunto de escopos que o servidor de recursos impõe em cada requisição. Um token com escopo de leitura não pode escrever; um token com escopo de um repositório não pode alcançar outro. O escopo viaja com o token e o restringe em todo lugar.
Por que escopos estreitos importam
- Um token somente leitura vazado não pode fazer push de código malicioso.
- Um token com escopo de um único repo não pode alcançar os demais.
- Escopos estreitos reduzem o raio de impacto de qualquer comprometimento.
Escopos em CI/CD
O GitHub Actions permite definir as permissões do GITHUB_TOKEN por job, então um job recebe apenas o que precisa. Roles de nuvem assumidos via OIDC têm escopo limitado a ações e recursos específicos. Ajustar esses escopos para baixo é um dos passos de hardening de pipeline mais baratos e de maior valor.
O custo do escopo excessivo
Um anti-padrão comum é um único token com escopo amplo reutilizado em muitos jobs porque é conveniente. Essa única credencial se torna uma chave mestra: vaze-a uma vez e um atacante ganha tudo. Dividir em escopos estreitos, por tarefa, evita isso.
Escopos aliados a tempos de vida curtos
Escopos limitam o que um token pode fazer; tempos de vida curtos limitam por quanto tempo ele pode fazer. Combinando os dois, um token com escopo estreito que expira em minutos torna uma credencial vazada quase sem valor.
Escopos e o runner
Um token com escopo ainda é executado no runner, então o isolamento importa. Em runners efêmeros (como os managed runners da Latchkey), um token com escopo usado por um job não pode ser capturado por outro, reforçando o limite que o escopo já traça.
Principais conclusões
- Um escopo de token restringe quais ações e recursos uma credencial pode usar.
- Escopos estreitos materializam o menor privilégio e reduzem o raio de impacto de um vazamento.
- Escopos aliados a tempos de vida curtos tornam um token vazado quase inútil.