Spoločnosť Amazon
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
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 /etc
pripojený so súborovým systémom v RAM /etc
nie je podporované: na uloženie nastavení by ste mali použiť rozhranie API alebo presunúť funkcie do samostatných kontajnerov.
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
Š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 (
V systéme je aj filter
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
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."
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
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 (
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
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
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
Zdrojový kód Bottlerocket je zverejnený na GitHub pod licenciou Apache 2.0. Vývojári už urobili
O právach reklamy
VDSina ponúk
Zdroj: hab.com