0 XP
Módulo 11 · DevSecOps, FinOps e Projeto Final

Secrets: ciclo de vida, rotação e detecção de vazamento

Avançado 40 min+25 XPSecrets ManagergitleaksOIDC

Objetivos desta aula

  • Definir onde cada segredo vive
  • Automatizar rotação
  • Detectar vazamento no histórico

Todo segredo precisa de resposta para quatro perguntas: onde é armazenado, quem pode ler, com que frequência é rotacionado e como saberíamos que vazou. Sem essas respostas, você tem senha espalhada em variável de ambiente, print de tela e mensagem de chat.

A ordem de preferência é clara: eliminar o segredo (usar identidade federada como OIDC ou role de instância), depois cofre gerenciado com rotação automática, e por último — se inevitável — segredo estático com rotação agendada e escopo mínimo.

Detecção precisa ser automática: scanner de segredos no pre-commit e no CI, incluindo varredura do histórico. E quando um segredo vaza, o procedimento é rotacionar imediatamente, auditar o uso e só depois limpar o histórico. Remover o arquivo não desfaz o vazamento.

1. O ciclo de vida de um segredo

Criar → armazenar em cofre → entregar à aplicação com o menor escopo → rotacionar → revogar. Cada etapa precisa de dono e registro.

2. Prefira credenciais temporárias

OIDC do GitHub para a nuvem, IRSA/Pod Identity no EKS, credenciais dinâmicas do Vault para bancos. O melhor segredo é o que expira sozinho em minutos.

3. Rotação sem queda

Para trocar a senha do banco: crie a nova, faça a app aceitar ambas (ou recarregar), migre, e só então revogue a antiga. Automatize no Secrets Manager.

4. Detecção de vazamento

Camadas: gitleaks no pre-commit, secret scanning com push protection no GitHub, scan no CI e alertas de uso anômalo no CloudTrail.

5. Plano de resposta

1) revogar, 2) avaliar uso indevido nos logs, 3) limpar histórico, 4) postmortem. Tenha isso escrito antes de precisar.

Na prática

Detecção e rotação

bash

# varredura do historico completo
docker run --rm -v "$PWD:/repo" zricethezav/gitleaks:latest detect --source=/repo --redact -v

# hook local para nao commitar segredo
cat > .git/hooks/pre-commit <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
gitleaks protect --staged --redact || { echo "segredo detectado: commit abortado"; exit 1; }
EOF
chmod +x .git/hooks/pre-commit

# rotacao no Secrets Manager
aws secretsmanager rotate-secret --secret-id cloudshop/db --rotation-rules AutomaticallyAfterDays=30
aws secretsmanager describe-secret --secret-id cloudshop/db --query '{Rotacao:RotationEnabled,Ultima:LastRotatedDate}'

Nota de segurança: Ao encontrar um segredo no histórico, considere-o comprometido: rotacione antes de qualquer limpeza.

Pre-commit com gitleaks

yaml

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.18.4
    hooks:
      - id: gitleaks
# instalar: pip install pre-commit && pre-commit install

Por que isso importa

Credencial vazada é a causa mais frequente de comprometimento em ambientes de nuvem.

Erro comum

Apagar o arquivo do repositório e considerar o problema resolvido.

Dica de produção

Prefira identidade federada: segredo que não existe não pode vazar.

Alerta de segurança

Segredo em variável de ambiente aparece em dump de erro e em ferramenta de APM mal configurada.

Pergunta de entrevista

Qual seu procedimento ao descobrir uma chave de nuvem commitada?

Glossário

rotação
Substituição periódica de credencial, idealmente automatizada.
gitleaks
Scanner que detecta padrões de segredo em código e histórico.
Push protection
Bloqueio do push quando o GitHub detecta um segredo.
Credencial dinâmica
Credencial gerada sob demanda com validade curta.

Conexão com o CloudShop

Varrer o histórico dos repositórios do CloudShop e ativar rotação do segredo do banco.

Quiz da aula

  1. 1. Ao encontrar uma chave de acesso commitada, a primeira ação é:

  2. 2. Qual a forma mais segura de o CI acessar a AWS?

Minhas anotações

Salvo automaticamente neste navegador.

AnteriorPróxima