Podjetje Amazon
Bottlerocket (mimogrede, ime za majhne domače rakete s črnim smodnikom) ni prvi operacijski sistem za zabojnike, vendar je verjetno, da bo postal razširjen zaradi privzete integracije s storitvami AWS. Čeprav je sistem osredotočen na oblak Amazon, odprtokodna koda omogoča njegovo gradnjo kjer koli: lokalno na strežniku, na Raspberry Pi, v katerem koli konkurenčnem oblaku in celo v okolju brez vsebnikov.
To je popolnoma vredna zamenjava za distribucijo CoreOS, ki jo je Red Hat pokopal.
Pravzaprav oddelek Amazon Web Services že ima Amazon Linux, ki je pred kratkim izšel v svoji drugi različici: je distribucija za splošne namene, ki jo je mogoče izvajati v vsebniku Docker ali z Linux KVM, Microsoft Hyper-V in VMware. Hipervizorji ESXi. Optimiziran je bil za delovanje v oblaku AWS, toda z izdajo Bottlerocket se vsi spodbujajo k nadgradnji na nov sistem, ki je varnejši, sodobnejši in uporablja manj virov.
AWS je napovedal Bottlerocket
Ekstremni minimalizem
Linuxu je odvzeto vse, kar ni potrebno za izvajanje vsebnikov. Ta zasnova po mnenju podjetja zmanjšuje napadalno površino.
To pomeni, da je v osnovni sistem nameščenih manj paketov, kar olajša vzdrževanje in posodabljanje operacijskega sistema ter zmanjša verjetnost težav zaradi odvisnosti, kar zmanjša porabo virov. V bistvu vse tukaj deluje znotraj ločenih vsebnikov, osnovni sistem pa je praktično gol.
Amazon je prav tako odstranil vse lupine in tolmače, s čimer je odpravil tveganje, da bi jih uporabili ali da bi uporabniki pomotoma povečali privilegije. Zaradi minimalizma in varnosti osnovna slika ne vključuje ukazne lupine, strežnika SSH ali interpretiranih jezikov, kot je Python. Skrbniška orodja so nameščena v ločenem servisnem vsebniku, ki je privzeto onemogočen.
Sistem se upravlja na dva načina: prek API-ja in orkestracije.
Namesto upravitelja paketov, ki posodablja posamezne dele programske opreme, Bottlerocket prenese celotno sliko datotečnega sistema in jo znova zažene. Če nalaganje ne uspe, se samodejno povrne nazaj, napaka delovne obremenitve pa lahko ročno sproži povrnitev (ukaz prek API-ja).
Okvir /etc
nameščen z datotečnim sistemom v RAM-u /etc
ni podprto: za shranjevanje nastavitev uporabite API ali premaknite funkcionalnost v ločene vsebnike.
Shema posodobitve API-ja
varnost
Kontejnerji so ustvarjeni s standardnimi mehanizmi jedra Linuxa - cgroups, namespaces in seccomp in se uporabljajo kot vsiljeni sistem za nadzor dostopa, torej za dodatno izolacijo.
Privzeto so pravilniki omogočeni za skupno rabo virov med vsebniki in jedrom. Binarne datoteke so zaščitene z zastavicami, ki uporabnikom ali programom preprečujejo njihovo izvajanje. In če pridete do datotečnega sistema, Bottlerocket ponuja orodje za preverjanje in sledenje morebitnim spremembam.
Način »preverjenega zagona« je implementiran prek funkcije verity device-mapper-verity (
V sistemu je tudi filter
Model izvedbe
Uporabnik definiran
Sestavljanje
varnost
Način okvare
Dostop do virov
Uporabnik
naloga
ja
vse
pravice uporabnika
prekiniti izvajanje
sistemski klic, napaka
Core
naloga
ne
statična
ne
jedrna panika
прямой
BPF
dogodek
ja
JIT, CO-RE
preverjanje, JIT
obvestilo o napaki
omejeni pomočniki
Kako se BPF razlikuje od kode običajnega uporabnika ali ravni jedra
AWS je dejal, da Bottlerocket "uporablja operacijski model, ki dodatno povečuje varnost s preprečevanjem povezav s produkcijskimi strežniki s skrbniškimi pravicami" in je "primeren za velike porazdeljene sisteme, kjer je nadzor nad vsakim posameznim gostiteljem omejen."
Sistemskim skrbnikom je na voljo skrbniški vsebnik. Vendar AWS ne misli, da bo skrbnik pogosto moral delati znotraj Bottlerocket: "Dejanje prijave v ločen primerek Bottlerocket je namenjeno redkim operacijam: napredno odpravljanje napak in odpravljanje težav,"
Rust jezik
Instrumenti OS na vrhu jedra so večinoma napisani v Rustu. Ta jezik je po svoji naravi
Zastavice so privzeto uporabljene pri gradnji --enable-default-pie
и --enable-default-ssp
omogočiti naključno izbiro naslovnega prostora izvršljivih datotek (
Za pakete C/C++ so vključene dodatne zastavice -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
Poleg Rust in C/C++ so nekateri paketi napisani v Go.
Integracija s storitvami AWS
Razlika od podobnih kontejnerskih operacijskih sistemov je v tem, da je Amazon optimiziral Bottlerocket za delovanje na AWS in integracijo z drugimi storitvami AWS.
Najbolj priljubljen vsebniški orkestrator je Kubernetes, zato je AWS uvedel integracijo s svojo lastno storitvijo Enterprise Kubernetes (EKS). Orodja za orkestracijo so v ločenem nadzornem vsebniku
Zanimivo bo videti, ali bo Bottlerocket uspel, glede na neuspeh nekaterih podobnih pobud v preteklosti. Izkazalo se je na primer, da PhotonOS podjetja Vmware ni zahtevan, RedHat pa je kupil CoreOS in
Integracija Bottlerocket v storitve AWS naredi ta sistem edinstven na svoj način. To je morda glavni razlog, zakaj imajo nekateri uporabniki raje Bottlerocket kot druge distribucije, kot sta CoreOS ali Alpine. Sistem je prvotno zasnovan za delovanje z EKS in ECS, vendar ponavljamo, da to ni potrebno. Prvič, Bottlerocket lahko
Izvorna koda Bottlerocket je objavljena na GitHubu pod licenco Apache 2.0. Razvijalci so že
O pravicah oglaševanja
VDSina ponudbe
Vir: www.habr.com