Cos'è la gestione dei segreti?

La gestione dei segreti è il processo di protezione e controllo delle credenziali per i componenti automatizzati di un'applicazione.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire cosa si intende per "segreti" e "gestione dei segreti"
  • Capire alcune delle difficoltà insite nella gestione dei segreti
  • Illustrare le soluzioni di gestione dei segreti

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Cos'è la gestione dei segreti?

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.

Cos'è un "segreto"?

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:

  • Chiavi o certificati IPsec
  • Certificati TLS
  • Chiavi
  • Chiavi API
  • Password
  • Token

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.

Perché è importante aggiornare i segreti?

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.

Quali sono le altre problematiche relative alla gestione dei segreti?

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.

Come funziona una soluzione di gestione dei segreti

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.

In che modo Cloudflare fornisce assistenza con la gestione dei segreti?

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.

DOMANDE FREQUENTI

Cos'è la gestione dei segreti?

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.

Cosa si considera un segreto nello sviluppo di applicazioni?

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.

Quali tipi di dati sensibili vengono comunemente gestiti come segreti?

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.

Perché è necessario ruotare regolarmente i segreti?

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.

Quali sono le principali problematiche della gestione dei segreti in un ambiente cloud?

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.

In che modo gli strumenti di gestione dei segreti migliorano la sicurezza per gli sviluppatori?

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.

In che modo Cloudflare aiuta nella gestione delle credenziali delle applicazioni?

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.