Condividi tramite


Procedure consigliate per la protezione dei segreti

Questo articolo fornisce indicazioni sulla protezione dei segreti e sulla riduzione del rischio di accesso non autorizzato. Seguire queste indicazioni per assicurarsi di non archiviare informazioni riservate, ad esempio le credenziali in codice, i repository GitHub, i log, le pipeline di integrazione continua/distribuzione continua (CI/CD) e così via. Le linee guida contenute in questo articolo raccolgono raccomandazioni da singoli servizi, nonché da Microsoft Cloud Security Benchmark (MCSB).

Procedure consigliate generali

Nel panorama digitale di oggi, la protezione delle informazioni riservate, ad esempio le credenziali dell'applicazione e i segreti, è fondamentale. Una violazione può causare gravi conseguenze, tra cui perdita di dati, sanzioni finanziarie e danni alla reputazione. L'implementazione di una strategia completa di gestione dei segreti è essenziale per mitigare questi rischi.

Eseguire un controllo per identificare i segreti

Prima di poter proteggere i segreti, è necessario sapere dove si trovano. L'esecuzione di un controllo approfondito dei sistemi e delle applicazioni consente di identificare tutte le informazioni riservate necessarie per la protezione. Sono incluse password, chiavi API, stringhe di connessione e altre credenziali. I controlli regolari assicurano che i nuovi segreti siano riconosciuti e che quelli esistenti siano gestiti correttamente.

È importante notare che anche i segreti creati dinamicamente, ad esempio i token OAuth, che possono essere temporanei, devono comunque essere protetti con lo stesso rigore dei segreti a lungo termine.

Evitare segreti hardcoding

L'incorporamento dei segreti direttamente nei file di codice o di configurazione rappresenta un rischio significativo per la sicurezza. Se la codebase viene compromessa, lo stesso accade ai segreti. Usare invece variabili di ambiente o strumenti di gestione della configurazione che mantengono i segreti fuori dal codice sorgente. Questa procedura riduce al minimo il rischio di esposizione accidentale e semplifica il processo di aggiornamento dei segreti.

Inoltre, l'integrazione del recupero dei segreti nella pipeline di distribuzione automatizzata e l'uso di modelli di inserimento dei segreti possono impedire che i segreti vengano accidentalmente esposti nei log o nel controllo della versione, migliorando ulteriormente la sicurezza del processo di distribuzione.

Vedere le Raccomandazioni per la protezione dei segreti delle applicazioni

Usare archivi di chiavi sicuri

L'uso di archivi di chiavi sicuri garantisce che i segreti vengano archiviati in una posizione protetta e crittografata. I servizi come Azure Key Vault e Modulo di protezione hardware gestito di Azure offrono funzionalità di sicurezza affidabili, tra cui il controllo di accesso, la registrazione e la rotazione automatica. Questo approccio centralizza la gestione dei segreti e riduce il rischio di accesso non autorizzato.

Per una maggiore sicurezza, in particolare per segreti estremamente sensibili o critici, è consigliabile crittografare il segreto con un archivio di chiavi in un modulo di protezione hardware (HSM), che offre una protezione avanzata rispetto agli archivi segreti basati su software. Per una panoramica di tutte le offerte di gestione delle chiavi in Azure e indicazioni su quali scegliere, vedere Gestione delle chiavi in Azure e Come scegliere la soluzione di gestione delle chiavi appropriata.

Implementare gli strumenti di analisi dei segreti

L'analisi regolare della codebase per i segreti incorporati può impedire l'esposizione accidentale. Gli strumenti come lo Scanner di credenziali di Azure DevOps e la funzionalità di analisi dei segreti di GitHub possono rilevare e avvisare automaticamente l'utente di eventuali segreti trovati nei repository. L'integrazione di questi strumenti nella pipeline CI/CD garantisce il monitoraggio continuo. È fondamentale trattare qualsiasi segreto trovato da questi strumenti di analisi come compromesso, il che significa che deve essere immediatamente revocato e sostituito per mantenere l'integrità del comportamento di sicurezza.

Sfruttare le identità gestite

Le identità gestite in Azure consentono alle applicazioni di eseguire l'autenticazione ai servizi di Azure senza archiviare le credenziali nel codice. Abilitando le identità gestite per le risorse di Azure, è possibile accedere in modo sicuro ad Azure Key Vault e ad altri servizi, riducendo la necessità di gestire manualmente i segreti. Questo approccio non solo riduce al minimo la creazione di segreti, ma riduce anche la superficie di attacco per potenziali violazioni, in quanto la responsabilità della gestione delle credenziali viene delegata alla piattaforma.

Applicare controllo di accesso granulare

Seguire il principio dei privilegi minimi applicando un controllo di accesso granulare ai segreti. Usare il controllo degli accessi in base al ruolo di Azure per assicurarsi che solo le entità autorizzate abbiano accesso a segreti specifici. Esaminare e aggiornare regolarmente le autorizzazioni di accesso per impedire l'accesso non autorizzato. È anche consigliabile implementare ruoli distinti, ad esempio utente, amministratore e revisore, per gestire l'accesso ai segreti, assicurando che solo le identità attendibili abbiano il livello di autorizzazione appropriato.

Vedere la guida al controllo degli accessi in base al ruolo di Azure Key Vault.

Ruotare regolarmente i segreti

I segreti sono soggetti a trapelare o essere esposti nel tempo. La rotazione regolare dei segreti riduce il rischio di accesso non autorizzato. È possibile ruotare i segreti in Azure Key Vault per determinati segreti. Per quelli che non possono essere ruotati automaticamente, stabilire un processo di rotazione manuale e assicurarsi che vengano eliminati quando non sono più in uso.

L'automazione del processo di rotazione dei segreti e la creazione della ridondanza nella gestione dei segreti possono garantire che la rotazione non interrompa la disponibilità del servizio. L'implementazione della logica di ripetizione dei tentativi e dei modelli di accesso simultanei nel codice consente di ridurre al minimo i problemi durante la finestra di rotazione.

Monitorare e registrare l'accesso

Abilitare la registrazione e il monitoraggio per il sistema di gestione dei segreti per tenere traccia dell'accesso e dell'utilizzo. Usare l'accesso a Key Vault e/o i servizi come Monitoraggio di Azure e Griglia di eventi di Azure, per monitorare tutte le attività correlate ai segreti. Ciò offre visibilità sugli utenti che hanno eseguito l'accesso ai segreti e consente di rilevare eventuali comportamenti sospetti o potenziali eventi imprevisti di sicurezza. La gestione di audit trail dettagliati è fondamentale per controllare e convalidare l'accesso ai segreti, che può aiutare a prevenire il furto di identità, evitare casi di ripudio e ridurre l'esposizione non necessaria.

Implementare l'isolamento di rete

Ridurre l'esposizione dei segreti implementando l'isolamento di rete. Configurare firewall e gruppi di sicurezza di rete per limitare l'accesso agli insiemi di credenziali delle chiavi. Consentire solo alle applicazioni e ai servizi attendibili di accedere ai segreti, riducendo al minimo la superficie di attacco e impedendo l'accesso non autorizzato. È inoltre consigliabile usare più insiemi di credenziali delle chiavi per creare limiti di isolamento per componenti diversi, assicurandosi che, se un componente è compromesso, non possa ottenere il controllo di altri segreti o dell'intero carico di lavoro.

Crittografare i segreti inattivi e in transito

Assicurarsi che i segreti siano crittografati sia quando sono inattivi che quando sono in transito. Azure Key Vault archivia in modo sicuro i segreti usando la crittografia envelope, in cui le chiavi DEK (Data Encryption Keys) vengono crittografate tramite chiavi di crittografia delle chiavi (KEK), offrendo un ulteriore livello di sicurezza. Questo approccio migliora la protezione dall'accesso non autorizzato. Inoltre, usare protocolli di comunicazione sicuri come HTTPS per crittografare i dati in transito tra le applicazioni e l'insieme di credenziali delle chiavi, assicurandosi che i segreti siano protetti sia durante l'archiviazione che la trasmissione.

In Azure la crittografia dei dati inattivi viene implementata in vari servizi usando la crittografia AES 256, mentre i dati in transito vengono protetti tramite TLS e MACsec per impedire l'accesso non autorizzato durante la trasmissione. Queste procedure di crittografia forniscono una protezione completa per i dati, sia che vengano archiviati o trasmessi tra sistemi. Per altri dettagli, vedere Crittografia dei dati inattivi e in transito.

Distribuzione sicura dei segreti

Quando si distribuiscono segreti, assicurarsi che siano condivisi in modo sicuro all'interno e all'esterno dell'organizzazione. Usare gli strumenti progettati per la condivisione sicura e includere le procedure di ripristino dei segreti nei piani di ripristino di emergenza. Se una chiave viene compromessa o persa, deve essere rigenerata immediatamente. Per migliorare ulteriormente la sicurezza, usare chiavi distinte per ogni consumer anziché condividere le chiavi, anche se hanno modelli di accesso simili. Questa procedura semplifica la gestione e la revoca delle chiavi, assicurandosi che le chiavi compromesse possano essere revocate senza influire sugli altri utenti.

Procedure consigliate specifiche del servizio

I singoli servizi possono avere procedure consigliate aggiuntive e indicazioni per la protezione dei segreti. Di seguito sono riportati alcuni esempi.

Passaggi successivi

Ridurre al minimo il rischio di sicurezza è una responsabilità condivisa. È necessario essere proattivi nell'adottare misure per proteggere i carichi di lavoro. Altre informazioni sulla responsabilità condivisa nel cloud.

Per altre procedure di sicurezza consigliate da usare nella progettazione, distribuzione e gestione di soluzioni cloud tramite Azure, vedere Procedure consigliate e modelli per la sicurezza di Azure.