Marcio Cunha

Como bloquear chaves vazadas no Git com Gitleaks e CI/CD

Aprenda a configurar o Gitleaks em ganchos locais e pipelines para impedir o vazamento acidental de chaves de API, senhas e tokens em commits e repositórios.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • Vazamentos de credenciais ocorrem frequentemente quando desenvolvedores expõem chaves de API por engano no código fonte.
  • O Gitleaks atua como um inspetor automatizado de código usando expressões regulares e entropia para detectar segredos.
  • Ganchos de pré-commit interceptam o comando de salvamento local antes que o código suba para o servidor central.
  • Validar commits em pipelines de CI/CD garante uma segunda camada de defesa contra erros humanos ou bypass local.
  • Manter o histórico de commits limpo exige ferramentas automatizadas, já que remover senhas manualmente é ineficiente.

O perigo invisível das chaves de API expostas no código

Quem nunca cometeu o deslize de colar uma senha ou chave de acesso diretamente em um arquivo de configuração que atire a primeira pedra. Na correria do desenvolvimento, é muito comum esquecer credenciais sensíveis dentro do código fonte antes de enviar tudo para o GitHub ou GitLab. Na prática, isso significa que qualquer robô mal intencionado vasculhando a internet pode encontrar essas chaves em minutos e usar sua infraestrutura para minerar criptomoedas ou roubar dados dos seus clientes. O prejuízo financeiro e a dor de cabeça com a segurança da informação podem ser catastróficos para qualquer empresa.

Para evitar esse tipo de desastre, contar apenas com a atenção humana não funciona. Precisamos de automação inteligente que barre o erro antes mesmo que ele saia da nossa máquina de desenvolvimento. É justamente nesse cenário que entra o Gitleaks, uma ferramenta leve e de código aberto projetada para farejar segredos esquecidos em arquivos e históricos de commits. Quando integramos essa varredura com pipelines de CI/CD eficientes, criamos uma barreira intransponível contra o vazamento de dados corporativos.

O que é o Gitleaks e como ele descobre segredos escondidos

O Gitleaks é um programa que lê o histórico do seu versionamento de código em busca de padrões que pareçam senhas, tokens de acesso, chaves privadas SSH e credenciais de nuvem. Ele funciona combinando duas técnicas principais: expressões regulares, que buscam formatos conhecidos como o prefixo de uma chave da AWS, e análise de entropia, que mede o grau de aleatoriedade de uma sequência de caracteres. Se uma string parece ser uma mistura caótica de letras e números com alta complexidade, o sistema suspeita imediatamente que aquilo não é um texto comum, mas sim uma chave secreta gerada por computador.

A grande vantagem dessa abordagem é que ela não exige que você configure regras complexas do zero para cada tipo de serviço existente no mercado. A ferramenta já vem com dezenas de detecções prontas para dezenas de provedores populares, como GitHub, Slack, Stripe e Google Cloud. Além disso, assim como garantimos a integridade de serviços em processos automatizados de certificados com Vault, podemos rodar o Gitleaks de forma totalmente automatizada e silenciosa em segundo plano durante a nossa rotina diária.

Implementando ganchos locais para barrar o erro na origem

A melhor forma de corrigir um problema de segurança é impedir que ele aconteça logo no primeiro segundo. No mundo do Git, chamamos de pre-commit hooks (ganchos de pré-commit) aos pequenos scripts que rodam automaticamente toda vez que você digita o comando git commit. Se o script encontrar qualquer sinal de chave secreta no seu código alterado, ele cancela a operação na hora, impedindo que o commit seja gravado no seu histórico local.

Para configurar isso na prática, você pode utilizar o utilitário pre-commit combinando-o com as regras oficiais do Gitleaks. O passo a passo básico envolve a criação de um arquivo de configuração na raiz do seu repositório apontando para o inspetor de segredos:

  1. Instale o gerenciador de ganchos em seu ambiente de trabalho localmente.
  2. Crie um arquivo chamado ponto pre-commit config ponto yaml na raiz do projeto.
  3. Adicione o repositório oficial do Gitleaks como um hook configurado para rodar em cada alteração de código.
repos: - repo: https://github.com/gitleaks/gitleaks rev: v8.18.0 hooks: - id: gitleaks

Com esse arquivo posicionado, sempre que alguém tentar salvar um segredo no repositório local, a ferramenta interceptará a ação imediatamente e exigirá a remoção do dado sensível antes de prosseguir com o trabalho.

Validando o código em pipelines para garantir zero vazamentos

Embora os ganchos locais sejam excelentes, desenvolvedores mais apressados podem acidentalmente contornar essas validações usando comandos como git commit --no-verify. Para fechar essa brecha de segurança, a segunda linha de defesa indispensável é inserir a varredura diretamente no pipeline de integração contínua do seu projeto, seja no GitHub Actions, GitLab CI ou Jenkins. Dessa forma, mesmo que o código passe pela máquina do programador, o servidor central fará uma checagem rigorosa antes de aceitar o merge para a branch principal.

Na prática, o processo na pipeline baixa o código fonte, instala o binário do Gitleaks e executa uma varredura completa em todo o histórico de alterações recentes. Caso encontre qualquer irregularidade, o pipeline falha instantaneamente, bloqueando o envio do código para produção e notificando a equipe de desenvolvimento sobre a falha de segurança detectada no processo.

Considerações finais sobre a cultura de segurança em código

Automatizar a varredura de segredos não é apenas uma questão de instalar um software e esquecê-lo, mas sim de criar uma cultura sólida de proteção de dados dentro da equipe de engenharia. Ferramentas como o Gitleaks cumprem um papel fundamental ao tirar o peso dos ombros humanos e automatizar a detecção de erros que poderiam custar caro para a reputação da empresa. Ao combinar validações locais no momento do commit com barreiras rígidas nos servidores de CI/CD, garantimos que credenciais sensíveis permaneçam estritamente onde devem estar: seguras e fora do alcance público.