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.
- Gestione API: usare i valori denominati nei criteri di Gestione API di Azure con l'integrazione di Key Vault
- Servizio app: usare i riferimenti a Key Vault per Servizio app e Funzioni di Azure
- Gateway applicazione: configurare un gateway applicazione con la terminazione TLS tramite il portale di Azure
- Automazione: gestire le credenziali in Automazione di Azure
- Configurazione app di Azure: Esercitazione: usare i riferimenti a Key Vault in un'app core ASP.NET
- Servizio Azure Bot: crittografia del servizio Azure Bot per i dati inattivi
- Centro di Azure per soluzioni SAP: Centro di Azure per soluzioni SAP - Distribuzione - Preparare la rete per la distribuzione
- Gateway di comunicazione di Azure: creare e archiviare segreti
- Servizio di comunicazioni di Azure: creare e gestire i token di accesso
- Database di Azure per PostgreSQL - Server flessibile: Database di Azure per PostgreSQL - Crittografia dei dati del server flessibile con una chiave gestita dal cliente
- Azure Databricks: integrazione di Key Vault in Databricks
- Azure DevTest Labs: abilitare le identità gestite assegnate dall'utente nelle macchine virtuali lab in Azure DevTest Labs
- Frontdoor di Azure: segreti di Frontdoor di Azure
- Azure HDInsight nel servizio Azure Kubernetes: Prerequisiti delle risorse - Creare Azure Key Vault
- Azure Information Protection: dettagli per il supporto di Azure Information Protection Key Vault
- Servizio Azure Kubernetes: archivio segreti CSI
- Applicazioni gestite di Azure: accedere al segreto di Key Vault durante la distribuzione di applicazioni gestite di Azure
- Azure OpenAI: sviluppare applicazioni di Servizi di Azure AI con Key Vault
- Azure Pipelines: protezione dei segreti in Azure Pipelines
- Azure Purview: uso di credenziali per l'autenticazione dell'origine in Microsoft Purview
- Servizio Azure SignalR: informazioni di riferimento sul segreto di Key Vault nelle impostazioni del modello di URL
- Bus di servizio di Azure: autenticare e autorizzare un'applicazione con Microsoft Entra ID per accedere alle entità del bus di servizio di Azure
- Azure Stack Edge: gestire i segreti di Azure Stack Edge con Azure Key Vault
- Hub di Azure Stack: ruotare i segreti
- Azure Web PubSub: aggiungere un certificato personalizzato
- Backup: configurare un insieme di credenziali per la crittografia usando chiavi gestite dal cliente
- Servizi cognitivi: sviluppare applicazioni di Servizi cognitivi di Azure con Key Vault
- Data Factory: archiviare le credenziali in Azure Key Vault
- ExpressRoute: configurare la crittografia MACsec per ExpressRoute Direct.
- Funzioni; usare i riferimenti a Key Vault per Servizio app e Funzioni di Azure
- Key Vault: informazioni sui segreti di Azure Key Vault
- App per la logica: impostazioni app standard per App per la logica
- Servizio Machine Learning: usare i segreti delle credenziali di autenticazione nei processi di Azure Machine Learning
- IaaS SQL: configurare l'integrazione di Azure Key Vault per SQL Server nelle macchine virtuali di Azure (Resource Manager)
- Archiviazione: gestire le chiavi degli account di archiviazione con Key Vault e l'interfaccia della riga di comando di Azure
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.