La scalabilità richiesta oggi ai moderni e dinamici ambienti IT si può ottenere solo attraverso l’adozione spinta di tecnologie di IT Automation. Con tale automazione, anche detta automazione dell’infrastruttura, si intende l’uso di software per creare istruzioni e processi ripetibili con i quali sostituire o ridurre l’interazione del personale con i sistemi (Infrastructure-as-Code).
Ma se da un lato si procede inesorabilmente verso una semplificazione della gestione IT, dall’altro questa tendenza rende necessario avviare nuove riflessioni e approcci alla cyber security.
Indice degli argomenti
La cloud automation nella riorganizzazione delle infrastrutture
Una fondamentale riorganizzazione delle infrastrutture passa attraverso la cosiddetta Cloud automation, che consente di plasmare i sistemi con un approccio Application-driven, ossia la considerazione privilegiata dei requisiti applicativi nella creazione e gestione degli ambienti, sin dalle prime fasi dello sviluppo e durante la produzione.
Con un punto di vista opposto e complementare, si parla anche di applicazioni cloud-native. D’altra parte, l’uso di container applicativi è indispensabile per fornire oggetti fungibili e facilmente migrabili agli ambienti cloud, organizzati in cluster su cui effettuare la loro orchestrazione.
Si parla oggi, quindi, delle cosiddette “4C” quando ci si riferisce alle entità fondamentali e concentriche dei sistemi IT: Code, Container, Cluster e Cloud.
Container cloud-native security: i rischi cyber
L’uso di container applicativi ha aperto la strada a nuove architetture software radicalmente modulari e sezionabili in elementi a granularità finissima, detti microservizi. Questi si distribuiscono e si replicano liberamente su infrastrutture eterogenee e ubique, condividendo il kernel del sistema ospitante e consentendo deployment e riconfigurazioni veloci ed efficaci.
Se da un lato la proliferazione dei container impone una loro orchestrazione razionale, dall’altro essa spiana la strada ad attacchi basati su kernel exploitation, dal momento che la condivisione del kernel del sistema host aumenta enormemente la superficie di attacco.
Sfruttando la vulnerabilità di un singolo container è possibile fare breccia in tutto l’host, coinvolgendo altre applicazioni e sistemi. D’altro canto, anche attacchi di tipo Denial of Service (DoS) diventano più efficaci.
Un container non ha restrizioni rispetto alle risorse di cui può dinamicamente disporre. Senza opportune limitazioni all’utilizzo, le risorse di un intero host possono essere saturate.
C’è poi da considerare che i container che ospitano applicazioni con bug o vulnerabilità possono essere rotti per attuare privilege escalation, con cui un attaccante può acquisire accesso illimitato ad una macchina ospitante. Del resto, le immagini di container stesse potrebbero essere manomesse e infettate con malware all’origine.
La sicurezza come conformità adattiva: l’approccio DevOps
Come proteggere ambienti costruiti con un simile livello di complessità e fragilità? La nostra risposta è di adottare le stesse armi dell’IT automation e dell’approccio DevOps qui descritto.
La conformità, e in particolare una conformità adattiva, è quanto riteniamo occorra per far fronte in modo nuovo ed efficace alla crescente minaccia delle azioni malevole intraprese dagli attaccanti nello sfruttare le vulnerabilità dei sistemi.
Con questa definizione ci riferiamo all’aderenza agli standard industriali, alla tensione verso buone pratiche in incessante evoluzione, ad una continua ricerca di conformità delle componenti IT e delle loro configurazioni, attraverso i diversi livelli di astrazione delle nuove architetture. Diversamente dal passato, tale ricerca può essere facilmente condotta in modo sistematico.
Una difesa dei cluster, ad esempio, deve tener conto degli accessi in rete alle API dei nodi master, che vanno ristretti ad indirizzi IP controllati. L’accesso ai nodi worker dovrebbe essere configurato per accettare solo connessioni dai master via rete, controllate e limitate a specifiche porte.
Per difendere ciò che è dentro i cluster, devono essere implementati meccanismi autorizzativi RBAC (Resource Based Access Control), con gestione opportunamente cifrata di chiavi e credenziali. Policy di sicurezza a livello di Pod (il carrier di container sui cluster) vanno inoltre progettate e implementate.
I container in esecuzione devono essere scansionati per ricercare vulnerabilità applicative e le loro immagini gestite con meccanismi di controllo basati su firma digitale.
Andrebbe scoraggiato e disabilitato l’uso di utenze privilegiate, purtroppo ancora molto in voga anche in immagini ufficiali di software di largo consumo.
Sicurezza come conformità adattiva: la cyber security non è un optional
In buona sostanza, la sicurezza deve diventare parte del processo DevOps. Introdotto per velocizzare il rilascio di sofware, esso può essere usato anche per integrare i controlli di sicurezza nelle pipeline di CI/CD (Continuous Integration/Continuous Deployment).
I singoli passaggi e le loro sequenze possono essere codificati con sintassi al contempo human-readable e machine-readable.
La cyber security non va considerata un optional da aggiungere al DevOps, ma una sua parte imprescindibile. Solo così le applicazioni possono essere rilasciate con un determinato standard di sicurezza che soddisfi obiettivi predefiniti.
In base alla conformità adattiva, tale standard crescerà di pari passo negli ambienti di sviluppo, di test e di produzione, incorporando adattativamente i rimedi alle vulnerabilità che vengono incessantemente rilevate ed eliminate.
Non a caso si stanno diffondendo tool di validazione di immagini di container per Kubernetes basati su definizione di policy, come ad esempio il software Open Source Anchore, che aiuta ad implementare una CI/CD security.
D’altro canto, i container in esecuzione possono essere ispezionati e analizzati. Non c’è bisogno di particolari agent, basterebbe monitorare i cambiamenti del kernel Linux, ad esempio utilizzando un altro fondamentale tool Open Source, SysDig.
Audit di sicurezza, scansione di immagini, rilevazione di chiavi e credenziali incustodite, devono essere presi in considerazione nella progettazione di meccanismi di policy enforcement e certificazione. Ciò è indispensabile per tenere in produzione workload cloud nativi con confidenza.
Conclusione
Le infrastrutture IT diventano, dunque, sempre più complesse da gestire. Nuove soluzioni software-defined semplificano e automatizzano la loro gestione, riducendo i costi di implementazione.
Di contro, per migliorare l’affidabilità e aumentare la sicurezza, occorre attuare una consapevole e perdurante ricerca della conformità a regole e best practice in costante divenire.
Una conformità adattiva, ossia la capacità di mantenere un assetto conservativo (funzionamento corretto e continuativo del business) nel tempo, nonostante scenari di attacco costantemente mutevoli e dinamici.