La gestione dei segreti è il processo di protezione e controllo delle credenziali per i componenti automatizzati di un'applicazione.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Cos'è la sicurezza delle API?
Cos'è una chiamata API?
Cos'è una violazione dei dati?
Cos'è l'SQL injection?
Ransomware
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
La gestione dei segreti è la pratica di archiviazione sicura di informazioni sensibili che, se divulgate, potrebbero consentire a malintenzionati o a persone non autorizzate di accedere all'infrastruttura applicativa. Un "segreto", in questo contesto, si riferisce a chiavi di crittografia, chiavi API, chiavi SSH, token, password o certificati che consentono alle diverse parti dell'infrastruttura di un'applicazione di collegarsi tra loro.
Sebbene un utente potrebbe aver necessità di conoscere una sola password per accedere a una data applicazione, l'applicazione stessa è composta da diverse parti che necessitano di credenziali, ovvero questi segreti, per comunicare reciprocamente.
Quasi tutti sanno quanto possa essere difficile ricordare le password per una moltitudine di applicazioni, specialmente quando queste password devono essere aggiornate regolarmente. Per questo motivo, molte persone iniziano ad adottare pratiche di gestione delle password non sicure: le annotano da qualche parte, oppure usano la medesima password per tutte le applicazioni.
Gli sviluppatori si trovano ad affrontare problemi simili quando si accingono a creare un software. L'infrastruttura che permette il funzionamento delle applicazioni, o sulla quale gira un'intera azienda, può richiedere centinaia o addirittura milioni di chiavi, token e password. Poiché la gestione di tutti questi segreti è enormemente onerosa, spesso finiscono per essere inseriti direttamente nel software dell'applicazione. Può accadere che non vengano mai aggiornati e, talvolta, siano codificati in chiaro, cosa che li rende vulnerabili per i pirati informatici.
Nel contesto dello sviluppo di applicazioni, un segreto è un dato che viene utilizzato come una credenziale. Proprio come una persona deve autenticarsi per accedere alla propria e-mail inserendo un nome utente e una password, i componenti non umani di quell'applicazione di posta elettronica (o di qualsiasi applicazione) devono autenticarsi tra loro affinché l'applicazione possa funzionare. Questi componenti possono includere connessioni API, container, microservizi, script, funzioni e strumenti di automazione. Per l'autenticazione, tutti questi componenti utilizzano delle credenziali.
Tra i segreti possiamo trovare:
Pensiamo a come i mattoncini delle costruzioni per bambini (come i LEGO®) si incastrano per formare una struttura robusta, seppur in miniatura. I segreti sono come quei meccanismi di bloccaggio che mantengono un'applicazione al sicuro. Senza di essi, l'applicazione si disgregherebbe.
A differenza dei mattoncini delle costruzioni, che hanno sempre le stesse scanalature per incastrarsi tra loro, i segreti devono essere cambiati regolarmente. Se un segreto viene utilizzato troppo a lungo, un utente malintenzionato potrebbe indovinarlo tramite un attacco di tipo "brute force". Inoltre, quanto più a lungo un segreto viene utilizzato, tanto maggiore è la probabilità che venga scoperto.
La necessità di ruotare le password aumenta la complessità del poterle gestire in modo sicuro. Se ricordarsi una password appena aggiornata è difficile, lo è ancora di più operare una rotazione regolare dei segreti. Una dozzina di applicazioni potrebbero dipendere da una singola API, e se l'APi richiede nuove credenziali, tutte queste applicazioni sono costrette ad aggiornare i propri segreti. In alcuni casi, un'azienda potrebbe persino non sapere quante app dipendano da una singola API, e quale cesserà di funzionare quando un segreto viene aggiornato.
A volte, i team di sviluppo, per motivi di efficienza, optano di non aggiornare affatto i segreti, proprio come molte persone preferiscono non aggiornare le proprie password. A volte cadono persino nella tentazione di codificare i segreti negli script e nelle funzioni, presupponendo che non sia necessario modificarli.
La condivisione manuale: gli sviluppatori che non dispongono di una soluzione di gestione dei segreti possono vedersi obbligati a utilizzare processi manuali per condividerli tra i team di sviluppo. Questo conduce a una cattiva documentazione dei segreti e alla loro immissione in ambienti non protetti.
Account di terze parti: spesso degli utenti esterni hanno bisogno di accedere a database e API interni. Poiché questi utenti si trovano al di fuori dell'organizzazione, imporre una gestione sicura dei segreti diventa difficile.
Cloud computing: gli ambienti cloud sono tentacolari ed effimeri. Nuove istanze di macchine virtuali vengono create regolarmente per supportare i servizi, e tutte richiedono i propri segreti. Le applicazioni cloud consentono anche un ampio accesso da una gamma quasi illimitata di ubicazioni, ampliando notevolmente il numero di credenziali e privilegi che devono essere gestiti.
Mancanza di gestione centralizzata: sappiamo quanto sia difficile mettere d'accordo un gruppo di amici sulla data e l'ora di una cena. Altrettanto difficile è gestire segreti sparsi tra una moltitudine di funzioni aziendali e team. Ogni team potrebbe documentare i segreti in modi diversi, archiviarli in luoghi diverse oppure non avere visibilità sui segreti utilizzati da altri team.
Gli strumenti di gestione dei segreti possono automatizzare tutti i processi necessari per gestirli in modo sicuro. Inoltre, esse archiviano i segreti in un ambiente sicuro, separato dal codice dell'applicazione. Questo permette agli sviluppatori di non inserire i segreti direttamente nel codice o di memorizzarli in chiaro, dove potrebbero venire violati.
Cloudflare offre una piattaforma di sviluppo altamente scalabile per eseguire codice sulla sua rete globale. Cloudflare Secrets Store consente agli sviluppatori di archiviare e gestire in modo sicuro i segreti necessari alle loro applicazioni, dai token API alle intestazioni di autorizzazione delle richieste. Scopri di più su Secrets Store.
La gestione dei segreti è la pratica di proteggere e regolamentare le credenziali digitali utilizzate dalle parti automatizzate di un'applicazione. Si tratta di archiviare in modo sicuro dati sensibili che, se esposti, potrebbero consentire a persone non autorizzate di accedere all'infrastruttura di un'applicazione.
In questo contesto, un segreto è un dato che funge da credenziale per i componenti non umani. Questi elementi non umani, come le connessioni API, i microservizi e gli strumenti di automazione, utilizzano queste credenziali per autenticarsi reciprocamente e consentire il funzionamento dell'applicazione. Gli esempi includono chiavi IPSec, chiavi private TLS, chiavi API e password.
I segreti comuni includono chiavi API, chiavi di crittografia, password e token. Includono anche certificati, come certificati TLS o IPsec, e chiavi SSH che consentono a diverse parti di un'infrastruttura di connettersi.
I segreti devono essere aggiornati per ridurre il rischio che un malintenzionato li indovini tramite un attacco di forza bruta. Inoltre, quanto più a lungo un segreto rimane in uso, tanto maggiore è la probabilità che venga scoperto. La rotazione regolare aiuta a mantenere la sicurezza dell'applicazione nel tempo.
Gli ambienti cloud sono spesso estesi e cambiano frequentemente, con nuove macchine virtuali che vengono avviate costantemente e ognuna richiede le proprie credenziali. Inoltre, i vari componenti sono spesso interdipendenti tra loro, quindi quando un segreto viene aggiornato, può interrompere le connessioni tra i componenti che non sono stati aggiornati con le nuove informazioni. Questa espansione aumenta il numero totale di privilegi e segreti che un'organizzazione deve monitorare e gestire. Il numero di segreti che devono gestire spesso supera di gran lunga le capacità manuali dei team interni.
Le soluzioni per la gestione dei segreti automatizzano il processo di gestione e archiviano le credenziali in un ambiente sicuro separato dal codice dell'applicazione. Ciò consente agli sviluppatori di evitare di inserire segreti direttamente nel codice o di salvarli in chiaro, dove sono molto più facili da trovare per gli aggressori.
Cloudflare fornisce uno strumento chiamato Secrets Store, che si basa sulla sua rete globale. Questo servizio consente agli sviluppatori di archiviare e gestire in modo sicuro le varie credenziali necessarie alle loro applicazioni.