Ang isang minimalistic na pamamahagi ng Linux, Bottlerocket, ay inilabas para sa pagpapatakbo ng mga lalagyan. Ang pinakamahalagang bagay tungkol sa kanya

Ang isang minimalistic na pamamahagi ng Linux, Bottlerocket, ay inilabas para sa pagpapatakbo ng mga lalagyan. Ang pinakamahalagang bagay tungkol sa kanya

Amazon Company inihayag ang tungkol sa huling paglabas bottlerocket β€” isang espesyal na pamamahagi para sa pagpapatakbo ng mga lalagyan at epektibong pamamahala sa mga ito.

Ang Bottlerocket (nga pala, ang pangalang ibinigay sa maliliit na homemade black powder rocket) ay hindi ang unang OS para sa mga lalagyan, ngunit malamang na ito ay magiging laganap salamat sa default na pagsasama sa mga serbisyo ng AWS. Bagama't nakatutok ang system sa cloud ng Amazon, pinapayagan ito ng open source code na mabuo kahit saan: lokal sa isang server, sa isang Raspberry Pi, sa anumang nakikipagkumpitensyang ulap, at maging sa isang walang lalagyan na kapaligiran.

Ito ay isang ganap na karapat-dapat na kapalit para sa pamamahagi ng CoreOS na inilibing ng Red Hat.

Sa katunayan, ang Amazon Web Services division ay mayroon nang Amazon Linux, na kamakailan ay lumabas sa pangalawang bersyon nito: ito ay isang pangkalahatang layunin na pamamahagi na maaaring patakbuhin sa isang Docker container o sa Linux KVM, Microsoft Hyper-V, at VMware ESXi hypervisors. Ito ay na-optimize upang tumakbo sa AWS cloud, ngunit sa paglabas ng Bottlerocket, hinihikayat ang lahat na mag-upgrade sa isang bagong system na mas secure, moderno, at gumagamit ng mas kaunting mga mapagkukunan.

Inihayag ng AWS ang Bottlerocket noong Marso 2020. Agad niyang inamin na hindi ito ang unang "Linux para sa mga lalagyan," na binabanggit ang CoreOS, Rancher OS at Project Atomic bilang mga mapagkukunan ng inspirasyon. Isinulat ng mga developer na ang operating system ay "ang resulta ng mga aral na natutunan namin mula sa pagpapatakbo ng mga serbisyo sa produksyon sa sukat ng Amazon sa loob ng mahabang panahon, at ang karanasang natamo namin sa nakalipas na anim na taon tungkol sa kung paano magpatakbo ng mga lalagyan."

Sobrang minimalism

Inalis sa Linux ang lahat ng hindi kailangan para magpatakbo ng mga lalagyan. Ang disenyo na ito, ayon sa kumpanya, ay binabawasan ang ibabaw ng pag-atake.

Nangangahulugan ito na mas kaunting mga pakete ang naka-install sa base system, na nagpapadali sa pagpapanatili at pag-update ng OS, at binabawasan din ang posibilidad ng mga problema dahil sa mga dependency, na binabawasan ang paggamit ng mapagkukunan. Sa pangkalahatan, lahat ng bagay dito ay gumagana sa loob ng magkahiwalay na mga lalagyan, at ang pinagbabatayan na sistema ay halos walang laman.

Inalis din ng Amazon ang lahat ng mga shell at interpreter, na inaalis ang panganib na magamit ang mga ito o ang mga user ay hindi sinasadyang tumataas ang mga pribilehiyo. Para sa kapakanan ng minimalism at seguridad, ang batayang imahe ay hindi kasama ang isang command shell, isang SSH server, o binibigyang kahulugan na mga wika tulad ng Python. Ang mga tool ng administrator ay inilalagay sa isang hiwalay na lalagyan ng serbisyo, na hindi pinagana bilang default.

Ang system ay pinamamahalaan sa dalawang paraan: sa pamamagitan ng API at orkestrasyon.

