Minimalistická linuxová distribúcia Bottlerocket bola vydaná pre spustenie kontajnerov. Najdôležitejšia vec na ňom

Minimalistická linuxová distribúcia Bottlerocket bola vydaná pre spustenie kontajnerov. Najdôležitejšia vec na ňom

Spoločnosť Amazon oznámila, o konečnom vydaní Fľaša na fľaše — špecializovanú distribúciu na prevádzku kontajnerov a ich efektívne riadenie.

Bottlerocket (mimochodom, názov pre malé domáce rakety na čierny prach) nie je prvým operačným systémom pre kontajnery, ale je pravdepodobné, že sa rozšíri vďaka predvolenej integrácii so službami AWS. Hoci je systém zameraný na cloud Amazon, otvorený zdrojový kód umožňuje jeho zostavenie kdekoľvek: lokálne na serveri, na Raspberry Pi, v akomkoľvek konkurenčnom cloude a dokonca aj v prostredí bez kontajnerov.

Ide o úplne dôstojnú náhradu distribúcie CoreOS, ktorú Red Hat pochoval.

V skutočnosti divízia Amazon Web Services už má Amazon Linux, ktorý nedávno vyšiel vo svojej druhej verzii: je to univerzálna distribúcia, ktorú možno spustiť v kontajneri Docker alebo s Linux KVM, Microsoft Hyper-V a VMware. Hypervízory ESXi. Bol optimalizovaný tak, aby fungoval v cloude AWS, ale s vydaním Bottlerocket sa každému odporúča prejsť na nový systém, ktorý je bezpečnejší, modernejší a využíva menej zdrojov.

AWS oznámila Bottlerocket v marci 2020. Okamžite priznala, že toto nie je prvý „Linux pre kontajnery“, pričom ako zdroje inšpirácie uviedla CoreOS, Rancher OS a Project Atomic. Vývojári napísali, že operačný systém je „výsledkom lekcií, ktoré sme sa naučili z prevádzkovania produkčných služieb v rozsahu Amazonu po dlhú dobu, a skúseností, ktoré sme získali za posledných šesť rokov o tom, ako prevádzkovať kontajnery“.

Extrémny minimalizmus

Linux je zbavený všetkého, čo nie je potrebné na spustenie kontajnerov. Tento dizajn podľa spoločnosti znižuje útočnú plochu.

To znamená, že v základnom systéme je nainštalovaných menej balíkov, čo uľahčuje údržbu a aktualizáciu operačného systému a tiež znižuje pravdepodobnosť problémov v dôsledku závislostí, čím sa znižuje spotreba zdrojov. V podstate tu všetko funguje v samostatných kontajneroch a základný systém je prakticky holý.

Amazon tiež odstránil všetky shelly a tlmočníky, čím sa eliminovalo riziko ich použitia alebo náhodného eskalovania privilégií používateľom. V záujme minimalizmu a bezpečnosti základný obrázok neobsahuje príkazový shell, SSH server ani interpretované jazyky ako Python. Nástroje správcu sú umiestnené v samostatnom servisnom kontajneri, ktorý je predvolene vypnutý.

Systém je spravovaný dvoma spôsobmi: cez API a orchestráciu.

Namiesto správcu balíkov, ktorý aktualizuje jednotlivé časti softvéru, Bottlerocket stiahne kompletný obraz súborového systému a reštartuje sa do neho. Ak načítanie zlyhá, automaticky sa vráti späť a zlyhanie pracovného zaťaženia môže spustiť vrátenie manuálne (príkaz cez API).

rámec TUF (The Update Framework) sťahuje aktualizácie založené na obrázkoch do alternatívnych alebo „nepripojených“ oddielov. Systému sú pridelené dva diskové oddiely, z ktorých jeden obsahuje aktívny systém a aktualizácia sa skopíruje do druhého. V tomto prípade je koreňový oddiel pripojený v režime iba na čítanie a oddiel /etc pripojený so súborovým systémom v RAM tmpfs a po reštarte obnoví pôvodný stav. Priama úprava konfiguračných súborov v /etc nie je podporované: na uloženie nastavení by ste mali použiť rozhranie API alebo presunúť funkcie do samostatných kontajnerov.

Minimalistická linuxová distribúcia Bottlerocket bola vydaná pre spustenie kontajnerov. Najdôležitejšia vec na ňom
Schéma aktualizácie API

zabezpečenia

Kontajnery sú vytvorené štandardnými mechanizmami linuxového jadra - cgroups, namespaces a seccomp a používajú sa ako systém nútenej kontroly prístupu, teda na dodatočnú izoláciu SELinux v režime „vynucovania“.

Štandardne sú politiky povolené na zdieľanie prostriedkov medzi kontajnermi a jadrom. Binárne súbory sú chránené príznakmi, ktoré bránia používateľom alebo programom v ich spustení. A ak sa niekto dostane do systému súborov, Bottlerocket ponúka nástroj na kontrolu a sledovanie všetkých vykonaných zmien.

