
Spoločnosť Amazon o finálnom vydaní — špecializovaná distribúcia na spúšťanie kontajnerov a efektívne ich spravovanie.
Bottlerocket (iné meno pre malé domáce rakety na dymový pohon) nie je prvý operačný systém pre kontajnery, ale pravdepodobne sa široko rozšíri vďaka predvolenej integrácii so službami AWS. Aj keď je systém zameraný na cloud Amazon, otvorený zdrojový kód umožňuje zostaviť ho kdekoľvek: lokálne na serveri, na Raspberry Pi, v akomkoľvek konkurenčnom cloude a dokonca aj v prostredí bez kontajnerov.
Je to celkom slušná náhrada distribúcie CoreOS, ktorú pochovala Red Hat.
Vo všeobecnosti má divízia Amazon Web Services už Amazon Linux, ktorý nedávno vyšiel vo verzii 2: je to distribúcia všeobecného účelu, ktorú je možné spustiť v kontajneri Docker alebo s hypervízormi Linux KVM, Microsoft Hyper-V a VMware ESXi. Bol optimalizovaný na prácu v cloude AWS, ale s vydaním Bottlerocket sa odporúča všetkým prejsť na nový systém, ktorý je bezpečnejší, modernejší a spotrebuje menej zdrojov.
AWS oznámila Bottlerocket . Okamžite uznala, že to nie je prvý „Linux pre kontajnery“, pričom spomenula ako inšpirácie CoreOS, Rancher OS a Project Atomic. Vývojári uviedli, že operačný systém je „výsledkom skúseností, ktoré sme získali z dlhoročnej práce na výrobných službách v rozsahu Amazon, s ohľadom na poznatky, ktoré sme získali za posledných šesť rokov o tom, ako spúšťať kontajnery“.
Extrémny minimalizmus
Linux je vyčistený od všetkého, čo nie je potrebné na spúšťanie kontajnerov. Takýto 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 zjednodušuje údržbu a aktualizáciu OS a znižuje pravdepodobnosť problémov spôsobených závislosťami, pričom znižuje aj využívanie zdrojov. V princípe tu všetko funguje v rámci samostatných kontajnerov, a základný systém je takmer prázdny.
Amazon tiež odstránila všetky shell a interpretátory, čím eliminovala riziko ich využitia alebo náhodného zvýšenia privilegií používateľmi. V základnom obraze, kvôli minimalizmu a bezpečnosti, chýba príkazový shell, server SSH a interpretované jazyky ako Python. Nástroje pre administrátorov sú presunuté do samostatného servisného kontajnera, ktorý je predvolene deaktivovaný.
Správa systému je zabezpečená dvoma spôsobmi: cez API a orchestráciu.
Namiesto správcu balíkov, ktorý aktualizuje jednotlivé časti softvéru, Bottlerocket sťahuje kompletný obraz súborového systému a reštartuje sa do neho. V prípade zlyhania spustenia sa automaticky vráti späť, a zlyhanie pracovnej záťaže môže spustiť manuálny návrat (príkaz cez API).
Rámec (The Update Framework) sťahuje aktualizácie na základe obrazov do alternatívnych alebo "odpojených" oddielov. Pre systém sú vyhradené dva diskové oddiely, z ktorých jeden obsahuje aktívny systém a na druhý sa prenáša aktualizácia. Pri tom je koreňový oddiel pripojený v režime len na čítanie, a oddiel /etc je pripojený so súborovým systémom v operačnej pamäti a obnovuje pôvodný stav po reštarte. Priame zmeny konfiguračných súborov v /etc nie sú podporované: na uchovanie nastavení je potrebné využiť API alebo presunúť funkcionalitu do samostatných kontajnerov.

