Come rimuovere le API key da git

di Lorenzo Neri

Diciamocelo: a chi non è mai capitato di committare una API key nel proprio repository? In questo articolo voglio raccontarti come sia possibile rimuovere le API key da git in generale e quindi anche nel tuo repository prima che sia troppo tardi!

Capita più spesso di quanto tu creda: sei bello preso dal tuo lavoro, hai appena finito di creare magari qualcosa di grosso, una feature, insomma… Sei pronto per committare il tutto.

Tra tutte le cose che ci offre git, su cui ho scritto molto nel blog, beh… Ci offre anche uno strumento nato non propriamente per rimuovere le API key che hai accidentalmente committato se non addirittura pushato!

Prima di cominciare però, forse non mi conosci ed è giusto presentarsi 😀

Ciao mi chiamo Lorenzo Neri e sono un informatico: mi occupo di realizzare contenuti che aiutino persone come te a padroneggiare l’arte del nuovo millennio, l’informatica!

Devi sapere che questo articolo così come tanti altri sono frutto dei miei sbagli nel corso della mia vita lavorativa: poi però a un certo punto ho deciso di cambiare rotta.

Come? Documentando.

Documentando con vari articoli che possano aiutare persone come te che mi stai leggendo a risolvere gli stessi problemi che ho incontrato io.

Rimuovere dati sensibili da git: non solo API key

Parlo di rimuovere le API key da git, ma in realtà questo discorso vale per tutta quella serie di dati sensibili che dovremmo evitare di pushare non solo di committare.


Di per sé, rimuovere o se vogliamo dirla tutta anche nascondere dati sensibili fra cui le API key da git, è un processo che va fatto in due step.

Prima di rimuovere dati sensibili, andrebbero “modificati”

Quando si tratta di dati sensibili, specialmente tutta quella serie di chiavi che usiamo per accedere a delle API all’interno del nostro codice… Beh, il primo step consiste nel modificare.

Questo step, consiste semplicemente nel cambiare le API key che hai accidentalmente pushato prima ancora effettivamente di rimuoverle.

Per quale motivo?

Beh… Lascia che ti faccia un esempio.

Mi era capitato tempo fa, quando ho registrato una lezione del mio nuovo corso, di mostrare la API key di un mio chatbot Telegram.

Purtroppo non sono troppo una cima in termini di post-produzione video e oscurarlo beh… Significava ri-registrare la lezione oppure… Oppure tramite Botfather di ri-generare la API key del mio chatbot.

In questo modo, la chiave associata al chatbot in precedenza che è presente nel video non è più valida e nessuno anche se ne entra in possesso ci può fare qualcosa.

Qual è la morale di questa storia e il messaggio che ti voglio far passare?

Una volta che una chiave da non divulgare o un dato sensibile è presente su un repository GIT, specie se pushata, non potrai MAI sapere se qualcuno ne è già entrato in possesso al 100%.

cit. azione

Così facendo invece, siamo totalmente sicuri che la chiave o comunque i dati sensibili in generale non siano più validi… Prima ancora di rimuoverli!

Infatti, arriviamo a questo fatidico secondo step.

Rimuovere e quindi cancellare tutte le API key che hai accidentalmente messo in un commit o pushato

Tra tutti i comandi e le potenzialità che offre git, su cui ho scritto un bel po’ di articoli che ti lascio qui, ce ne offre uno che è filter-branch.

Questo comando, in sintesi, ci permette di identificare e come suggerisce il nome, di filtrare, i file come meglio ci torna comodo.

E quale strumento più potente di questo per rimuovere in definitiva le chiavi che abbiamo accidentalmente pushato? 😀

Ti è sufficiente lanciare questo comando:

 git filter-branch --tree-filter "sed -i "" 's/API_KEY_O_CHIAVE_DA_RIMUOVERE/STRINGA_CON_CUI_RIMPIAZZARLE/' filepath"

Così facendo, tutte le API key che hai impostato nel comando, verranno identificate nei file presenti nel tuo repository e sostituite con la stringa che hai inserito nel comando stesso.

Abbiamo finito?

Eh… No.

Il comando precedente sostituisce sì le API key all’interno dei file e in tutta la storia del repository stesso ma… Dobbiamo pushare il tutto altrimenti in remoto rimangono!

E come?

Beh… Ecco come concludere il tutto:

git push --force

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più