詳細検索

Como prevenir vazamento de chaves API e tokens? Pratique do GitHub para o CI/CD Gerenciamento de Segredos

Avatar
por 西田
3 min de leitura

Como prevenir vazamento de chaves API e tokens? Pratique do GitHub para o CI/CD Gerenciamento de Segredos
Traduzido do 日本語 • Ver original
西田
西田

Olá, aqui é o Nishida da Colorkrew Security. Vazamentos de segredos (chaves de API, senhas, tokens, etc.) são intermináveis.

"Eu enviei minha chave de acesso AWS para o GitHub"
"Variáveis do ambiente CI foram registradas"
"A chave API usada pelo aposentado ainda estava válida."

Muitas vezes é descartado como um "erro involuntário", mas a essência é diferente.
Não pode ser evitado simplesmente "prevenindo vazamento". É importante criar um mecanismo baseado na premissa de que ele vai vazar.

1. 4 Maneiras de Segredos Vazarem

Caminho (1): Commit incorreto no repositório Git

Esse é o caminho mais comum.
Exemplos típicos incluem esquecer de adicionar o arquivo '.env' ao gitignore, codificação fixa, etc.

O que é especialmente assustador é que**, uma vez que um Segredo é comprometido, ele permanece no histórico do git mesmo que seja deletado**.

Caminho (2): Saída de Log CI/CD

Ao usar Secrets com GitHub Actions, Jenkins, etc., a saída do comando pode permanecer no log.

Bash

# Exemplos perigosos
echo "Conectando com token: $API_KEY" 
curl -H "Autorização: Portador $API_KEY" ... 

Caminho (3): Incorporação na imagem do contêiner

Um caso em que você passa Secrets em tempo de compilação em um Dockerfile e os inclui na imagem como estão.

Caminho (4): Cole no Slack ou Docs

Um caso em que você "compartilha às pressas" e cola a chave da API diretamente no Slack DM ou no Notion.

2. Prevenção: Como Segredos "Não Colocam em Código"

Detecção com gancho Git pre-commit

Introduza uma ferramenta para escanear automaticamente antes de comprometer.

Ferramentas típicas:

  • git-secrets (AWS)
  • detectar-secretos (por Yelp)
  • truffleHog

Bash

# Exemplo de configurar detect-secrets
Detect-secrets de instalação de pip
detect-secrets scan > .secrets.baseline
# Adicionar a .git/hooks/pre-commit

Usando Ferramentas de Gerenciamento de Segredos

Não escreva Segredos no seu código, mas projete-os para obtê-los de uma ferramenta dedicada de gerenciamento.

Serviços Típicos:

  • Gerente de Segredos AWS
  • Azure Key Vault
  • Cofre HashiCorp
  • GCP Gerente Secreto

3. Detecção: Descubra rapidamente segredos vazados

A prevenção sozinha não é suficiente. Também é necessário ter um mecanismo para detecção precoce em caso de vazamento.

Escaneamento Secreto no GitHub

O GitHub possui um recurso chamado Secret Scanning, que detecta e notifica automaticamente Segredos (chaves AWS, PATs do GitHub, etc.) contidos em código pushado.

Recomendamos habilitá-lo também para repositórios privados (é necessário GitHub Advanced Security).

Escaneamento Periódico de Repositórios

Periodicamente, escaneie seu código atual em busca de Secrets antigos.

Bash

# Escaneando todo o repositório por truffleHog
Trufflehog vai https://github.com/your-org/your-repo.git

4. Rotação: Um sistema que pode ser "desativado imediatamente" caso vaze

Quando Secrets vazam, o mais importante é a velocidade de resposta após a descoberta.

Pontos-chave para o desenvolvimento do sistema:

  • Gerenciar um inventário de todos os Segredos (quais Segredos são usados em qual sistema)
  • Criar um procedimento de rotação antecipadamente
  • Configurar rotação automática regular (por exemplo, 90 dias)
  • Praticar procedimentos de desativação de emergência (manual e automático)

5. Gerenciamento de Segredos em CI/CD

Melhores Práticas em Ações do GitHub:

# Bom exemplo: Segredos do GitHub Secrets
Etapas: 
  - nome: Implantar
    env: 
      API_KEY: ${{ segredos. API_KEY }}
    Corre: |
      # Não envie para logs
      deploy.sh

Notas:

  • Não produza variáveis Secrets com 'echo'
  • Não ative o modo de depuração (AÇÕES_STEP_DEBUG) no CI de produção
  • Minimizar o escopo dos Segredos por trabalho.

6. Aproximação da Segurança da Colorkrew

O sistema de gerenciamento Secrets não é "introduzir e encerrar", mas exige um projeto operacional contínuo desde manutenção de estoque, rotação regular e desativação imediata em caso de incidente. Se você não sabe como gerenciar seu ambiente ou quer verificar se há risco de vazamento em seus repositórios existentes, uma revisão de projeto por um especialista é a solução mais confiável e rápida.

Na Colorkrew Security, oferecemos suporte de design e revisões de segurança para DevSecOps, incluindo gestão de Segredos. Sinta-se à vontade para nos contatar para começar.

Related Articles