Questa pagina fornisce una panoramica delle funzionalità di sicurezza di Container-Optimized OS in esecuzione su Google Cloud.
Sicurezza del sistema operativo
Basato su Chromium OS, Container-Optimized OS di Google implementa diversi principi di progettazione della sicurezza per offrire una piattaforma ben configurata per l'esecuzione dei servizi di produzione.
Ingombro minimo del sistema operativo
Questo è il fulcro della sicurezza Container-Optimized OS. Poiché Container-Optimized OS è ottimizzato per eseguire container e pacchetti che pacchettizzano le proprie dipendenze, possiamo ridurre i pacchetti non necessari e ridurre così al minimo la superficie di attacco del sistema operativo.
File system radice immutabile e avvio verificato
Il file system radice di Container-Optimized OS viene sempre montato in sola lettura. Inoltre, il checksum viene calcolato al momento della compilazione e verificato dal kernel a ogni avvio. Questo meccanismo impedisce agli utenti malintenzionati di "possedere" la macchina attraverso modifiche locali permanenti. Inoltre, molti altri montaggi non sono eseguibili per impostazione predefinita. Per maggiori dettagli, consulta File system.
Configurazione stateless
Anche se avere un file system radice di sola lettura è utile per la sicurezza, rende il sistema difficile da usare. Ad esempio, dobbiamo essere in grado di creare e aggiungere
utenti per accedere al sistema. Per risolvere questo problema, personalizziamo il file system
principale in modo che /etc/
sia accessibile in scrittura ma stateless. Questo consente di scrivere
le impostazioni di configurazione in fase di esecuzione, ma queste non vengono mantenute durante i
riavvii. Pertanto, ogni volta che un nodo Container-Optimized OS si riavvia, inizia da uno slate chiaro. Alcuni dati, come le home directory, i log e le immagini Docker degli utenti, rimangono invariati dopo i riavvii, poiché non fanno parte del file system radice.
Kernel con protezione avanzata
Container-Optimized OS abilita diverse funzionalità del kernel per rafforzare la sicurezza, tra cui l'Integrity Measurement Architecture (IMA), Audit, l'isolamento della tabella delle pagine del kernel (KPTI) e alcuni moduli di sicurezza Linux (LSM) da Chromium OS. Inoltre, Container-Optimized OS supporta funzionalità di sicurezza come seccomp e AppArmor che consentono di applicare criteri di sicurezza più granulari.
Valori predefiniti incentrati sulla sicurezza
Container-Optimized OS offre un ulteriore livello di protezione, fornendo valori predefiniti incentrati sulla sicurezza per diverse funzionalità. Ciò include, ad esempio, impostazioni sysctl che disabilitano ptrace e BPF senza privilegi, bloccano il firewall e così via. Se applicati automaticamente a un parco risorse, questi valori predefiniti contribuiscono a proteggere l'intero cluster, il progetto e l'organizzazione.
Aggiornamenti automatici
La funzionalità di aggiornamento automatico di Container-Optimized OS consente la distribuzione tempestiva delle patch di sicurezza alle VM in esecuzione. Quando Container-Optimized OS è gestito da Kubernetes Engine, gli upgrade automatici dei nodi trovano un equilibrio tra sicurezza e stabilità.
Filesystem
Di seguito è riportato un elenco dei percorsi nel file system di immagini dei nodi di Container-Optimized OS, insieme alle relative proprietà e all'utilizzo consigliato:
Percorso | Proprietà | Finalità |
---|---|---|
/ |
|
Il file system principale è montato in sola lettura per mantenere l'integrità. Il kernel verifica l'integrità del file system radice di integrità durante l'avvio e si rifiuta di avviarlo in caso di errori. |
/home /var |
|
Questi percorsi sono destinati all'archiviazione dei dati persistenti per tutta la durata del disco di avvio. Sono montati da /mnt/stateful_partition . |
/var/lib/google /var/lib/docker /var/lib/toolbox |
|
Questi percorsi sono directory di lavoro per i pacchetti di Compute Engine, ad esempio il servizio di gestione degli account, Docker e Toolbox rispettivamente. |
/var/lib/cloud |
|
Questo percorso è la directory di lavoro del pacchetto cloud-init . |
/etc |
|
In genere memorizza la configurazione (ad esempio, i servizi systemd definiti tramite cloud-init ).
È una buona idea acquisire lo stato desiderato delle istanze in cloud-init , in quanto cloud-init viene applicato quando un'istanza viene appena creata e quando viene riavviata. |
/tmp |
|
In genere viene utilizzato come spazio temporaneo e non deve essere utilizzato per archiviare dati permanenti. |
/mnt/disks |
|
Puoi montare i dischi permanenti in directory in /mnt/disks . |
Firewall
Per impostazione predefinita, Container-Optimized OS è configurato in modo da eliminare tutte le connessioni TCP/UDP in entrata, ad eccezione di SSH, sulla porta 22. Consulta Configurazione del firewall host per informazioni su come modificare l'impostazione predefinita per aprire più porte.
Accesso all'istanza
Per impostazione predefinita, Container-Optimized OS non contiene account utente accessibili. Gli account utente e le chiavi SSH sono gestiti tramite i metadati dell'istanza o del progetto o OS Login. OS Login ti consente di gestire l'accesso alle istanze mediante IAM. Consente un controllo dell'accesso più granulare (sudo o non sudo), chiavi SSH identificabili e criteri di accesso dell'organizzazione.
Il daemon SSH è configurato per non consentire l'autenticazione basata su password e gli accessi root. Tuttavia, ciò non impedisce agli utenti di ottenere i privilegi di root utilizzando sudo dopo l'accesso, a meno che l'account utente non sia gestito con OS Login.
Sicurezza dell'infrastruttura
Oltre a varie funzionalità di protezione avanzata del sistema operativo, il team di Container-Optimized OS prende sul serio la catena di fornitura del software e dà priorità alla sicurezza dell'infrastruttura durante lo sviluppo, la creazione e il deployment di immagini, sulla base di anni di esperienza sia di Chromium OS che di Google in generale.
Creato da Google
Ogni pacchetto in Container-Optimized OS, incluso il kernel Linux stesso, viene creato a partire dal codice sorgente dei repository di codice ChromiumOS. Ciò significa che sappiamo esattamente cosa succede nel sistema operativo, chi l'ha eseguito il check-in, in quale versione è stato introdotto e così via. Ciò ci permette anche di applicare rapidamente le patch e aggiornare qualsiasi pacchetto qualora venga rilevata una vulnerabilità, a qualsiasi livello.
Analisi e risposta continue delle vulnerabilità (CVE)
Un sistema di analisi CVE ci avvisa ogni volta che viene rilevata una vulnerabilità nel kernel o in qualsiasi pacchetto del sistema operativo. Si tratta dello stesso sistema utilizzato per rilevare le vulnerabilità in Android e Chromium OS. Il team Container-Optimized OS risponde con priorità alle release con patch. Il team di Container-Optimized OS collabora anche con il team di risposta agli incidenti di Google per rendere disponibili rapidamente patch di sicurezza più ampie in Container-Optimized OS.
Procedura di test e qualifica
Prima di pubblicare una nuova immagine di Container-Optimized OS in Google Cloud, la testiamo a più livelli, tra cui il test fuzz del kernel da parte di syzkaller, i test Kubernetes a livello di cluster, i test di integrazione con le funzionalità di Compute Engine e diversi benchmark delle prestazioni. Ciò garantisce la stabilità e la qualità delle nostre release.