È uscito il distribuzione Linux minimalista Bottlerocket per eseguire container. Le informazioni principali a riguardo

È uscito il distribuzione Linux minimalista Bottlerocket per eseguire container. Le informazioni principali a riguardo

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

Bottlerocket (tra l'altro, questo è il nome delle piccole razzi fai-da-te a polvere da sparo) non è il primo sistema operativo per container, ma è molto probabile che ottenga una diffusione ampia grazie all'integrazione predefinita con i servizi AWS. Sebbene il sistema sia 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 persino in un ambiente senza container.

È un'ottima alternativa alla distribuzione CoreOS, che è stata abbandonata da Red Hat.

Infatti, la divisione Amazon Web Services ha già Amazon Linux, recentemente rilasciato nella sua seconda versione: una distribuzione di uso generale che può essere eseguita in un container Docker o con hypervisor Linux KVM, Microsoft Hyper-V e VMware ESXi. È stato ottimizzato per lavorare nel cloud AWS, ma con il rilascio di Bottlerocket a tutti è consigliato effettuare un upgrade al nuovo sistema, che è più sicuro, moderno e consuma meno risorse.

AWS ha annunciato Bottlerocket nel marzo 2020. Ha subito riconosciuto che non è il primo "Linux per container", citando tra le fonti di ispirazione CoreOS, Rancher OS e Project Atomic. Gli sviluppatori hanno scritto che il sistema operativo è "il risultato delle lezioni apprese dopo un lungo periodo di lavoro con servizi di produzione su scala Amazon, e considerando l'esperienza accumulata negli ultimi sei anni su come eseguire container".

Minimalismo estremo

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

Ciò significa che nella sistema base sono installati meno pacchetti, semplificando il supporto e l'aggiornamento del sistema operativo, oltre a ridurre la probabilità di problemi dovuti alle dipendenze e diminuire l'utilizzo delle risorse. In linea di massima, tutto funziona all'interno di singoli container, e il sistema base è praticamente vuoto.

Amazon ha anche rimosso tutte le shell e gli interpreti, eliminando il rischio del loro utilizzo o di un eventuale elevamento dei privilegi da parte degli utenti. Nell'immagine base, per minimizzare e garantire sicurezza, non ci sono shell di comando, server SSH e linguaggi interpretati come Python. Gli strumenti per l'amministratore sono stati estratti in un contenitore di servizio separato, che è disattivato di default.

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 carica un'immagine completa del filesystem e si riavvia in essa. In caso di fallimento del caricamento, viene eseguito automaticamente il rollback, e il fallimento del carico di lavoro può attivare manualmente il rollback (comando tramite API).

Framework TUF (The Update Framework) carica aggiornamenti basati su immagini in partizioni alternative o "smontate". Sono dedicati due partizioni del disco al sistema, una delle quali contiene il sistema attivo, mentre sull'altra viene copiato l'aggiornamento. In questo modo, la partizione radice è montata in modalità di sola lettura, mentre la partizione /etc è montata con il filesystem in memoria volatile tmpfs e ripristina lo stato originale dopo il riavvio. La modifica diretta dei file di configurazione in /etc non è supportata: per la conservazione delle impostazioni è necessario utilizzare l'API o estrarre la funzionalità in contenitori separati.

È uscito il distribuzione Linux minimalista Bottlerocket per eseguire container. Le informazioni principali a riguardo
Lo schema di aggiornamento tramite API

Sicurezza

I contenitori sono creati mediante i meccanismi standard del kernel Linux — cgroups, spazi dei nomi e seccomp, e come sistema di controllo degli accessi, cioè per ulteriore isolamento, viene utilizzato SELinux in modalità "enforcing".

Di default, sono attive politiche per la suddivisione delle risorse tra contenitori e kernel. I binari sono protetti da flag, in modo che gli utenti o i programmi non possano eseguirli. E se qualcuno riesce ad accedere al filesystem, Bottlerocket offre uno strumento per verificare e monitorare eventuali modifiche apportate.

La modalità "bootsrap verificata" è implementata tramite la funzione device-mapper-verity (dm-verity), che verifica l'integrità della partizione radice durante il caricamento. AWS descrive dm-verity come «una funzione del kernel Linux che fornisce la verifica dell'integrità per prevenire il funzionamento di malware nel sistema operativo, come la riscrittura del firmware di sistema principale».

È presente anche un filtro eBPF (BPF esteso, sviluppato da Alexey Starovoitov), 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 errore
Accesso alle risorse

Utente
compito

qualsiasi
diritti degli utenti
interruzione dell'esecuzione
chiamata di sistema, fault

Il kernel
compito
no
statico
no
panic del kernel
diretto

BPF
evento

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

La differenza tra BPF e il codice di livello utente o kernel normale è fonte

AWS ha dichiarato che Bottlerocket «applica un modello operativo che migliora ulteriormente la sicurezza, impedendo la connessione ai server di produzione con privilegi di amministratore», e «è adatto per grandi sistemi distribuiti, in cui è limitato il controllo su ogni singolo host».

Per gli amministratori di sistema è previsto un contenitore per gli amministratori. Ma AWS non crede che l'amministratore debba spesso lavorare all'interno di Bottlerocket: «L'accesso a un'istanza separata di Bottlerocket è destinato a operazioni rare: debug avanzato e risoluzione dei problemi», — scrivono gli sviluppatori.

Il linguaggio Rust

L'ecosistema OS sopra il kernel è principalmente scritto in Rust. Questo linguaggio, per sua natura, riduce la probabilità di accesso non sicuro alla memoria, e inoltre elimina le condizioni di gara tra i thread.

Durante la compilazione predefinita, vengono applicate le flag --enable-default-pie e --enable-default-ssp per attivare la randomizzazione dello spazio degli indirizzi dei file eseguibili (eseguibile indipendente dalla posizione, PIE) e la protezione contro il buffer overflow.

Per i pacchetti in C/C++ vengono inoltre incluse 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 l'uso su AWS e per l'integrazione con altri servizi AWS.

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

Sarà interessante vedere se Bottlerocket avrà successo, considerando il fallimento di alcune iniziative simili in passato. Ad esempio, PhotonOS di Vmware si è rivelata poco richiesta, mentre RedHat ha acquisito CoreOS e ha chiuso il progetto, che era considerato un pioniere in questo campo.

L'integrazione di Bottlerocket nei servizi AWS rende questo sistema unico nel suo genere. Potrebbe essere la ragione principale per cui alcuni utenti potrebbero preferire Bottlerocket ad altre distribuzioni, come CoreOS o Alpine. Il sistema è progettato principalmente per lavorare con EKS ed ECS, ma ripetiamo, non è obbligatorio. In primo luogo, Bottlerocket può essere costruito autonomamente e utilizzato, ad esempio, come soluzione hosted. In secondo luogo, gli utenti di EKS ed ECS continueranno ad avere la possibilità di scegliere il proprio sistema operativo.

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

In base alla pubblicità

VDSina offre VDS con pagamento giornaliero. È possibile installare qualsiasi sistema operativo, incluso il proprio immagine. Ogni server è connesso a un canale Internet da 500 Megabit ed è protetto gratuitamente da attacchi DDoS!

È uscito il distribuzione Linux minimalista Bottlerocket per eseguire container. Le informazioni principali a riguardo

Fonte: habr.com

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