Sa halip na isang manager ng package na nag-a-update ng mga indibidwal na piraso ng software, ang Bottlerocket ay nagda-download ng kumpletong imahe ng filesystem at nagre-reboot dito. Kung nabigo ang isang load, awtomatiko itong bumabalik, at ang pagkabigo sa workload ay maaaring mag-trigger ng manu-manong rollback (utos sa pamamagitan ng API).

Balangkas TUF (Ang Update Framework) ay nagda-download ng mga update na nakabatay sa imahe sa mga kahalili o "na-unmount" na mga partisyon. Dalawang disk partition ang inilalaan para sa system, ang isa ay naglalaman ng aktibong system, at ang pag-update ay kinopya sa pangalawa. Sa kasong ito, ang root partition ay naka-mount sa read-only mode, at ang partition /etc naka-mount kasama ang file system sa RAM tmpfs at ibinabalik ang orihinal na estado pagkatapos ng pag-restart. Direktang pagbabago ng mga configuration file sa /etc hindi suportado: upang i-save ang mga setting dapat mong gamitin ang API o ilipat ang functionality sa magkahiwalay na mga lalagyan.

Ang isang minimalistic na pamamahagi ng Linux, Bottlerocket, ay inilabas para sa pagpapatakbo ng mga lalagyan. Ang pinakamahalagang bagay tungkol sa kanya
Scheme ng pag-update ng API

katiwasayan

Ang mga lalagyan ay nilikha sa pamamagitan ng mga karaniwang mekanismo ng Linux kernel - cgroup, namespaces at seccomp, at ginagamit bilang isang forced access control system, iyon ay, para sa karagdagang paghihiwalay SELinux sa "pagpapatupad" na mode.

Bilang default, pinagana ang mga patakaran upang magbahagi ng mga mapagkukunan sa pagitan ng mga lalagyan at kernel. Ang mga binary ay pinoprotektahan ng mga flag upang pigilan ang mga user o program na i-execute ang mga ito. At kung ang isa ay makarating sa file system, ang Bottlerocket ay nag-aalok ng isang tool upang suriin at subaybayan ang anumang mga pagbabagong ginawa.

Ang mode na "na-verify na boot" ay ipinatupad sa pamamagitan ng function ng device-mapper-verity (dm-katotohanan), na sumusuri sa integridad ng root partition sa panahon ng boot. Inilalarawan ng AWS ang dm-verity bilang "isang tampok ng Linux kernel na nagbibigay ng mga pagsusuri sa integridad upang pigilan ang malware na tumakbo sa OS, gaya ng pag-overwrit ng core system software."

Mayroon ding isang filter sa system eGMP (pinalawak na BPF, binuo ni Alexey Starovoitov), na nagpapahintulot sa mga kernel module na mapalitan ng mas secure na BPF programs para sa mga low-level system operations.

Modelo ng pagpapatupad
Tinukoy ng user
Kompilasyon
katiwasayan
Failure mode
Access sa mga mapagkukunan

Gumagamit
ang gawain
oo
anuman
karapatan ng gumagamit
makagambala sa pagpapatupad
system call, kasalanan

Ang pangunahing
ang gawain
hindi
static
hindi
kernel panic
tuwid

BPF
pangyayari
oo
JIT, CO-RE
pagpapatunay, JIT
maling mensahe
limitadong mga katulong

Paano naiiba ang BPF sa regular na user o kernel level code pinagmulan

Sinabi ng AWS na ang Bottlerocket ay "gumagamit ng isang operating model na higit na nagpapahusay ng seguridad sa pamamagitan ng pagpigil sa mga koneksyon sa mga production server na may mga pribilehiyong pang-administratibo" at "angkop para sa malalaking distributed system kung saan ang kontrol sa bawat indibidwal na host ay limitado."

