Una delle sfide con qualsiasi flusso di lavoro DevOps è la gestione di segreti, password e token che devono essere mantenuti privati per motivi di sicurezza. Ciò è particolarmente vero per i repository open source, in cui il codice è generalmente pubblico. GitHub Secrets aiuta a gestire questo problema quando si lavora con gli script GitHub Actions.
GitHub Secrets è essenzialmente un deposito in cui è possibile archiviare le chiavi private, a cui è possibile accedere dagli script GitHub Actions per nome, proprio come le variabili di ambiente. Ciò risolve il problema di mantenerlo in chiaro nella base di codice, che è un enorme problema di sicurezza anche per i repository privati e impossibile per quelli pubblici senza essere violato immediatamente.
Ciò è utile in molti casi in cui il codice può essere pubblico, ma lo script Actions deve essere autenticato con un servizio di terze parti. Ad esempio, se ospiti file binari su bucket Amazon S3, dovrai fornire allo script il token di accesso per scrivere nello storage AWS. Ovviamente, non vuoi concedere a nessuno che visualizza il repository l’autorizzazione a sovrascrivere i contenuti del bucket. L’uso di un segreto limita l’accesso e protegge anche la chiave da perdite accidentali.
I segreti del repository si applicano a un singolo repository. Dovrai impostarli dal pannello delle impostazioni del repository, a cui sarà quindi possibile accedere come variabili di ambiente nelle build di GitHub Actions. Organizzazioni GitHub i segreti si applicheranno a tutti i repository all’interno di tale organizzazione, fornendo un modo semplice per gestire centralmente le chiavi. Sono impostati dalle impostazioni dell’organizzazione. I segreti dell’ambiente si applicano a specifici Ambienti GitHub all’interno del repository, come develop E production. Ciò fornisce un modo semplice per eseguire l’override dei segreti di repository/organizzazione per diverse build, ad esempio la distribuzione in un ambiente di test rispetto a un ambiente di produzione. Attualmente, non è possibile impostare segreti specifici dell’utente. Se vuoi quella funzionalità, considera di creare un’organizzazione personale.
È possibile archiviare fino a 1.000 segreti dell’organizzazione, 100 segreti del repository e 100 segreti dell’ambiente. Tuttavia, anche i segreti sono limitati a una dimensione di 64 Kb ci sono soluzioni alternative a questa limitazione. È inoltre possibile archiviare dati binari come stringhe codificate Base64.
È ancora possibile perderli dallo script Actions se, ad esempio, li hai stampati sulla console con un comando come echo. Ti consigliamo di assicurarti che nessuno degli script in cui stai alimentando i segreti lo rilegga all’utente o l’output in alcun file di registro. Fortunatamente, GitHub impedisce al segreto di essere fornito a determinati comandi di registrazione, incluso echo.
Utilizzo dei segreti di GitHub Per impostare un segreto a livello di repository, dovrai andare al pannello delle impostazioni per il repository e fare clic su Segreti > Azioni. Puoi anche impostare segreti per GitHub Codespaces e Dependabot, se li usi.
Puoi impostare un nome di variabile e incollare il contenuto segreto. Una volta che lasci questa finestra, però, non sarai più in grado di vedere la chiave, anche se puoi modificarla e incollarla in una nuova chiave. Questo è generalmente il modo in cui dovrebbe funzionare la maggior parte degli archivi segreti ed è una buona funzionalità di sicurezza, ma non aspettarti di poter vedere di nuovo questa chiave.
La convenzione di denominazione per i nomi segreti è maiuscola con caratteri di sottolineatura, altrimenti nota come “caso di serpente urlante”, ma questo non è imposto da nulla.
Quindi, nel tuo script Actions, puoi fare riferimento ad esso eseguendo l’escape come variabile YAML, in questo modo:
${{ secrets.SECRET_NAME }}
Nota che “segreti”. il contesto deve essere incluso prima del nome del segreto. Inoltre, non è necessario fare nulla di speciale per fare riferimento ai segreti dell’organizzazione rispetto a quelli a repository singolo.
Questo valore può essere passato ai comandi, ma puoi anche usarlo per impostare le variabili di ambiente per un processo. Questo è in genere il modo in cui la maggior parte degli strumenti accetterà comunque i segreti, poiché è il sistema più sicuro e flessibile.
Se un segreto non esiste nel tuo account, GitHub utilizzerà una stringa vuota come valore.
Segreti dell’organizzazione L’impostazione dei segreti a livello di organizzazione viene eseguita allo stesso modo, tuttavia sono disponibili alcuni controlli aggiuntivi sull’accesso e sulla distribuzione.
Quando crei un segreto dell’organizzazione, puoi scegliere di applicarlo solo ai repository pubblici o privati, sebbene i segreti privati per l’organizzazione siano un’opzione a pagamento. Puoi anche selezionare repository individuali.
Per creare o modificare un segreto dell’organizzazione, devi disporre dell’accesso “amministratore” all’organizzazione stessa. Questo può essere dato a tutti i membri modificando le autorizzazioni di base, ma generalmente non è consigliato per le grandi organizzazioni.