Konteinerite käitamiseks on välja antud minimalistlik Linuxi distributsioon Bottlerocket. Kõige tähtsam tema kohta

Konteinerite käitamiseks on välja antud minimalistlik Linuxi distributsioon Bottlerocket. Kõige tähtsam tema kohta

Amazoni ettevõte kuulutas välja lõpliku väljalaske kohta Pudeliratas — spetsiaalne jaotus konteinerite käitamiseks ja nende tõhusaks haldamiseks.

Bottlerocket (muide, väikestele omatehtud musta pulbri rakettidele antud nimi) ei ole esimene konteinerite jaoks mõeldud OS, kuid tõenäoliselt muutub see laialdaseks tänu vaikimisi integreerimisele AWS-i teenustega. Kuigi süsteem on keskendunud Amazoni pilvele, võimaldab avatud lähtekood seda ehitada kõikjal: lokaalselt serveris, Raspberry Pi-s, mis tahes konkureerivas pilves ja isegi konteineriteta keskkonnas.

See on Red Hati maha mattunud CoreOS-i distributsiooni täiesti väärt asendus.

Tegelikult on Amazoni veebiteenuste divisjonil juba Amazon Linux, mis tuli hiljuti välja oma teise versioonina: see on üldotstarbeline distributsioon, mida saab käivitada Dockeri konteineris või Linuxi KVM-i, Microsoft Hyper-V ja VMware-ga. ESXi hüperviisorid. See oli optimeeritud töötama AWS-i pilves, kuid Bottlerocketi väljalaskmisega julgustatakse kõiki üle minema uuele süsteemile, mis on turvalisem, kaasaegsem ja kasutab vähem ressursse.

AWS teatas Bottlerocketist märtsil 2020. Ta tunnistas kohe, et see pole esimene konteinerite Linux, tuues inspiratsiooniallikatena CoreOS-i, Rancher OS-i ja Project Atomicu. Arendajad kirjutasid, et operatsioonisüsteem on "oma õppetundide tulemus, mida oleme saanud pika aja jooksul Amazoni mastaabis tootmisteenuste käitamisel, ja kogemustest, mida oleme viimase kuue aasta jooksul konteinerite käitamise kohta kogunud."

Äärmuslik minimalism

Linuxist on eemaldatud kõik, mis pole konteinerite käitamiseks vajalik. See disain vähendab ettevõtte sõnul rünnaku pinda.

See tähendab, et baassüsteemi installitakse vähem pakette, mis muudab OS-i hooldamise ja värskendamise lihtsamaks ning vähendab ka sõltuvustest tingitud probleemide tõenäosust, vähendades ressursikasutust. Põhimõtteliselt töötab siin kõik eraldi konteinerites ja selle aluseks olev süsteem on praktiliselt tühi.

Amazon on eemaldanud ka kõik kestad ja tõlgid, välistades nende kasutamise või kasutajate kogemata õiguste suurendamise ohu. Minimalismi ja turvalisuse huvides ei sisalda põhipilt käsukest, SSH-serverit ega tõlgendatud keeli, nagu Python. Administraatori tööriistad paigutatakse eraldi teeninduskonteinerisse, mis on vaikimisi keelatud.

Süsteemi hallatakse kahel viisil: API ja orkestratsiooni kaudu.

Üksikuid tarkvaraosi värskendava paketihalduri asemel laadib Bottlerocket alla täieliku failisüsteemi pildi ja taaskäivitab selle. Kui laadimine ebaõnnestub, pöördub see automaatselt tagasi ja töökoormuse tõrge võib käivitada tagasipööramise käsitsi (käsk API kaudu).

Raamistik TUF (Uuendusraamistik) laadib alla pildipõhised värskendused alternatiivsetele või "ühendamata" partitsioonidele. Süsteemile eraldatakse kaks kettasektsiooni, millest üks sisaldab aktiivset süsteemi ja värskendus kopeeritakse teise. Sel juhul paigaldatakse juurpartitsioon kirjutuskaitstud režiimis ja partitsioon /etc ühendatud RAM-i failisüsteemiga tmpfs ja taastab pärast taaskäivitamist algse oleku. Konfiguratsioonifailide otsene muutmine /etc ei toetata: seadete salvestamiseks peaksite kasutama API-d või teisaldama funktsioonid eraldi konteineritesse.

Konteinerite käitamiseks on välja antud minimalistlik Linuxi distributsioon Bottlerocket. Kõige tähtsam tema kohta
API värskendusskeem

turvalisus

Konteinerid luuakse Linuxi tuuma standardsete mehhanismide - cgroups, namespaces ja seccomp - abil ning neid kasutatakse sunnitud juurdepääsu juhtimissüsteemina, st täiendavaks isoleerimiseks. SELinux "jõustamise" režiimis.

Vaikimisi on poliitikad lubatud ressursside jagamiseks konteinerite ja tuuma vahel. Binaarid on kaitstud lippudega, et takistada kasutajatel või programmidel neid täitmast. Ja kui failisüsteemi jõuab, pakub Bottlerocket tööriista tehtud muudatuste kontrollimiseks ja jälgimiseks.

