GitHub Actions è la piattaforma integrata di GitHub per l’integrazione e la consegna continua (Continuous Integration e Continuous Delivery , o CI/CD) che consente ai team di sviluppo di automatizzare il flusso di lavoro, comprese le pipeline di compilazione, test e distribuzione.

Uno svantaggio dell’utilizzo di GitHub Actions è che i vostri log sono pubblici e chiunque può accedervi con i permessi necessari.

Per evitare che i dati sensibili vengano esposti nei log di GitHub Actions, dovreste usare variabili d’ambiente crittografate per memorizzare i dati sensibili in modo sicuro. Queste variabili ambientali criptate sono note come secret, o segreti, di GitHub Actions.

Questo articolo vi mostra come usare i segreti di GitHub Actions per evitare che le informazioni sensibili appaiano nei log di GitHub Actions.

Prerequisiti:

Per seguire questo tutorial:

Come proteggere i log di GitHub Actions

Quando create dei flussi di lavoro usando GitHub Actions, chiunque visiti il vostro repository può visualizzare i log, quindi questi non dovrebbero includere informazioni sensibili. Tuttavia, non potete eliminare token, password e altre informazioni sensibili: vi servono per i test e per il corretto funzionamento della vostra applicazione.

La soluzione è nasconderli con il comando del flusso di lavoro ::add-mask::, che mette un asterisco (*) al posto dei dati sensibili.

La sezione seguente vi mostra come mascherare un log.

Come mascherare i log

Per prima cosa, aprite il repository clonato nel vostro editor di testo.

Create la cartella .github/workflows/ nella radice del repository per memorizzare i file del flusso di lavoro. Quindi create un nuovo file chiamato hide-secrets.yml nella directory .github/workflows e aggiungeteci il seguente codice:

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
	runs-on: ubuntu-latest
	steps:
  	- name: echo a secret
    	run: echo "your secret token is verySecretToken"

Fate il commit delle modifiche e inviatele al vostro repository GitHub. Il flusso di lavoro aggiornato di GitHub Actions è attivo e verrà attivato ogni volta che farete una nuova modifica.

Aprite il vostro repository su GitHub e selezionate la scheda Actions per visualizzare i log. Il flusso di lavoro dovrebbe apparire come segue:

Schermata di anteprima del flusso di lavoro in GitHub
Anteprima del flusso di lavoro

Esaminando i log del flusso di lavoro, troverete la stringa verySecretToken stampata sui log. Fate clic sul vostro flusso di lavoro e poi sul nome dell’attività (print-secret-token) per visualizzare il log. L’aspetto dovrebbe essere il seguente:

Schermata da cui esaminare i log delle azioni di GitHub
Esaminare i log di GitHub Actions

Per nasconderlo, usate il comando ::add-mask::, modificate il file hide-secrets.yml e aggiungete un nuovo passaggio a print-secret-token:

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
	runs-on: ubuntu-latest
	steps:
  	- name: Add Mask
    	run: echo "::add-mask::verySecretToken"
  	- name: echo a secret  
    	run: echo "your secret token is verySecretToken"

Dovreste aggiungere il passaggio Add Mask all’inizio, poiché il mascheramento si applica solo dopo l’esecuzione di ::add-mask::. Se inserite il segreto verySecretToken prima del passaggio Add Mask, esso apparirà comunque non mascherato. Quindi, per assicurarvi che il valore sia mascherato, è essenziale usare ::add-mask:: il prima possibile.

Una volta effettuato il commit e pubblicate le modifiche sul repository GitHub, la stringa verySecretToken sarà sostituita da asterischi (*) ovunque appaia nei vostri log:

Schermata del file print-secret-token con una freccia che indica una parola del codice mascherata con asterischi.
Rendere i testi semplici

Se da un lato questo risolve il problema del mascheramento, dall’altro ne introduce uno nuovo. Il vostro verySecretToken è ancora nel file del flusso di lavoro, quindi chiunque abbia accesso al codice sorgente può vederlo.

Un altro aspetto negativo del mascheramento del testo normale è che il mascheramento di una sola parte di una parola nasconde tutte le istanze della stessa. Per esempio, prendiamo la seguente frase: “Programmare è fantastico, ma i miei giorni più produttivi sono quelli in cui non scrivo un programma”. Se mascherate la parola “programma”, non solo verrà nascosta la parola alla fine della frase ma anche qualsiasi altro punto in cui compare, come per esempio “programmazione”.

