Nota di architettura
Governance di Sicurezza del Repo
Contesto architetturale
Decisione architetturale
Applicato a
Il tuo repository privato non è sicuro. È solo meno esposto.
La maggior parte dei founder e dei product manager tratta il proprio repository GitHub come un semplice spazio dove archiviare codice. Ma nel momento in cui un prodotto cresce — clienti, pagamenti, contratti, credenziali — il repository smette di essere solo codice. Diventa dati operativi.
Ed esiste un comportamento di Git che quasi tutti trascurano: eliminare un file non lo rimuove dalla cronologia.
Un IBAN in un file markdown. Una API key in un .env caricata per errore. Dati clienti in un template email. Lo elimini, fai push, e dai per scontato che sia sparito. Non lo è — rimane nella cronologia e può essere recuperato da chiunque abbia accesso al repository.
Non è un problema di scala. È un problema di governance.
Esistono soluzioni mature da anni. La crittografia a livello di repository permette ad alcuni file di restare leggibili in locale pur essendo crittografati sul remote.
Strumenti come git-crypt mantengono il workflow di Git praticamente invariato dopo la configurazione. Ci vuole meno tempo a configurarlo che a gestire le conseguenze di una fuga di dati.
Tre principi che applico in tutti i miei repository:
Bloccare all'ingresso — pre-commit hooks, secret scanning e push protection per ridurre la probabilità che le credenziali entrino nella cronologia
Cosa non deve vivere nel repository — le credenziali in chiaro appartengono a un secret manager o password vault, mai al codice
Cosa deve vivere nel repository — se deve esserci per forza, deve essere crittografato. Nessuna eccezione — né "è solo temporaneo", né "il repository è privato"
Basta un collaboratore, un'integrazione CI/CD, o una migrazione di piattaforma per rendersi conto che "privato" non significa "protetto".
La governance non è overhead. È ciò che distingue un side project da un prodotto a cui qualcuno affida i propri dati.
Sources
- 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