Panoramica sulla sicurezza

Questa pagina fornisce una panoramica delle funzionalità di sicurezza 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 fornire una per l'esecuzione di servizi di produzione.

Ingombro minimo del sistema operativo

Questo è il fulcro della sicurezza di Container-Optimized OS. Dal giorno Container-Optimized OS è ottimizzato per eseguire container e pacchetti di container con le proprie dipendenze, possiamo tagliare i pacchetti non necessari e ridurre al minimo Superficie di attacco del sistema operativo.

File system root immutabile e avvio verificato

Il file system root di Container-Optimized OS viene sempre montato in sola lettura. Inoltre, il suo checksum viene calcolato al momento della build e verificato dal kernel a ogni avvio. Questo meccanismo impedisce agli aggressori di "possedere" il tramite modifiche locali permanenti. Inoltre, molti altri supporti sono non eseguibili per impostazione predefinita. Per maggiori dettagli, vedi File system.

Configurazione stateless

Sebbene avere un file system root di sola lettura sia un vantaggio per la sicurezza, difficile da usare. Ad esempio, dobbiamo essere in grado di creare e aggiungere utenti per accedere al sistema. Per risolvere il problema, personalizziamo il filesystem di primo livello in modo che /etc/ sia scrivibile, ma senza stato. Ciò consente di scrivere di configurazione in fase di esecuzione, ma queste non vengono mantenute si riavvia. Di conseguenza, ogni volta che un nodo Container-Optimized OS si riavvia, viene avviato una nuova lista. Determinati dati, ad esempio relativi all'account home directory, log e Docker rimangono dopo i riavvii perché non fanno parte del file system radice.

Kernel rafforzato dalla sicurezza

Container-Optimized OS abilita diverse funzionalità kernel di protezione della sicurezza, tra cui Integrity Measurement Architecture (IMA), Audit, Tabella delle pagine del kernel Isolation (KPTI) e alcuni moduli di sicurezza Linux (LSM) da Chromium OS. Container-Optimized OS supporta inoltre funzionalità di sicurezza come seccomp e AppArmor che permettono 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 caratteristiche. Sono inclusi, ad esempio, sysctl impostazioni che disattivano ptrace e BPF senza privilegi, bloccano il firewall e così via. Questi valori predefiniti, se applicati automaticamente a un parco risorse di istanze, contribuiscono a proteggere l'intero cluster, il progetto e l'organizzazione.

Aggiornamenti automatici

La funzionalità di aggiornamenti automatici di Container-Optimized OS consente la consegna tempestiva le patch di sicurezza alle VM in esecuzione. Quando Container-Optimized OS è gestito e Google Kubernetes Engine, upgrade automatici dei nodi trova un equilibrio tra sicurezza e stabilità.

Filesystem

Di seguito è riportato un elenco di percorsi nel file immagine dei nodi Container-Optimized OS sistema, oltre alle loro proprietà e all'utilizzo consigliato:

Percorso Proprietà Finalità
/
  • sola lettura
  • executable
Il file system radice è montato in sola lettura per mantenere l'integrità. La il kernel verifica l'integrità del file system radice durante l'avvio e si rifiuta di avviarlo in caso di errori.
/home
/var
  • accessibile in scrittura
  • non eseguibile
  • stateful
Questi percorsi sono pensati per archiviare dati che persistono per tutta la durata del il disco di avvio. Sono montati da /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • accessibile in scrittura
  • executable
  • stateful
Questi percorsi sono directory di lavoro per i pacchetti Compute Engine (ad esempio, account Manager), Docker e Toolbox rispettivamente.
/var/lib/cloud
  • accessibile in scrittura
  • executable
  • stateless
  • tmpfs
Questo percorso è la directory di lavoro del pacchetto cloud-init.
/etc
  • accessibile in scrittura
  • executable
  • stateless
  • tmpfs
In genere contiene la configurazione (ad esempio, systemd servizi definiti tramite cloud-init). Ti consigliamo di acquisire lo stato desiderato delle istanze cloud-init, poiché cloud-init viene applicato quando quando viene creata un'istanza e quando viene è stata riavviata.
/tmp
  • scrivibile
  • non eseguibile
  • stateless
  • tmpfs
In genere viene utilizzato come spazio temporaneo e non deve essere usato per archiviare e permanenti.
/mnt/disks
  • accessibile in scrittura
  • executable
  • stateless
  • tmpfs
Puoi montare dischi permanenti nelle directory all'interno di /mnt/disks.

Firewall

Per impostazione predefinita, Container-Optimized OS è configurato per eliminare tutte le connessioni TCP/UDP in entrata tranne SSH sulla porta 22. Consulta la sezione Configurazione del firewall host per scoprire come modificare l'impostazione predefinita per aprire altre porte.

Accesso alle istanze

Per impostazione predefinita, Container-Optimized OS non contiene alcun utente accessibile . Gli account utente e le chiavi SSH sono gestiti metadati dell'istanza o del progetto o OS Login. OS Login consente di gestire l'accesso alle istanze utilizzando IAM. Garantisce un'esperienza un controllo dell'accesso granulare (sudo e non sudo), chiavi SSH identificabili e criteri di accesso dell'organizzazione.

Il daemon SSH è configurato in modo da non consentire l'autenticazione basata su password e per non consentire 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 nel sistema operativo stesso, Il team Container-Optimized OS prende sul serio anche 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 in Chromium OS che in Google nel in generale.

Creato dal codice sorgente di Google

Ogni pacchetto in Container-Optimized OS, incluso il kernel Linux stesso, viene compilato dal codice dei repository di ChromiumOS. Ciò significa che sappiamo cosa contiene il sistema operativo, chi l'ha registrato e quale versione e così via. Questo ci consente inoltre di applicare rapidamente patch e aggiornamenti a qualsiasi pacchetto scoperta di una vulnerabilità, a qualsiasi livello.

Analisi e risposta continue delle vulnerabilità (CVE)

Un sistema di scansione CVE ci avvisa ogni volta che viene scoperta una vulnerabilità nella o qualsiasi pacchetto del sistema operativo. Si tratta dello stesso sistema utilizzato per rilevare le vulnerabilità in Android e Chromium OS. Il team di Container-Optimized OS risponde con priorità per rilasciare le release con patch. Il team di Container-Optimized OS collabora anche con il team di risposta agli incidenti di Google per rendere rapidamente disponibili patch di sicurezza più ampie in Container-Optimized OS.

Procedura di test e qualifica

Prima di pubblicare una nuova immagine di Container-Optimized OS su Google Cloud, la testiamo a più livelli, tra cui il test del fuzz del kernel syzkaller test di Kubernetes a livello di cluster, test di integrazione con le funzionalità di Compute Engine e vari benchmark di rendimento. Ciò garantisce la stabilità e la qualità le nostre nuove uscite.