Ang isang lalagyan ng administrator ay ibinigay para sa mga administrator ng system. Ngunit hindi iniisip ng AWS na ang isang admin ay madalas na kailangang magtrabaho sa loob ng Bottlerocket: "Ang pagkilos ng pag-log in sa isang hiwalay na halimbawa ng Bottlerocket ay inilaan para sa mga madalang na operasyon: advanced na pag-debug at pag-troubleshoot," isulat mga developer.

kalawang na wika

Ang instrumento ng OS sa tuktok ng kernel ay kadalasang nakasulat sa Rust. Ang wikang ito ay ayon sa kalikasan nito binabawasan ang posibilidad ng hindi ligtas na pag-access sa memoryaAt inaalis ang mga kondisyon ng lahi sa pagitan ng mga thread.

Ang mga flag ay inilalapat bilang default kapag gumagawa --enable-default-pie ΠΈ --enable-default-ssp upang paganahin ang randomization ng address space ng mga executable file (posisyon-independiyenteng maipapatupad, PIE) at proteksyon ng stack overflow.

Para sa mga C/C++ na pakete, may kasamang mga karagdagang flag -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS ΠΈ -fstack-clash-protection.

Bukod sa Rust at C/C++, ang ilang mga pakete ay nakasulat sa Go.

Pagsasama sa mga serbisyo ng AWS

Ang pagkakaiba sa mga katulad na operating system ng container ay na-optimize ng Amazon ang Bottlerocket upang tumakbo sa AWS at isama sa iba pang mga serbisyo ng AWS.

Ang pinakasikat na container orchestrator ay ang Kubernetes, kaya ipinakilala ng AWS ang pagsasama sa sarili nitong Enterprise Kubernetes Service (EKS). Ang mga tool sa orkestra ay nasa isang hiwalay na lalagyan ng kontrol bottlerocket-control-container, na pinagana bilang default at pinamamahalaan sa pamamagitan ng API at AWS SSM Agent.

Magiging kawili-wiling makita kung ang Bottlerocket ay aalis, dahil sa pagkabigo ng ilang katulad na mga hakbangin sa nakaraan. Halimbawa, ang PhotonOS mula sa Vmware ay naging hindi na-claim, at binili ng RedHat ang CoreOS at isinara ang proyekto, na itinuring na pioneer sa larangan.

Ang pagsasama ng Bottlerocket sa mga serbisyo ng AWS ay ginagawang kakaiba ang system na ito sa sarili nitong paraan. Ito marahil ang pangunahing dahilan kung bakit maaaring mas gusto ng ilang user ang Bottlerocket kaysa sa iba pang distro gaya ng CoreOS o Alpine. Ang sistema ay unang idinisenyo upang gumana sa EKS at ECS, ngunit inuulit namin na hindi ito kinakailangan. Una, maaari ang Bottlerocket mag-ipon nang mag-isa at gamitin ito, halimbawa, bilang isang naka-host na solusyon. Pangalawa, ang mga gumagamit ng EKS at ECS ay magkakaroon pa rin ng kakayahang pumili ng kanilang OS.

Ang Bottlerocket source code ay na-publish sa GitHub sa ilalim ng Apache 2.0 na lisensya. Ang mga developer ay mayroon na tumugon sa mga ulat ng bug at mga kahilingan sa tampok.

Sa Mga Karapatan ng Pag-advertise

VDSina Nag-aalok ang VDS na may pang-araw-araw na pagbabayad. Posibleng mag-install ng anumang operating system, kabilang ang mula sa iyong sariling larawan. Ang bawat server ay konektado sa isang Internet channel na 500 Megabits at protektado mula sa mga pag-atake ng DDoS nang libre!

Ang isang minimalistic na pamamahagi ng Linux, Bottlerocket, ay inilabas para sa pagpapatakbo ng mga lalagyan. Ang pinakamahalagang bagay tungkol sa kanya

Pinagmulan: www.habr.com

Magdagdag ng komento