Izdana je bila minimalistična distribucija Linuxa, Bottlerocket, za izvajanje vsebnikov. Najpomembnejša stvar pri njem

Izdana je bila minimalistična distribucija Linuxa, Bottlerocket, za izvajanje vsebnikov. Najpomembnejša stvar pri njem

Podjetje Amazon napovedal o končni izdaji Steklenica — specializirana distribucija za vodenje kontejnerjev in njihovo učinkovito upravljanje.

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 marca 2020. Takoj je priznala, da to ni prvi »Linux za kontejnerje«, in kot vire navdiha navedla CoreOS, Rancher OS in Project Atomic. Razvijalci so zapisali, da je operacijski sistem "rezultat lekcij, ki smo se jih naučili pri izvajanju proizvodnih storitev na Amazonovem obsegu že dolgo časa, in izkušenj, ki smo jih pridobili v zadnjih šestih letih o tem, kako izvajati vsebnike."

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 TUF (Ogrodje posodobitev) prenese posodobitve, ki temeljijo na slikah, na nadomestne ali "odklopljene" particije. Sistemu sta dodeljeni dve particiji diska, od katerih ena vsebuje aktivni sistem, posodobitev pa se kopira v drugo. V tem primeru je korenska particija nameščena v načinu samo za branje, particija pa /etc nameščen z datotečnim sistemom v RAM-u tmpfs in po ponovnem zagonu obnovi prvotno stanje. Neposredno spreminjanje konfiguracijskih datotek v /etc ni podprto: za shranjevanje nastavitev uporabite API ali premaknite funkcionalnost v ločene vsebnike.

Izdana je bila minimalistična distribucija Linuxa, Bottlerocket, za izvajanje vsebnikov. Najpomembnejša stvar pri njem
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. SELinux v načinu "uveljavljanje".

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 (dm-resnica), ki med zagonom preveri celovitost korenske particije. AWS opisuje dm-verity kot "funkcijo jedra Linuxa, ki zagotavlja preverjanje integritete za preprečevanje izvajanja zlonamerne programske opreme v operacijskem sistemu, kot je prepisovanje osnovne sistemske programske opreme."

V sistemu je tudi filter eGMP (razširjen BPF, razvil Aleksej Starovoitov), ki omogoča zamenjavo modulov jedra z bolj varnimi programi BPF za sistemske operacije na nizki ravni.

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 Vir

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," pisati razvijalci.

Rust jezik

Instrumenti OS na vrhu jedra so večinoma napisani v Rustu. Ta jezik je po svoji naravi zmanjša verjetnost nevarnega dostopa do pomnilnikain odpravlja pogoje tekmovanja med nitmi.

Zastavice so privzeto uporabljene pri gradnji --enable-default-pie и --enable-default-ssp omogočiti naključno izbiro naslovnega prostora izvršljivih datotek (položajno neodvisna izvršljiva datoteka, PIE) in zaščito pred prelivanjem sklada.

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 bottlerocket-container-container, ki je privzeto omogočen in upravljan prek API-ja in agenta AWS SSM.

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 zaprl projekt, ki je veljal za pionirja na tem področju.

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 sestavite sami in jo uporabite na primer kot gostujočo rešitev. Drugič, uporabniki EKS in ECS bodo še vedno imeli možnost izbrati svoj OS.

Izvorna koda Bottlerocket je objavljena na GitHubu pod licenco Apache 2.0. Razvijalci so že odgovarjati na poročila o napakah in zahteve po funkcijah.

O pravicah oglaševanja

VDSina ponudbe VDS z dnevnim plačilom. Možna je namestitev katerega koli operacijskega sistema, tudi iz lastne slike. Vsak strežnik je povezan z internetnim kanalom 500 megabitov in je brezplačno zaščiten pred DDoS napadi!

Izdana je bila minimalistična distribucija Linuxa, Bottlerocket, za izvajanje vsebnikov. Najpomembnejša stvar pri njem

Vir: www.habr.com

Dodaj komentar