La password più sicura è quella che non si conosce
Una frase che sembra strana, ma è la realtà. I sistemi di oggi sono tutti interconnessi, per ogni servizio abbiamo bisogno di credenziali. Come salvare questi dati sensibili in un'applicazione online, senza rischiare che vengano scoperti?
La soluzione è semplice, non conoscendoli. O almeno non conoscendoli sempre.
Ogni applicazione online produce dati che devono essere salvati in qualche posto, normalmente in un database. Perché allora non salvare le credenziali insieme ai dati? Cosa potrebbe sembrare una soluzione facile, potrebbe dimostrarsi rischiosa se in qualche modo il database venisse compromesso. In questa situazione un malintenzionato avrebbe sia i dati che le credenziali.
Perché allora non salvare le credenziali in modo criptato? Perché impedisce compiti automatizzati dato che non è possibile accedere ai dati senza la chiave di decriptazione.
Allora come si può risolvere questo dilemma? Facendo affidamento su sistemi ideati esclusivamente per questo, come per esempio Vault di Hashicorp. Negli ultimi aggiornamenti abbiamo collegamento prando business a Vault per salvare in modo sicuro le credenziali delle API esterne.
In questo caso come vengono salvate le credenziali per il Vault? Non siamo a punto da capo? No, usando il sistema di autenticazione AppRole di Vault. Il sistema è tanto semplice quanto geniale. Una parte delle credenziali viene integrata direttamente nella applicazione Rails usando il credential storage di Rails. La seconda parte viene generata quando si configura il Job di Nomad, poco prima di avviare l'applicazione. Questa seconda parte delle credenziali è valida solo per pochi minuti e soltanto per alcuni utilizzi. Quando viene avviata, l'applicazione usa le due credenziali per collegarsi al Vault il quale conferma l'autenticazione con un Token di sicurezza. Da questo momento in poi tutti i collegamenti vengono effettuati con questo Token conosciuto esclusivamente dell'applicazione e solo mentre è attivo il processo.
Al prossimo avvio? Il Token è "dimenticato".
Quindi, la password più sicura è quella che non si conosce.