È uscito Bottlerocket, una distribuzione Linux minimalista per l'esecuzione di container. Ecco le informazioni più importanti.

È uscito Bottlerocket, una distribuzione Linux minimalista per l'esecuzione di container. Ecco le informazioni più importanti.

Azienda Amazon ha annunciato sul rilascio finale Bottlerocket — una distribuzione specializzata per l'esecuzione di container e la loro gestione efficiente.

Bottlerocket (per inciso, questo è il termine per i piccoli razzi artigianali a propellente solido) non è il primo sistema operativo per container, ma è molto probabile che diventi ampiamente utilizzato grazie all'integrazione predefinita con i servizi AWS. Anche se il sistema è orientato verso il cloud di Amazon, il codice sorgente aperto consente di compilarlo ovunque: localmente su un server, su Raspberry Pi, in qualsiasi cloud concorrente e anche in ambienti senza container.

È una valida alternativa alla distribuzione CoreOS, che è stata messa da parte da Red Hat.

In effetti, la divisione Amazon Web Services ha già Amazon Linux, che recentemente è stato aggiornato alla seconda versione: è una distribuzione multiuso che può essere eseguita in un container Docker o con hypervisor Linux KVM, Microsoft Hyper-V e VMware ESXi. È stata ottimizzata per funzionare nel cloud AWS, ma con l'uscita di Bottlerocket si consiglia a tutti di effettuare l'upgrade al nuovo sistema, che è più sicuro, moderno e consuma meno risorse.

AWS ha annunciato Bottlerocket a marzo 2020. Ha subito riconosciuto che non si tratta del primo "Linux per container", citando come fonti di ispirazione CoreOS, Rancher OS e Project Atomic. Gli sviluppatori hanno affermato che il sistema operativo è "il risultato delle lezioni apprese da molti anni di operazioni di servizi su larga scala in Amazon, e basato sull'esperienza accumulata negli ultimi sei anni su come eseguire container".

Estremo minimalismo

Linux è stato depurato da tutto ciò che non è necessario per eseguire container. Questo design, secondo l'azienda, riduce la superficie di attacco.

Ciò significa che nella base del sistema ci sono meno pacchetti installati, semplificando il supporto e l'aggiornamento del sistema operativo, oltre a ridurre la probabilità di problemi a causa delle dipendenze, abbattendo l'uso delle risorse. In pratica, tutto funziona all'interno di container separati, mentre il sistema di base è praticamente nudo.

Amazon ha anche rimosso tutte le shell e gli interpreti, escludendo il rischio di un loro utilizzo o di un aumento accidentale dei privilegi da parte degli utenti. Nell'immagine di base, per motivi di minimalismo e sicurezza, mancano una shell a riga di comando, un server SSH e linguaggi interpretati come Python. Gli strumenti per l'amministratore sono stati spostati in un container di servizio separato, che è disattivato per impostazione predefinita.

La gestione del sistema è prevista in due modi: tramite API e orchestrazione.

Invece di un gestore di pacchetti che aggiorna singole parti del software, Bottlerocket scarica un'immagine completa del file system e riavvia su di essa. In caso di guasto del boot, ritorna automaticamente alla versione precedente, mentre un guasto del carico di lavoro può avviare un rollback manualmente (comando tramite API).

Framework TUF (The Update Framework) scarica aggiornamenti basati su immagini in partizioni alternative o 'smontate'. Sono dedicati due partizionamenti del disco al sistema, uno dei quali contiene il sistema attivo e sull'altro viene copiato l'aggiornamento. Il partizionamento radice è montato in modalità di sola lettura, mentre il partizionamento /etc è montato con un file system in memoria tmpfs e ripristina lo stato originale dopo il riavvio. Modifiche dirette ai file di configurazione in /etc non sono supportate: per conservare le impostazioni, è consigliabile utilizzare l'API o esternalizzare le funzionalità in container separati.

È uscito Bottlerocket, una distribuzione Linux minimalista per l'esecuzione di container. Ecco le informazioni più importanti.
Schema di aggiornamento tramite API

Sicurezza

I container sono creati attraverso i meccanismi di base del kernel Linux — cgroups, spazi dei nomi e seccomp, e per il controllo degli accessi forzato, cioè per un'ulteriore isolamento, viene utilizzato SELinux in modalità "enforcing".

Per impostazione predefinita, sono attive politiche per la separazione delle risorse tra container e kernel. I binari sono protetti da flag, affinché utenti o programmi non possano eseguirli. E se qualcuno riesce a penetrare nel file system, Bottlerocket offre uno strumento per controllare e monitorare qualsiasi modifica apportata.