Schéma aktualizácie cez API
Bezpečnosť
Kontajnery sú vytvorené štandardnými mechanizmami jadra Linux — cgroups, menové priestory a seccomp, a ako systém na vynucovanie prístupu, teda pre dodatočnú izoláciu, sa používa v režime "enforcing".
Predvolene sú zapnuté politiky na rozdelenie zdrojov medzi kontajnery a jadrom. Binarne sú chránené flagmi, aby ich používatelia alebo programy nemohli vykonávať. A ak sa niekto dostane k súborovému systému, Bottlerocket ponúka nástroj na kontrolu a sledovanie akýchkoľvek vykonaných zmien.
Režim "overenej spúšťania" je realizovaný cez funkciu device-mapper-verity (), ktorá kontroluje integritu koreňového oddielu počas spúšťania. AWS opisuje dm-verity ako "funkciu jadra Linux, zabezpečujúcu kontrolu integrity na zabránenie spúšťaniu malware v OS, ako je prepísanie základného systémového softvéru".
V systéme je prítomný filter (rozšírené BPF, ), ktorý umožňuje nahrádzať jadrové moduly bezpečnejšími BPF programami pre nízkoúrovňové systémové operácie.
Model vykonávania
Určuje používateľ
Kompilácia
Bezpečnosť
Mód zlyhania
Prístup k zdrojom
Používateľ
úloha
áno
akýkoľvek
práva používateľov
prerušenie vykonávania
systémové volanie, chyba
Jadro
úloha
nie
statická
nie
panika jadra
priamy
BPF
udalost
áno
JIT, CO-RE
verifikácia, JIT
hlásenie o chybe
obmedzené pomocníci
Rozdiel medzi BPF a bežným používateľským alebo jadrovým kódom,
AWS oznámilo, že Bottlerocket „aplikuje prevádzkový model, ktorý ešte viac zvyšuje bezpečnosť, zabraňujúc pripojeniu k produkčným serverom s administrátorskými právami“, a „je vhodný pre veľké distribuované systémy, v ktorých je obmedzená kontrola nad každým jednotlivým hostiteľom“.
Pre systémových administrátorov je prítomný administrátorský kontajner. Ale AWS si nemyslí, že admin bude často musieť pracovať v Bottlerocket: „Akt prihlásenia do samostatného inštancie Bottlerocket je určený pre zriedkavé operácie: rozšírené ladenie a odstraňovanie problémov“, — vývojári.
Jazyk Rust
Nástroje OS nad jadrom sú prevažne napísané v Rust. Tento jazyk vo svojej podstate , ako aj .
Pri výstavbe sa predvolene aplikujú flagy --enable-default-pie a --enable-default-ssp na povolenie náhodnosti adresného priestoru vykonávacích súborov (, PIE) a ochrany proti pretečeniu zásobníka.
Pre balíčky v C/C++ sa dodatočne zapínajú flagy -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS a -fstack-clash-protection.
Okrem Rust a C/C++ sú niektoré balíčky napísané v jazyku Go.
Integrácia so službami AWS
Rozdiel od podobných kontajnerových operačných systémov spočíva v tom, že Amazon optimalizoval Bottlerocket pre prevádzku na AWS a integráciu s inými službami AWS.
Najpopulárnejším orchestrátorom kontajnerov je Kubernetes, takže AWS zaviedlo integráciu s vlastnou službou Enterprise Kubernetes Service (EKS). Nástroje na orchestráciu idú v samostatnom riadiacom kontajneri , ktorý je predvolene zahrnutý a spravovaný cez API a AWS SSM Agent.
Bude zaujímavé sledovať, či Bottlerocket vzletí, keďže niektoré podobné iniciatívy v minulosti zlyhali. Napríklad PhotonOS od VMWare sa ukázala ako nepoužiteľná a RedHat odkúpila CoreOS a , ktorý bol považovaný za priekopníka v tejto oblasti.
Integrácia Bottlerocket do služieb AWS robí tento systém jedinečným. Možno to je hlavný dôvod, prečo niektorí používateľia môžu uprednostniť Bottlerocket pred inými distribúciami, ako sú CoreOS alebo Alpine. Systém bol pôvodne navrhnutý na fungovanie s EKS a ECS, ale opakujeme, že to nie je nutné. Po prvé, Bottlerocket môžeme použiť aj ako hostované riešenie. Po druhé, používatelia EKS a ECS si aj naďalej zachovajú možnosť výberu OS.
Zdrojový kód Bottlerocket bol zverejnený na GitHub pod licenciou Apache 2.0. Vývojári už .
Na základe reklamy
VDSina ponúka . Je možné nainštalovať akýkoľvek operačný systém, vrátane vlastného obrazu. Každý server je pripojený na internetový kanál s rýchlosťou 500 Megabit a bezplatne chránený pred DDoS útokmi!
Zdroj: habr.com
