Come proteggere il tuo repository Git con commit e tag firmati

I repository Git memorizzano codice sorgente prezioso e vengono utilizzati per creare applicazioni che funzionano con dati sensibili. Se un utente malintenzionato fosse in grado di compromettere un account GitHub con un repository vulnerabile, potrebbe inviare commit dannosi direttamente alla produzione. I commit firmati aiutano a garantire che ciò non accada.

Cosa sono i commit firmati?

I commit firmati implicano l'aggiunta di una firma digitale ai tuoi commit, utilizzando una chiave crittografica privata, solitamente GPG, sebbene supporti anche SSH o X.509. Una volta creato, devi aggiungere la chiave di firma sia al tuo profilo GitHub che al tuo client Git locale.

I commit firmati forniscono un ulteriore livello di sicurezza assicurando che il commit non sia stato manomesso e, altro ancora è importante che provenga da una fonte attendibile che possiede sia la chiave GPG sia l'autorità per accedere all'account GitHub.

Per inviare commit a un repository che consente solo commit firmati, l'attaccante deve essere in grado di compromettere la chiave GPG privata della vittima, che di solito significa ottenere l'accesso all'intero computer, non solo al proprio account GitHub. Poiché si tratta di un vettore di attacco abbastanza raro e difficile, i commit firmati forniscono un modo eccellente per verificare che i commit provengano da chi dicono di essere.

Impostazione di una nuova chiave GPG

Per prima cosa, dovrai creare una nuova chiave GPG utilizzata per la firma, quindi dovrai comunicarlo sia al tuo client Git che a GitHub.

Per generare la chiave, avrai bisogno del comando gpg installato sul tuo sistema. Questo dovrebbe essere lì per impostazione predefinita, ma se non lo è, puoi ottenerlo dal tuo gestore di pacchetti. Quindi, puoi generare una nuova chiave:

gpg –full-generate-key

Puoi premere Invio per la maggior parte dei prompt, ma devi inserire una passphrase e devi inserire il tuo indirizzo email GitHub. Se desideri che il tuo indirizzo sia privato, puoi utilizzare la funzione “no-reply” indirizzo per il tuo account GitHub.

Quindi, elenca le chiavi ed esporta il blocco della chiave pubblica per l'ID chiave che hai appena creato:

gpg –list-secret-keys gpg –armor – -export [IDchiave]

Successivamente, lo aggiungeremo al tuo account GitHub. Dalle impostazioni utente, fai clic su “Chiavi SSH e GPG,” e aggiungi una nuova chiave GPG. Puoi anche attivare la modalità Vigilant qui, che segnerà i commit su GitHub che non utilizzano queste chiavi come non verificati.

Imposta un nome e incolla il blocco della chiave pubblica che hai esportato con gpg –export.

Il prossimo passo è informare il tuo client Git locale della tua chiave. Se usi un client Git della GUI come GitKraken, potresti essere in grado di importarlo semplicemente, ma in caso contrario dovrai farlo dalla riga di comando.

Poiché questo è legato al tuo utente, probabilmente vorrai impostarlo come configurazione globale, ma puoi anche utilizzare configurazioni a livello di repository. Imposta user.signingkey sull'ID della chiave GPG che hai usato per esportare.

git config –global user.signingkey [keyID]

Quindi, vorrai dire a Git di firmare tutti i commit per impostazione predefinita. Questo può essere impostato per repository individuali se vuoi:

git config –global commit.gpgsign true

Altrimenti, puoi usare il flag -S per firmare i commit manualmente.

Applicazione degli impegni firmati con la protezione dei rami

Le regole di protezione del ramo impongono restrizioni e linee guida su rami specifici nel tuo repository. Sebbene siano comunemente utilizzati per imporre una richiesta pull specifica e un flusso di lavoro di unione e limitare l'accesso ai rami di rilascio, possono anche essere configurati per accettare solo commit firmati.

Solo l'accettazione di commit firmati fornisce un ulteriore livello di sicurezza e costringe ogni collaboratore ad avere una chiave GPG associata al proprio account.

È facile creare una nuova regola di protezione dei rami dalla sezione “Rami” scheda nelle impostazioni del repository. Ti consigliamo di impostare il filtro su “*” per includere tutti i rami.

Quindi seleziona “ Richiedi commit firmati.”

D'ora in poi , tutti i commit inviati a tutti i rami in questo repository devono contenere firme di firma GPG.

READ NEXT

  • › Smetti di offuscare le informazioni sensibili (ecco come farlo nel modo giusto)
  • › Recensione delle cuffie NZXT Relay: ottima connettività delusa dal suono medio
  • › Kodi 20.2 ora disponibile con un sacco di correzioni di bug
  • › Come risolvere un messaggio “Spotify non può essere riprodotto in questo momento” Errore (8 metodi)
  • › Firefox 115 ora disponibile, versione finale per Windows 7 & 8
  • › Risparmia il 50% sul tuo primo quarto di The Curiosity Box

Posted

in

by

Tags: