¿Qué práctica evita mejor que se filtren secretos en el código fuente de un proyecto Java/Spring?
Opciones
- Usar un gestor de secretos, escanear commits y rotar lo filtrado (Opción correcta)
- Subirlos a application.properties en un repo privado
- Codificarlos en base64 y dejarlos en el código
- Ponerlos en comentarios junto al código que desbloquean
Respuesta
Cargarlos desde un gestor de secretos (Vault, AWS Secrets Manager, Azure Key Vault) o variables de entorno, escanear los commits en busca de secretos y rotar cualquier secreto filtrado
Por qué
Los repositorios privados también filtran: exempleados, forks, logs de build, cuentas comprometidas.
Buena práctica: los secretos viven fuera del código (Vault, Key Vault, Secrets Manager, Kubernetes Secrets con cifrado) y se cargan en ejecución. Usa secret scanning en pre-commit y CI (gitleaks, GitHub secret scanning). Usa identidades de workload cuando sea posible, para que no exista ningún secreto.
Si se filtra uno: revoca y rota de inmediato; eliminar el commit no elimina las copias del historial.
Recuerda
Secretos fuera del código, escaneados, rotados, o reemplazados por identidad de workload.