Una distribuzione Linux minimalista, Bottlerocket, è stata rilasciata per l'esecuzione di contenitori. La cosa più importante su di lui

Una distribuzione Linux minimalista, Bottlerocket, è stata rilasciata per l'esecuzione di contenitori. La cosa più importante su di lui

Compagnia Amazon ha annunciato il sulla versione finale Razzo di bottiglia — una distribuzione specializzata per l'esecuzione di contenitori e la loro gestione efficace.

Bottlerocket (tra l'altro, il nome dato ai piccoli razzi a polvere nera fatti in casa) non è il primo sistema operativo per container, ma è probabile che si diffonderà grazie all'integrazione predefinita con i servizi AWS. Sebbene il sistema sia focalizzato sul cloud di Amazon, il codice open source ne consente la realizzazione ovunque: localmente su un server, su un Raspberry Pi, in qualsiasi cloud concorrente e persino in un ambiente senza contenitori.

Questo è un degno sostituto della distribuzione CoreOS sepolta da Red Hat.

La divisione Amazon Web Services, infatti, dispone già di Amazon Linux, uscito recentemente nella sua seconda versione: si tratta di una distribuzione generica che può essere eseguita in un contenitore Docker o con Linux KVM, Microsoft Hyper-V e VMware. Hypervisor ESXi. È stato ottimizzato per l'esecuzione sul cloud AWS, ma con il rilascio di Bottlerocket tutti sono incoraggiati a passare a un nuovo sistema che è più sicuro, moderno e utilizza meno risorse.

AWS ha annunciato Bottlerocket nel marzo 2020. Ha subito ammesso che questo non è il primo "Linux per contenitori", citando CoreOS, Rancher OS e Project Atomic come fonti di ispirazione. Gli sviluppatori hanno scritto che il sistema operativo è "il risultato delle lezioni che abbiamo imparato gestendo per lungo tempo servizi di produzione su scala di Amazon e dell'esperienza che abbiamo acquisito negli ultimi sei anni su come gestire i container".

Minimalismo estremo

Linux è privato di tutto ciò che non è necessario per eseguire i contenitori. Questo design, secondo l'azienda, riduce la superficie di attacco.

Ciò significa che sul sistema di base vengono installati meno pacchetti, il che semplifica la manutenzione e l'aggiornamento del sistema operativo e riduce anche la probabilità di problemi dovuti alle dipendenze, riducendo l'utilizzo delle risorse. Fondamentalmente qui tutto funziona all'interno di contenitori separati e il sistema sottostante è praticamente spoglio.

Amazon ha inoltre rimosso tutte le shell e gli interpreti, eliminando il rischio che vengano utilizzati o che gli utenti aumentino accidentalmente i privilegi. Per ragioni di minimalismo e sicurezza, l'immagine di base non include una shell di comandi, un server SSH o linguaggi interpretati come Python. Gli strumenti di amministrazione vengono inseriti in un contenitore di servizi separato, che è disabilitato per impostazione predefinita.

Il sistema è gestito in due modi: tramite API e orchestrazione.

Invece di un gestore di pacchetti che aggiorna singoli pezzi di software, Bottlerocket scarica un'immagine completa del filesystem e si riavvia in essa. Se un carico fallisce, viene eseguito automaticamente il rollback e un errore del carico di lavoro può attivare manualmente un rollback (comando tramite API).

Struttura TUF (The Update Framework) scarica gli aggiornamenti basati su immagini su partizioni alternative o "non montate". Per il sistema vengono allocate due partizioni del disco, una delle quali contiene il sistema attivo e l'aggiornamento viene copiato nella seconda. In questo caso, la partizione root viene montata in modalità di sola lettura e la partizione /etc montato con il file system nella RAM tmpfs e ripristina lo stato originale dopo un riavvio. Modifica diretta dei file di configurazione in /etc non supportato: per salvare le impostazioni è necessario utilizzare l'API o spostare le funzionalità in contenitori separati.

Una distribuzione Linux minimalista, Bottlerocket, è stata rilasciata per l'esecuzione di contenitori. La cosa più importante su di lui
Schema di aggiornamento API

sicurezza

I contenitori vengono creati mediante meccanismi standard del kernel Linux: cgroups, namespace e seccomp e vengono utilizzati come sistema di controllo dell'accesso forzato, ovvero per un ulteriore isolamento SELinux in modalità "applicativa".

Per impostazione predefinita, le policy sono abilitate per condividere le risorse tra i contenitori e il kernel. I file binari sono protetti con flag per impedire agli utenti o ai programmi di eseguirli. E se si riesce ad accedere al file system, Bottlerocket offre uno strumento per controllare e tenere traccia di eventuali modifiche apportate.

La modalità di “avvio verificato” viene implementata tramite la funzione device-mapper-verity (dm-verità), che controlla l'integrità della partizione root durante l'avvio. AWS descrive dm-verity come "una funzionalità del kernel Linux che fornisce controlli di integrità per impedire l'esecuzione di malware sul sistema operativo, come la sovrascrittura del software del sistema principale".

C'è anche un filtro nel sistema eGMP (BPF esteso, sviluppato da Alexey Starovoitov), che consente di sostituire i moduli del kernel con programmi BPF più sicuri per operazioni di sistema di basso livello.

Modello di esecuzione
Definito dall'utente
compilazione
sicurezza
Modalità di fallimento
Accesso alle risorse

Utente
compito

Qualsiasi
diritti dell'utente
interrompere l'esecuzione
chiamata di sistema, guasto

nucleo
compito
no
statico
no
panico nel kernel
dritto

BPF
evento

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

In che modo BPF differisce dal normale codice utente o a livello di kernel fonte

AWS ha affermato che Bottlerocket "impiega un modello operativo che migliora ulteriormente la sicurezza impedendo le connessioni ai server di produzione con privilegi amministrativi" ed è "adatto a sistemi distribuiti di grandi dimensioni in cui il controllo su ogni singolo host è limitato".

Per gli amministratori di sistema viene fornito un contenitore amministratore. Ma AWS non pensa che un amministratore avrà spesso bisogno di lavorare all'interno di Bottlerocket: "L'atto di accedere a un'istanza Bottlerocket separata è destinato a operazioni poco frequenti: debug avanzato e risoluzione dei problemi," scrivere sviluppatori.

Linguaggio arrugginito

La strumentazione del sistema operativo sopra il kernel è scritta principalmente in Rust. Questa lingua è per sua natura riduce la probabilità di accesso non sicuro alla memoriae elimina le condizioni di competizione tra i thread.

I contrassegni vengono applicati per impostazione predefinita durante la costruzione --enable-default-pie и --enable-default-ssp per abilitare la randomizzazione dello spazio degli indirizzi dei file eseguibili (eseguibile indipendente dalla posizione, PIE) e protezione da overflow dello stack.

Per i pacchetti C/C++ sono inclusi flag aggiuntivi -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

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

Integrazione con i servizi AWS

La differenza rispetto a sistemi operativi per container simili è che Amazon ha ottimizzato Bottlerocket per l'esecuzione su AWS e l'integrazione con altri servizi AWS.

L'orchestratore di contenitori più popolare è Kubernetes, quindi AWS ha introdotto l'integrazione con il proprio Enterprise Kubernetes Service (EKS). Gli strumenti di orchestrazione sono disponibili in un contenitore di controllo separato contenitore-controllo-razzo-bottiglia, che è abilitato per impostazione predefinita e gestito tramite l'API e l'agente AWS SSM.

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

L'integrazione di Bottlerocket nei servizi AWS rende questo sistema unico nel suo genere. Questo è forse il motivo principale per cui alcuni utenti potrebbero preferire Bottlerocket rispetto ad altre distribuzioni come CoreOS o Alpine. Il sistema è inizialmente progettato per funzionare con EKS ed ECS, ma ripetiamo che ciò non è necessario. Innanzitutto, Bottlerocket può assemblare da solo e utilizzarlo, ad esempio, come soluzione ospitata. In secondo luogo, gli utenti EKS ed ECS avranno comunque la possibilità di scegliere il proprio sistema operativo.

Il codice sorgente di Bottlerocket è pubblicato su GitHub sotto la licenza Apache 2.0. Gli sviluppatori lo hanno già fatto rispondere a segnalazioni di bug e richieste di funzionalità.

Sui diritti della pubblicità

VDSina offre VDS con pagamento giornaliero. È possibile installare qualsiasi sistema operativo, anche dalla propria immagine. Ogni server è connesso ad un canale Internet da 500 Megabit ed è protetto gratuitamente dagli attacchi DDoS!

Una distribuzione Linux minimalista, Bottlerocket, è stata rilasciata per l'esecuzione di contenitori. La cosa più importante su di lui

Fonte: habr.com

Aggiungi un commento