Nota de arquitectura
Gobernanza de Seguridad del Repo
Contexto de arquitectura
Decisión de arquitectura
Aplicado en
Tu repositorio privado no es seguro. Solo está menos expuesto.
La mayoría de founders y product managers tratan su repositorio de GitHub como un simple lugar donde guardar código. Pero en el momento en que un producto crece — clientes, pagos, contratos, credenciales — el repositorio deja de ser solo código. Se convierte en datos operativos.
Y hay un comportamiento de Git que casi todo el mundo pasa por alto: borrar un archivo no lo elimina del historial.
Un IBAN en un archivo markdown. Una API key en un .env subido por error. Datos de clientes en una plantilla de email. Lo borras, haces push, y das por hecho que ha desaparecido. No es así — permanece en el historial y puede ser recuperado por cualquiera con acceso al repositorio.
Esto no es un problema de escala. Es un problema de gobernanza.
Existen soluciones maduras desde hace años. El cifrado a nivel de repositorio permite que ciertos archivos sigan siendo legibles en local mientras están cifrados en el remote.
Herramientas como git-crypt mantienen el workflow de Git prácticamente inalterado tras la configuración. Se tarda menos en configurarlo que en lidiar con las consecuencias de una fuga.
Tres principios que aplico en todos mis repositorios:
Bloquear en la puerta — pre-commit hooks, secret scanning y push protection para reducir la probabilidad de que las credenciales entren en el historial
Lo que no debe vivir en el repositorio — las credenciales en bruto pertenecen a un secret manager o password vault, nunca al código
Lo que tiene que vivir en el repositorio — si tiene que estar ahí, tiene que estar cifrado. Sin excepciones — ni "es solo temporal", ni "el repositorio es privado"
Basta un colaborador, una integración de CI/CD, o una migración de plataforma para darse cuenta de que "privado" no significa "protegido".
La gobernanza no es overhead. Es lo que separa un side project de un producto en el que alguien confía sus datos.
Fuentes
- git-crypt — transparent file encryption in Git: https://github.com/AGWA/git-crypt
- GitHub secret scanning and push protection: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning
- Git history rewriting (git-filter-repo): https://github.com/newren/git-filter-repo