Amazoni ettevõte
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
Ää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 /etc
ühendatud RAM-i failisüsteemiga /etc
ei toetata: seadete salvestamiseks peaksite kasutama API-d või teisaldama funktsioonid eraldi konteineritesse.
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.
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 (
Süsteemis on ka filter
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
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."
Rooste keel
Kerneli peal olev OS-i instrumentatsioon on enamasti kirjutatud Rusti keeles. See keel on oma olemuselt
Ehitamisel rakendatakse vaikimisi lippe --enable-default-pie
и --enable-default-ssp
käivitatavate failide aadressiruumi juhusliku muutmise võimaldamiseks (
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
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
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
Bottlerocketi lähtekood avaldatakse GitHubis Apache 2.0 litsentsi all. Arendajad on seda juba teinud
Reklaamide õiguste kohta
VDSina pakub
Allikas: www.habr.com