Se provate a mascherare del testo semplice, otterrete qualcosa di simile:

Schermata del file print-secret-token con una freccia che indica due parole del codice mascherate con asterischi.
Problema con il mascheramento di testi semplici

Un approccio migliore per nascondere i dati sensibili nei log di GitHub Actions è quello di usare i secret di GitHub Actions, come mostriamo nella sezione seguente.

Come usare i secret di GitHub Actions

Potete usare i segreti di GitHub Actions per memorizzare qualsiasi dato privato che volete inserite nel flusso di lavoro di GitHub Actions. I segreti vengono creati come coppie chiave/valore a livello di repository o di organizzazione.

Mentre un repository può accedere solo ai segreti creati a livello di repository, i segreti creati a livello di organizzazione sono condivisi da tutti i repository di un’organizzazione.

I segreti creati a livello di repository sono disponibili per l’uso nelle azioni da parte di chiunque abbia i permessi del ruolo di collaboratore. Potete modificare il valore dei vostri segreti in qualsiasi momento. Tuttavia, i segreti non possono essere utilizzati con i flussi di lavoro di un repository biforcato.

Per la denominazione dei segreti si applicano le seguenti linee guida:

  • I nomi dei segreti non possono contenere spazi.
  • I nomi dei segreti non fanno distinzione tra maiuscole e minuscole.
  • I nomi dei segreti non possono iniziare con un numero.
  • I nomi dei segreti non devono iniziare con il prefisso GITHUB_.
  • I nomi dei segreti devono essere unici: segreti con lo stesso nome non possono esistere allo stesso livello.

Potete usare questi segreti nel flusso di lavoro delle azioni di GitHub semplicemente aggiungendo secrets prima del nome del segreto come variabile YML, come mostrato di seguito:

${{ secrets.MY_SECRET_TOKEN }}

Potete anche mascherare i segreti per una maggiore sicurezza, come mostrato nella sezione seguente.

Come mascherare i secret

Per prima cosa, create un segreto su GitHub. Nel vostro repository su GitHub, fate clic sulla scheda Settings, selezionate Secrets> Actions dalla barra laterale sinistra e poi fate clic su New repository secret per aggiungere un nuovo segreto:

Schermata di GitHub, sezione Actions Secrets con il pulsante
Creare un nuovo segreto del repository

Date un nome e un valore al vostro segreto, quindi fate clic su Add secret:

Schermata New Secrets della sezione Actions Secrets con il campo per inserire un nuovo segreto GitHub
Aggiungere un nuovo segreto GitHub

Ora che avete creato il vostro segreto e gli avete assegnato il valore verySecretToken, potete usarlo nel vostro file del flusso di lavoro. Aprite il file hide-secrets.yml e fate le seguenti modifiche:

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
	runs-on: ubuntu-latest
	steps:
  	- name: Add Mask
    	run: echo "::add-mask::${{ secrets.MY_SECRET_TOKEN }}"
  	- name: Echo a secret  
    	run: echo "your secret token is ${{ secrets.MY_SECRET_TOKEN }}"

L’unica differenza tra questo e il codice precedente è che avete sostituito il token segreto con il vostro segreto GitHub appena creato “${{ secrets.MY_SECRET_TOKEN }}“.

Una volta eseguito il commit del codice e inviate le modifiche al vostro repository GitHub, i vostri segreti saranno mascherati:

Schermata del file print-secret-token: una prima freccia viola indica la sezione Add Mask del codice, mentre la seconda mostra il token segreto mascherato
Segreti di GitHub Actions mascherati

Riepilogo

Non dovete rivelare nessuna informazione sensibile nei vostri log delle azioni GitHub. Il mascheramento del testo è un modo per nascondere i dati, ma chiunque acceda ai file del vostro flusso di lavoro può vedere le informazioni che state cercando di nascondere.

Come dimostra questo tutorial, i secret di GitHub Actions sono un approccio molto più sicuro per salvaguardare i vostri dati sensibili e poi mascherarli.

Leggete la nostra documentazione per saperne di più sull’utilizzo di Git in Kinsta. Provate subito il nostro Hosting di Applicazioni gratuitamente.

Jeremy Holcombe Kinsta

Content & Marketing Editor presso Kinsta, web developer di WordPress e content writer. Al di fuori di tutto ciò che riguarda WordPress, mi piacciono la spiaggia, il golf e il cinema. Ho anche i problemi di tutte le persone più alte della media ;).