Režim „overeného spustenia“ sa implementuje prostredníctvom funkcie mapovača zariadenia (dm-verity), ktorý kontroluje integritu koreňového oddielu počas zavádzania. AWS popisuje dm-verity ako „funkciu linuxového jadra, ktorá poskytuje kontroly integrity, aby sa zabránilo spusteniu malvéru v operačnom systéme, ako je napríklad prepísanie softvéru základného systému“.

V systéme je aj filter eGMP (rozšírený BPF, vyvinutý Alexejom Starovoitovom), ktorý umožňuje nahradiť moduly jadra bezpečnejšími programami BPF pre operácie systému na nízkej úrovni.

Model vykonania
Definované užívateľom
zostavenie
zabezpečenia
Režim zlyhania
Prístup k zdrojom

Používateľ
úloha
áno
akýkoľvek
užívateľské práva
prerušiť vykonávanie
systémové volanie, porucha

jadro
úloha
nie
statické
nie
jadrová panika
прямой

BPF
udalosť
áno
JIT, CO-RE
overovanie, JIT
chybná správa
obmedzení pomocníci

Ako sa BPF líši od bežného používateľa alebo kódu na úrovni jadra zdroj

AWS uviedol, že Bottlerocket „využíva operačný model, ktorý ďalej zvyšuje bezpečnosť tým, že bráni pripojeniam k produkčným serverom s oprávneniami správcu“ a je „vhodný pre veľké distribuované systémy, kde je kontrola nad každým jednotlivým hostiteľom obmedzená“.

Pre správcov systému je k dispozícii kontajner správcu. AWS si však nemyslí, že správca bude musieť často pracovať vo vnútri Bottlerocket: "Prihlásenie do samostatnej inštancie Bottlerocket je určené na zriedkavé operácie: pokročilé ladenie a riešenie problémov." zapísať vývojárov.

Jazyk hrdze

Inštrumentácia operačného systému na vrchu jadra je väčšinou napísaná v jazyku Rust. Tento jazyk je svojou povahou znižuje pravdepodobnosť nebezpečného prístupu do pamätea eliminuje rasové podmienky medzi vláknami.

Pri stavbe sa štandardne používajú vlajky --enable-default-pie и --enable-default-ssp umožniť randomizáciu adresného priestoru spustiteľných súborov (spustiteľný súbor nezávislý od polohy, PIE) a ochrana proti pretečeniu zásobníka.

Pre balíky C/C++ sú zahrnuté ďalšie príznaky -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Okrem Rustu a C/C++ sú niektoré balíčky napísané v Go.

Integrácia so službami AWS

Rozdiel od podobných kontajnerových operačných systémov je v tom, že Amazon optimalizoval Bottlerocket tak, aby bežal na AWS a integroval sa s inými službami AWS.

Najpopulárnejším kontajnerovým orchestrátorom je Kubernetes, preto AWS zaviedlo integráciu s vlastnou službou Enterprise Kubernetes Service (EKS). Orchestračné nástroje sa dodávajú v samostatnom riadiacom kontajneri bottlerocket-control-container, ktorá je predvolene povolená a spravovaná cez API a AWS SSM Agent.

Bude zaujímavé sledovať, či sa Bottlerocket rozbehne, vzhľadom na neúspech niektorých podobných iniciatív v minulosti. Napríklad PhotonOS od Vmware sa ukázal ako nenárokovaný a RedHat kúpil CoreOS a projekt uzavrel, ktorý bol považovaný za priekopníka v odbore.

Integrácia Bottlerocket do služieb AWS robí tento systém jedinečným svojím vlastným spôsobom. To je možno hlavný dôvod, prečo niektorí používatelia môžu uprednostniť Bottlerocket pred inými distribúciami, ako sú CoreOS alebo Alpine. Systém je pôvodne navrhnutý pre prácu s EKS a ECS, ale opakujeme, že to nie je potrebné. Po prvé, Bottlerocket môže zostaviť sami a použiť ho napríklad ako hostované riešenie. Po druhé, používatelia EKS a ECS budú mať stále možnosť vybrať si svoj operačný systém.

Zdrojový kód Bottlerocket je zverejnený na GitHub pod licenciou Apache 2.0. Vývojári už urobili reagovať na hlásenia chýb a požiadavky na funkcie.

O právach reklamy

VDSina ponúk VDS s dennou platbou. Je možné nainštalovať akýkoľvek operačný systém, vrátane vlastného obrazu. Každý server je pripojený k internetovému kanálu 500 megabitov a je chránený pred útokmi DDoS zadarmo!

Minimalistická linuxová distribúcia Bottlerocket bola vydaná pre spustenie kontajnerov. Najdôležitejšia vec na ňom

Zdroj: hab.com

Pridať komentár