Režiimi "Verified boot" rakendatakse seadme-mapper-verity funktsiooni kaudu (dm-verity), mis kontrollib alglaadimise ajal juurpartitsiooni terviklikkust. AWS kirjeldab dm-verity'i kui "Linux-i kerneli funktsiooni, mis tagab terviklikkuse kontrolli, et takistada pahavara OS-is töötamist, näiteks põhisüsteemi tarkvara ülekirjutamist."

Süsteemis on ka filter eGMP (laiendatud BPF, välja töötanud Aleksei Starovoitov), mis võimaldab madala tasemega süsteemitoimingute jaoks asendada tuumamoodulid turvalisemate BPF-programmidega.

Täitmise mudel
Kasutaja määratletud
Koostamine
turvalisus
Rikkerežiim
Juurdepääs ressurssidele

Kasutaja
väljakutse
jah
kõik
kasutajaõigused
täitmist katkestada
süsteemikõne, viga

Kernel
väljakutse
ei
staatiline
ei
kerneli paanika
sirge

BPF
sündmus
jah
JIT, CO-RE
kontrollimine, JIT
veateade
piiratud abilised

Mille poolest BPF erineb tavalisest kasutaja või kerneli taseme koodist allikas

AWS ütles, et Bottlerocket "kasutab töömudelit, mis suurendab turvalisust veelgi, takistades ühenduse loomist administraatoriõigustega tootmisserveritega" ja "sobib suurtele hajutatud süsteemidele, kus kontroll iga üksiku hosti üle on piiratud".

Süsteemiadministraatoritele on ette nähtud administraatori konteiner. Kuid AWS ei arva, et administraator peaks sageli Bottlerocketis töötama: "Eri Bottlerocketi eksemplari sisselogimine on ette nähtud harvaesinevate toimingute jaoks: täiustatud silumine ja tõrkeotsing." kirjutama arendajad.

Rooste keel

Kerneli peal olev OS-i instrumentatsioon on enamasti kirjutatud Rusti keeles. See keel on oma olemuselt vähendab ebaturvalise mälu juurdepääsu tõenäosust ning kõrvaldab niitidevahelised võistlustingimused.

Ehitamisel rakendatakse vaikimisi lippe --enable-default-pie и --enable-default-ssp käivitatavate failide aadressiruumi juhusliku muutmise võimaldamiseks (positsioonist sõltumatu käivitatav fail, PIE) ja virna ülevoolukaitse.

C/C++ pakettide puhul on kaasas täiendavad lipud -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Peale Rusti ja C/C++ on mõned paketid kirjutatud Go keeles.

Integratsioon AWS-i teenustega

Erinevus sarnastest konteinerite operatsioonisüsteemidest seisneb selles, et Amazon on optimeerinud Bottlerocketi töötama AWS-is ja integreeruma teiste AWS-teenustega.

Kõige populaarsem konteinerite orkestraator on Kubernetes, nii et AWS on integreerinud oma ettevõtte Kubernetes teenusega (EKS). Orkestreerimistööriistad on eraldi juhtkonteineris pudelrakett-kontroll-konteiner, mis on vaikimisi lubatud ja mida hallatakse API ja AWS SSM agendi kaudu.

On huvitav näha, kas Bottlerocket tõuseb, arvestades mõne sarnase algatuse ebaõnnestumist minevikus. Näiteks osutus Vmware'i PhotonOS taotlemata ja RedHat ostis CoreOS-i ja projekti sulges, keda peeti sellel alal teerajajaks.

Bottlerocketi integreerimine AWS-i teenustega muudab selle süsteemi omal moel ainulaadseks. See on võib-olla peamine põhjus, miks mõned kasutajad eelistavad Bottlerocketit teistele distributsioonidele, nagu CoreOS või Alpine. Süsteem on algselt loodud töötama EKS-i ja ECS-iga, kuid kordame, et see pole vajalik. Esiteks saab Bottlerocket pane see ise kokku ja kasutada seda näiteks hostitud lahendusena. Teiseks saavad EKS-i ja ECS-i kasutajad endiselt valida oma operatsioonisüsteemi.

Bottlerocketi lähtekood avaldatakse GitHubis Apache 2.0 litsentsi all. Arendajad on seda juba teinud vastata veaaruannetele ja funktsioonitaotlustele.

Reklaamide õiguste kohta

VDSina pakub VDS igapäevase maksega. Võimalik on installida mis tahes operatsioonisüsteem, sealhulgas oma pildi järgi. Iga server on ühendatud 500 megabitise Interneti-kanaliga ja on tasuta kaitstud DDoS-i rünnakute eest!

Konteinerite käitamiseks on välja antud minimalistlik Linuxi distributsioon Bottlerocket. Kõige tähtsam tema kohta

Allikas: www.habr.com

Lisa kommentaar