Manejo seguro de secretos
Dónde viven las claves, tokens y contraseñas, y qué hacer cuando se filtran.
Un secreto es cualquier credencial que da acceso a un sistema: claves de API, contraseñas de base de datos, tokens, certificados privados. La regla de oro: nunca deben vivir en el código fuente ni llegar al repositorio.
1. Fuera del código, en el entorno
Lee los secretos desde variables de entorno, no desde literales en el código:
// MAL — la clave queda en el repositorio para siempre
const stripe = new Stripe('sk_live_51Hxxxxxxxxxxxxxxxxx');
// BIEN — se inyecta en tiempo de ejecución
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
Añade .env al .gitignore y versiona solo un .env.example con claves vacías o de ejemplo.
2. Usa un gestor de secretos
Para producción, las variables de entorno sueltas no bastan. Centraliza en un gestor que ofrezca cifrado en reposo, control de acceso y auditoría:
- HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager, Azure Key Vault.
- Para equipos pequeños: Doppler, 1Password Secrets, SOPS.
3. Rota con regularidad
Un secreto que nunca cambia es un secreto que, cuando se filtre, dará acceso indefinido. Define una cadencia de rotación y automatízala. Usa credenciales de vida corta siempre que el proveedor lo permita (tokens OIDC, roles de IAM temporales).
4. Si un secreto se filtra
- Revócalo y rótalo inmediatamente. Borrarlo del historial de git no basta: ya está expuesto.
- Revisa los logs de acceso del servicio afectado.
- Reescribe el historial (
git filter-repo) solo como limpieza, nunca como mitigación.
5. Detección automática
Añade un escáner de secretos al pipeline para que ningún commit los cuele:
gitleaks,trufflehog, o el secret scanning nativo de GitHub.- Un hook de pre-commit que bloquee patrones de claves conocidos.
Checklist rápida
- Ningún secreto en el código fuente ni en el historial de git.
-
.enven.gitignore;.env.examplesin valores reales. - Gestor de secretos con cifrado y control de acceso en producción.
- Rotación periódica y credenciales de vida corta donde sea posible.
- Escáner de secretos en el pipeline y en pre-commit.
- Plan de respuesta ante fugas: revocar y rotar primero.
- #secretos
- #configuracion
- #owasp