Security Secrets - Proteção de Credenciais
Esta skill garante que secrets e credenciais NUNCA apareçam em sessões do Claude, terminais, logs ou commits git.
Regra Fundamental
NUNCA exponha, exiba, logue ou commite secrets. JAMAIS.
O Que São Secrets?
| Tipo | Exemplos | Risco |
|---|---|---|
| API Keys | GOOGLE_AI_API_KEY, STRIPE_SECRET_KEY |
Acesso não autorizado |
| Database | DATABASE_URL, connection strings |
Data breach |
| Auth Tokens | JWT secrets, OAuth tokens | Impersonation |
| Passwords | Senhas de serviços, admin passwords | Comprometimento total |
| Private Keys | SSH keys, SSL certificates | Acesso a sistemas |
| Webhooks | URLs com tokens embutidos | Execução de ações |
Regras de Proteção (NÃO NEGOCIÁVEIS)
1. NUNCA Exibir Valores
# ❌ PROIBIDO
echo $DATABASE_URL
cat .env
printenv | grep API
# ✅ CORRETO
echo "DATABASE_URL está configurado: $([ -n "$DATABASE_URL" ] && echo 'sim' || echo 'não')"
2. NUNCA Logar Secrets
// ❌ PROIBIDO
console.log('API Key:', process.env.API_KEY);
console.log('Config:', JSON.stringify(config));
// ✅ CORRETO
console.log('API Key configurada:', !!process.env.API_KEY);
console.log('Config keys:', Object.keys(config));
3. NUNCA Commitar Secrets
# .gitignore OBRIGATÓRIO
.env
.env.*
*.pem
*.key
secrets/
credentials.json
4. NUNCA Incluir em Prompts
❌ PROIBIDO: "Minha API key é sk-abc123..."
✅ CORRETO: "Preciso configurar a API key do Stripe"
Arquivos Sensíveis - NUNCA LER/EXIBIR
| Arquivo | Motivo |
|---|---|
.env |
Variáveis de ambiente |
.env.local |
Overrides locais |
.env.production |
Secrets de produção |
credentials.json |
Google Cloud credentials |
*.pem, *.key |
Chaves privadas |
secrets.yaml |
Kubernetes secrets |
docker-compose.override.yml |
Pode conter secrets |
Detecção de Vazamentos
Padrões Suspeitos
# API Keys
(sk|pk)[-_][a-zA-Z0-9]{20,}
AKIA[0-9A-Z]{16}
ghp_[a-zA-Z0-9]{36}
# Connection Strings
(postgres|mysql|mongodb):\/\/[^:]+:[^@]+@
# Tokens
eyJ[a-zA-Z0-9-_]+\.eyJ[a-zA-Z0-9-_]+
# Generic Secrets
(password|secret|token|key)\s*[:=]\s*['\"][^'\"]+['\"]
Se Detectar Vazamento
- PARE IMEDIATAMENTE
- NÃO EXIBA o valor encontrado
- ALERTE o usuário: "Detectei um possível secret no arquivo X. Não vou exibi-lo."
- SUGIRA rotação das credenciais
Como Trabalhar com Secrets
Verificar Existência (Sem Expor)
// ✅ Verificar se existe
const hasApiKey = !!process.env.API_KEY;
const envVars = ['API_KEY', 'DB_URL', 'JWT_SECRET'];
const missing = envVars.filter(v => !process.env[v]);
if (missing.length > 0) {
console.log('Variáveis faltando:', missing.join(', '));
}
Mascarar em Logs
// ✅ Mascarar valores
function maskSecret(value: string): string {
if (!value || value.length < 8) return '***';
return value.slice(0, 4) + '...' + value.slice(-4);
}
console.log('API Key:', maskSecret(process.env.API_KEY));
// Output: "API Key: sk-a...xyz9"
Configurar Ambiente
# ✅ Copiar template (sem valores)
cp .env.example .env
echo "Edite .env e adicione suas credenciais"
# ✅ Verificar arquivo existe
[ -f .env ] && echo ".env configurado" || echo "Crie o arquivo .env"
Checklist de Segurança
Antes de Commitar
-
.envestá no.gitignore? - Não há secrets hardcoded no código?
- Connection strings usam variáveis de ambiente?
- Logs não expõem credenciais?
Antes de Compartilhar Código
- Removeu arquivos sensíveis?
- Substituiu secrets por placeholders?
- Verificou histórico do git?
Em Code Review
- Nenhuma API key no diff?
- Nenhuma senha em strings?
- Nenhum token em URLs?
Respostas Padrão
Quando Pedirem para Exibir Secret
"Não posso exibir o valor de secrets por segurança. Posso verificar se a variável está configurada ou ajudar a configurá-la de forma segura."
Quando Encontrar Secret em Código
"Detectei uma possível credencial hardcoded em [arquivo:linha]. Recomendo:
- Mover para variável de ambiente
- Adicionar arquivo ao .gitignore
- Rotacionar a credencial se já foi commitada"
Quando Secret Vazar
"⚠️ ALERTA: Este secret pode ter sido exposto. Ações imediatas:
- Rotacione a credencial AGORA
- Verifique logs de acesso
- Revise histórico do git
- Considere usar git-filter-repo para limpar histórico"
Ferramentas Recomendadas
| Ferramenta | Uso |
|---|---|
git-secrets |
Previne commits com secrets |
truffleHog |
Escaneia histórico git |
detect-secrets |
Pre-commit hook |
dotenv-vault |
Criptografia de .env |
Esta skill ativa AUTOMATICAMENTE quando:
- Código menciona variáveis de ambiente
- Arquivos .env são referenciados
- Discussão sobre API keys ou credenciais
- Configuração de serviços externos