Dotenv-vault: Gestire gli envfile in maniera sicura
By Daniele Simeone
Envfiles al Santagostino
Al Santagostino, una delle esigenze a cui bisogna fare fronte è quella di dare accesso a una o più persone ad un progetto, fornendo materiali e informazioni che ne permettano la gestione operativa. Nello specifico, nella fase di bootstrapping del progetto, questo si traduce nel fornire al singolo sviluppatore, tra le tante informazioni, degli envfiles.
Gli envfiles, sono file contenenti una o più variabili di ambiente, ovvero variabili relative e necessarie al funzionamento di un determinato processo o di una delle sue parti.
In precedenza al Santagostino gli envfiles venivano scambiati direttamente, inviati tramite messagistica istantanea o simili.
Tuttavia i file .env
possono contenere dati sensibili come ad esempio API-Key, password e/o chiavi private.
Per questo motivo gli envfiles non dovrebbero mai essere di dominio pubblico e non dovrebbero essere mai tracciati o versionati insieme al codice applicativo.
Questo ci impone di garantire un maggiore livello di sicurezza e far sì che questo avvenga senza comportare un overhead operativo.
Scambiare gli envfiles attraverso sistemi che non sono ideati per eseguire questo tipo di task causa nel lungo periodo anche una scarsa tracciabilità degli stessi e delle modifiche che questi hanno subito nel tempo.
Per facilità di implementazione e parametri di sicurezza abbiamo dunque scelto Dotenv-vault come soluzione a tali problemi.
Dotenv-vault e come usarlo
Dotenv-vault è un vault per gli envfiles: può effettuare con sicurezza lo storage dei dati contenuti all’interno dei file .env
all’interno di una cassaforte virtuale e recuperarli per noi all’occorrenza.
Inoltre supporta il versionamento delle informazioni e garantisce opzioni di accesso per i collaboratori.
Vediamo come è possibile utilizzarlo.
Innanzitutto, è necessario creare un vault. Apriamo il terminale nella directory del progetto. Eseguiamo:
npx dotenv-vault new
NPX installerà Dotenv-vault nel caso non esistesse già e aprirà una finestra del browser per inizializzare il vault, questa operazione deve essere eseguita solo nel caso in cui sia necessario inizializzare un vault specifico per il progetto.
Una volta inizializzato il vault eseguiamo:
npx dotenv-vault login
Per effettuare il login su dotenv-vault, necessario a compiere le restanti operazioni.
Effettuata la login potremo eseguire:
npx dotenv-vault push
per eseguire lo storage e l’update degli envfile.
npx dotenv-vault pull
per importare automaticamente i file .env
dal vault nella versione più aggiornata.
In aggiunta è possibile utilizzare
npx dotenv-vault open
per aprire una finestra del browser che contiene i dati dei nostri envfiles e consente di gestire l’accesso collaborativo al vault.
Punti di Forza
Vediamo ora come tutto questo viene mantenuto sicuro:
- I dati vengono scambiati attraverso una connessione criptata
- I dati vengono decriptati solo durante il processo di salvataggio e vengono tenuti in memoria. Al termine del processo viene effettuato un flush della memoria. I dati di conseguenza non persistono mai nella loro forma decriptata.
- Durante il processo di storage, chiavi e valori derivanti dal file
.env
file vengono criptati con chiavi diverse e salvati in database diversi. In questa maniera, anche nel caso in cui uno dei server subisse un attacco sarebbe difficile dare un senso ai dati che si hanno a disposizione.
Conclusione
Dotenv-vault è una soluzione easy-to-learn, easy-to-use di storage for per le nostre variabili d’ambiente: progettato nell’ottica di aumentare la sicurezza con cui vengono trattati e scambiati gli envfiles, rende la collaborazione semplice e il versioning indolore.
Ne abbiamo esplorato insieme le basi, ma puoi saperne di più visitando la documentazione ufficiale presso https://www.dotenv.org.