Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Una sfida significativa nel funzionamento di un sistema complesso come Microsoft Azure garantisce che solo il software autorizzato sia in esecuzione nel sistema. Il software non autorizzato presenta diversi rischi per qualsiasi azienda:
- Rischi per la sicurezza, ad esempio strumenti di attacco dedicati, malware personalizzato e software di terze parti con vulnerabilità note
- Rischi di conformità quando il processo di gestione delle modifiche approvato non viene usato per introdurre un nuovo software
- Rischio di qualità derivato da software sviluppato esternamente, che potrebbe non soddisfare i requisiti operativi dell'azienda
Azure affronta la stessa sfida con una complessità significativa. Migliaia di server eseguono software che migliaia di ingegneri sviluppano e mantengono. Questa scala presenta una grande superficie di attacco che i processi aziendali da soli non possono gestire.
Aggiunta di un controllo di autorizzazione
Azure utilizza un solido processo di engineering che introduce controlli sulla sicurezza, sulla conformità e sulla qualità del software distribuito. Questo processo include il controllo degli accessi al codice sorgente, revisioni del codice tra pari, analisi statica per vulnerabilità di sicurezza, il Security Development Lifecycle (SDL) di Microsoft e test funzionali e di qualità. Microsoft deve garantire che il software distribuito scorra attraverso questo processo. L'integrità del codice aiuta a ottenere questa garanzia.
Integrità del codice come controllo di autorizzazione
L'integrità del codice è un servizio a livello kernel che è diventato disponibile a partire da Windows Server 2016. L'integrità del codice può applicare criteri di controllo di esecuzione rigorosi ogni volta che viene caricato un driver o una libreria collegata dinamicamente (DLL), viene eseguito un file binario eseguibile o viene eseguito uno script. Esistono sistemi simili, ad esempio DM-Verity, per Linux. Una policy di integrità del codice consiste in un insieme di indicatori di autorizzazione, sia certificati di firma di codice sia hash di file SHA-256 , che il kernel corrisponde prima di caricare o eseguire un binario o uno script.
L'integrità del codice consente agli amministratori di sistema di definire una policy che autorizza solo binari e script firmati da determinati certificati o che corrispondono a specifici hash SHA-256. Il kernel applica questo criterio bloccando l'esecuzione di tutto ciò che non soddisfa i criteri impostati.
Una policy di integrità del codice può bloccare software critici in produzione e causare un'interruzione a meno che la policy non sia perfettamente corretta. Data questa preoccupazione, potresti chiederti perché il monitoraggio della sicurezza non sia sufficiente per rilevare l'esecuzione non autorizzata di software. L'integrità del codice ha una modalità audit che, invece di impedire l'esecuzione, può avvisare quando viene eseguito software non autorizzato. L'avviso può aggiungere molto valore nell'affrontare i rischi di conformità. Tuttavia, per rischi di sicurezza come ransomware o malware personalizzati, ritardare la risposta anche solo di pochi secondi può fare la differenza tra protezione e un avversario che acquisti una presenza costante nella tua flotta. In Azure, Microsoft investe significativamente per gestire qualsiasi rischio che l'integrità del codice possa contribuire a un'interruzione che possa influenzare il cliente.
Processo di compilazione
Come descritto in precedenza, il sistema di build Azure dispone di un ricco set di test per garantire che le modifiche software siano sicure e conformi. Dopo che una build prosegue tramite validazione, il sistema di compilazione la firma usando un certificato di build Azure. Il certificato indica che la build è passata attraverso l'intero processo di gestione delle modifiche. L'ultimo test che la build affronta è la Validazione della Firma di Codice (CSV). CSV conferma che i binari appena costruiti rispettano la policy di integrità del codice prima che Microsoft li distribuisca in produzione. Questa validazione conferisce a Microsoft un'elevata fiducia che i binari firmati in modo errato non causeranno un'interruzione che possa influenzare il cliente. Se il CSV trova un problema, la build si rompe e gli ingegneri competenti vengono chiamati per indagare e risolvere il problema.
Sicurezza durante la distribuzione
Anche se Azure esegue CSV per ogni compilazione, qualche cambiamento o incoerenza in produzione potrebbe comunque causare un'interruzione legata all'integrità del codice. Ad esempio, una macchina potrebbe eseguire una vecchia versione della policy di integrità del codice, oppure potrebbe trovarsi in uno stato malsano che produce falsi positivi nell'integrità del codice. Su scala Azure, Microsoft ha visto di tutto. Azure continua a proteggere dal rischio di interruzione durante la distribuzione.
Tutte le modifiche in Azure devono essere distribuite attraverso una serie di fasi. Le prime fasi sono istanze interne di test Azure. La fase successiva è destinata solo ad altri team di prodotto Microsoft. La fase finale serve i clienti di terze parti. Quando Azure distribuisce una modifica, questa passa attraverso ogni fase, una dopo l'altra, e si arresta per valutare lo stato di integrità della fase. Se il cambiamento non ha un impatto negativo, passa alla fase successiva. Se Microsoft apporta una modifica sbagliata a una policy di integrità del codice, la distribuzione a stadi rileva la modifica e la annulla.
Risposta agli eventi imprevisti
Anche con questa protezione a livelli, un server della flotta potrebbe bloccare software correttamente autorizzato e causare un problema a contatto con il cliente, uno degli scenari peggiori di Microsoft. L'ultimo livello di difesa è l'indagine umana. Ogni volta che l'integrità del codice blocca un file, genera un avviso affinché gli ingegneri reperibili possano indagare. L'allarme consente agli ingegneri di avviare indagini di sicurezza e intervenire, sia che il problema sia un indicatore di un attacco reale, di un falso positivo o di un'altra situazione che impatta il cliente. Questo avviso riduce al minimo il tempo necessario per mitigare eventuali problemi legati all'integrità del codice.
Passaggi successivi
Per saperne di più su come Microsoft guida l'integrità e la sicurezza della piattaforma, consulta: