Compagnia Amazon
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
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 /etc
montato con il file system nella RAM /etc
non supportato: per salvare le impostazioni è necessario utilizzare l'API o spostare le funzionalità in contenitori separati.
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
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 (
C'è anche un filtro nel sistema
Modello di esecuzione
Definito dall'utente
compilazione
sicurezza
Modalità di fallimento
Accesso alle risorse
Utente
compito
sì
Qualsiasi
diritti dell'utente
interrompere l'esecuzione
chiamata di sistema, guasto
nucleo
compito
no
statico
no
panico nel kernel
dritto
BPF
evento
sì
JIT, CO-RE
verifica, JIT
messaggio di errore
aiutanti limitati
In che modo BPF differisce dal normale codice utente o a livello di kernel
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,"
Linguaggio arrugginito
La strumentazione del sistema operativo sopra il kernel è scritta principalmente in Rust. Questa lingua è per sua natura
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 (
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
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
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ò
Il codice sorgente di Bottlerocket è pubblicato su GitHub sotto la licenza Apache 2.0. Gli sviluppatori lo hanno già fatto
Sui diritti della pubblicità
VDSina offre
Fonte: habr.com