La modalità "boot verificato" è implementata tramite la funzione device-mapper-verity (dm-verity), che controlla l'integrità della partizione radice durante il boot. AWS descrive dm-verity come "una funzione del kernel Linux che fornisce verifiche di integrità per prevenire l'esecuzione di malware nel sistema operativo, come la riscrittura del software di sistema principale".

È presente anche un filtro eBPF (extended BPF, sviluppo di Aleksej Starovojtov), che consente di sostituire i moduli del kernel con programmi BPF più sicuri per operazioni di sistema a basso livello.

Modello di esecuzione
Impostato dall'utente
Compilazione
Sicurezza
Modalità di guasto
Accesso alle risorse

Utente
un task

qualsiasi
privilegi utente
interruzione dell'esecuzione
chiamata di sistema, fault

Il kernel
un task
no
statico
no
panic del kernel
diretta

BPF
evento

JIT, CO-RE
verifica, JIT
messaggio di errore
helper limitati

La differenza tra BPF e il normale codice a livello utente o kernel, fonte

AWS ha dichiarato che Bottlerocket "applica un modello operativo che aumenta ulteriormente la sicurezza, impedendo l'accesso ai server di produzione con privilegi di amministratore" e "è adatto per grandi sistemi distribuiti, nei quali è limitato il controllo su ogni singolo host".

Per gli amministratori di sistema è previsto un contenitore per amministratori. Tuttavia, AWS non ritiene che gli amministratori debbano frequentemente lavorare all'interno di Bottlerocket: "Il login in un singolo istanza di Bottlerocket è concepito per operazioni poco frequenti: debugging avanzato e risoluzione dei problemi", - scrivono sviluppatori.

Linguaggio Rust

L'cella OS sopra il kernel è principalmente scritta in Rust. Questo linguaggio, per sua natura, riduce la possibilità di accesso non sicuro alla memoria, così come elimina le condizioni di competizione tra thread.

Durante la compilazione predefinita vengono applicati i flag --enable-default-pie e --enable-default-ssp per abilitare la randomizzazione dello spazio degli indirizzi dei file eseguibili (position-independent executable, PIE) e protezione contro il overflow dello stack.

Per i pacchetti C/C++, vengono ulteriormente attivati i flag -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS e -fstack-clash-protection.

Oltre a Rust e C/C++, alcuni pacchetti sono scritti in Go.

Integrazione con i servizi AWS

La differenza rispetto ad altri sistemi operativi containerizzati è che Amazon ha ottimizzato Bottlerocket per funzionare su AWS e per integrarsi con altri servizi AWS.

Il più popolare orchestratore di container è Kubernetes, quindi AWS ha implementato l'integrazione con il proprio servizio Enterprise Kubernetes (EKS). Gli strumenti di orchestrazione sono in un contenitore di gestione separato bottlerocket-control-container, che è incluso per impostazione predefinita e gestito tramite API e AWS SSM Agent.

Sarà interessante vedere se Bottlerocket decollerà, considerando il fallimento di alcune iniziative simili in passato. Ad esempio, PhotonOS di Vmware si è rivelato non richiesto, e RedHat ha acquistato CoreOS e ha chiuso il progetto, che era considerato un pioniere in questo campo.

L'integrazione di Bottlerocket con i servizi AWS rende questo sistema unico nel suo genere. Probabilmente, questa è la ragione principale per cui alcuni utenti potrebbero preferire Bottlerocket ad altre distribuzioni, come CoreOS o Alpine. Il sistema è progettato in origine per funzionare con EKS ed ECS, ma ripetiamo che non è obbligatorio. Innanzitutto, Bottlerocket può essere configurato autonomamente essere utilizzato, ad esempio, come soluzione hosted. In secondo luogo, gli utenti di EKS ed ECS manterranno comunque la possibilità di scegliere il sistema operativo.

Il codice sorgente di Bottlerocket è pubblicato su GitHub con licenza Apache 2.0. Gli sviluppatori stanno già rispondendo ai bug report e alle richieste di funzionalità.

In pubblicità

VDSina offre VDS con pagamento giornaliero. È possibile installare qualsiasi sistema operativo, compreso il proprio immagine. Ogni server è connesso a una banda internet di 500 Megabit ed è protetto gratuitamente dagli attacchi DDoS!

È uscito Bottlerocket, una distribuzione Linux minimalista per l'esecuzione di container. Ecco le informazioni più importanti.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster