Gitleaks: el guardián de secretos
El .gitignore depende de tu memoria. Gitleaks revisa cada commit antes de que salga y frena cualquier llave que intente colarse.
En el artículo anterior pusimos la
primera valla: el .gitignore. Pero esa valla tiene un punto débil: depende
de ti. De que te acuerdes de cada archivo sensible, de que no pegues una
llave en el código "solo para probar", de que las prisas no te ganen. Los
humanos nos equivocamos; los que van rápido, más.
Necesitas un guardián que revise por ti. Siempre. Sin cansarse.
Qué es Gitleaks
Un programa que mira cada cambio justo antes de guardarlo en git. Si algo huele a secreto — una API key, un token, una contraseña — frena el commit y te avisa. El secreto nunca sale de tu máquina.
El guardián en la puerta del commit
Revisa cada commit antes de que salga. Si trae un secreto, lo frena. Si está limpio, lo deja pasar.
Instálalo
Una vez, con tu gestor de paquetes:
# macOS
brew install gitleaks
# Windows
winget install Gitleaks.Gitleaks
# o descarga el binario desde github.com/gitleaks/gitleaks/releases
Guardián global: vigila todos tus repos
Puedes engancharlo repo por repo, pero lo potente es un hook global: se configura una vez y revisa cada commit en todos tus proyectos — los de ahora y los que crees después.
git config --global core.hooksPath ~/.git-hooks-global
# ~/.git-hooks-global/pre-commit
git diff --cached | gitleaks stdin --redact --no-banner
Por qué stdin y no --staged
En Gitleaks moderno (8.30+), lo staged se escanea pasándole el diff por stdin. El subcomando de historial (gitleaks git) revisa commits ya guardados: sirve para auditar, no para frenar lo que estás por commitear.
Pruébalo, o no sirve
Un guardián sin probar es una falsa sensación de seguridad. Y aquí hay una trampa conocida:
Usas el ejemplo oficial de AWS
- Pegas
AKIAIOSFODNN7EXAMPLEen un archivo - El commit pasa sin aviso
- Esa clave está en la lista blanca: es el ejemplo de la documentación
- Concluyes que "no funciona" (o peor: que sí)
Inventas un secreto realista
- Escribes una clave falsa pero con pinta real
- Intentas commitear
- Gitleaks lo frena y señala la línea exacta
- Ahora sí sabes que el guardián está despierto
Auditar un repo completo
Para revisar un proyecto entero, historial incluido:
gitleaks git -v
Útil antes de hacer público un repo viejo o al heredar un proyecto de otro equipo.
La salida de emergencia y un punto ciego
Existe una forma de saltarse el guardián:
git commit --no-verify
Úsala con criterio, no por costumbre — cada vez que la escribas, pregúntate
por qué el guardián te está frenando. Y un punto ciego real: herramientas como
husky definen su propio core.hooksPath local y pueden pisar tu hook
global sin avisarte. En cada proyecto nuevo con hooks propios, verifica que
Gitleaks siga activo intentando commitear un secreto falso.
En DigitalSoul es regla de casa
Nuestros repos llevan hook anti-secretos activado vía core.hooksPath y no se salta con --no-verify. Si un secreto llega a exponerse igual, la respuesta es una sola: rotarlo de inmediato.
Para llevar
El .gitignore es la valla; Gitleaks es el guardián que nunca se distrae.
Instálalo global, pruébalo con un secreto realista (no con el ejemplo
oficial) y revisa que siga vivo cuando un proyecto trae hooks propios. Con
los valores cubiertos, queda el otro frente: la forma del código — de eso va
el siguiente artículo.
Sigue aprendiendo IA con nosotros
Lo que lees aquí es solo el comienzo. Únete a nuestra comunidad y aprende a construir y vender soluciones reales con inteligencia artificial.
- +80 personas aprendiendo en comunidad
- Directos cada semana con tecnología a la vanguardia
- Formaciones de los softwares para crear y vender soluciones