Pro provoz kontejnerů byla vydána minimalistická linuxová distribuce Bottlerocket. To nejdůležitější na něm

Pro provoz kontejnerů byla vydána minimalistická linuxová distribuce Bottlerocket. To nejdůležitější na něm

Amazonka oznámil o konečném vydání lahvová raketa — specializovaná distribuce pro provoz kontejnerů a jejich efektivní správu.

Bottlerocket (mimochodem, název pro malé domácí rakety na černý prach) není prvním OS pro kontejnery, ale je pravděpodobné, že se rozšíří díky výchozí integraci se službami AWS. Přestože je systém zaměřen na cloud Amazon, otevřený zdrojový kód umožňuje jeho vybudování kdekoli: lokálně na serveru, na Raspberry Pi, v jakémkoli konkurenčním cloudu a dokonce i v prostředí bez kontejnerů.

Jedná se o zcela důstojnou náhradu za distribuci CoreOS, kterou Red Hat pohřbil.

Divize Amazon Web Services již ve skutečnosti má Amazon Linux, který nedávno vyšel ve své druhé verzi: je to univerzální distribuce, kterou lze provozovat v kontejneru Docker nebo s Linux KVM, Microsoft Hyper-V a VMware. Hypervizory ESXi. Byl optimalizován pro provoz na cloudu AWS, ale s vydáním Bottlerocket jsou všichni vybízeni k upgradu na nový systém, který je bezpečnější, modernější a využívá méně zdrojů.

AWS oznámila Bottlerocket v březnu 2020. Okamžitě přiznala, že toto není první „Linux pro kontejnery“, přičemž jako zdroje inspirace uvedla CoreOS, Rancher OS a Project Atomic. Vývojáři napsali, že operační systém je „výsledkem lekcí, které jsme se naučili z provozování produkčních služeb v měřítku Amazonu po dlouhou dobu, a zkušeností, které jsme získali za posledních šest let o tom, jak provozovat kontejnery“.

Extrémní minimalismus

Linux je zbaven všeho, co není potřeba ke spuštění kontejnerů. Tento design podle společnosti snižuje útočnou plochu.

To znamená, že v základním systému je nainstalováno méně balíčků, což usnadňuje údržbu a aktualizaci operačního systému a také snižuje pravděpodobnost problémů v důsledku závislostí a snižuje spotřebu zdrojů. V podstatě vše zde funguje uvnitř samostatných kontejnerů a základní systém je prakticky holý.

Amazon také odstranil všechny shelly a tlumočníky, čímž se eliminovalo riziko jejich použití nebo náhodného eskalování oprávnění uživateli. Z důvodu minimalismu a bezpečnosti základní obraz neobsahuje příkazový shell, SSH server ani interpretované jazyky jako Python. Nástroje správce jsou umístěny v samostatném kontejneru služeb, který je ve výchozím nastavení zakázán.

Systém je spravován dvěma způsoby: přes API a orchestraci.

Místo správce balíčků, který aktualizuje jednotlivé části softwaru, Bottlerocket stáhne kompletní obraz souborového systému a restartuje se do něj. Pokud se načtení nezdaří, automaticky se vrátí zpět a selhání pracovního zatížení může spustit vrácení ručně (příkaz přes API).

Rámec TUF (The Update Framework) stahuje aktualizace založené na obrazech do alternativních nebo „nepřipojených“ oddílů. Systému jsou přiděleny dva diskové oddíly, z nichž jeden obsahuje aktivní systém a aktualizace se zkopíruje do druhého. V tomto případě je kořenový oddíl připojen v režimu pouze pro čtení a oddíl /etc připojený se souborovým systémem v RAM tmpfs a po restartu obnoví původní stav. Přímá úprava konfiguračních souborů v /etc není podporováno: pro uložení nastavení byste měli použít rozhraní API nebo přesunout funkci do samostatných kontejnerů.

Pro provoz kontejnerů byla vydána minimalistická linuxová distribuce Bottlerocket. To nejdůležitější na něm
Schéma aktualizace API

zabezpečení

Kontejnery jsou vytvářeny standardními mechanismy linuxového jádra - cgroups, jmennými prostory a seccomp a používají se jako systém vynuceného přístupu, tedy pro dodatečnou izolaci. SELinux v režimu „vynucování“.

Ve výchozím nastavení jsou zásady povoleny pro sdílení prostředků mezi kontejnery a jádrem. Binární soubory jsou chráněny pomocí příznaků, které uživatelům nebo programům brání v jejich spouštění. A pokud se někdo dostane k systému souborů, Bottlerocket nabízí nástroj pro kontrolu a sledování všech provedených změn.

Režim „ověřeného spouštění“ je implementován prostřednictvím funkce mapovače zařízení (dm-pravda), který kontroluje integritu kořenového oddílu během spouštění. AWS popisuje dm-verity jako „funkci linuxového jádra, která zajišťuje kontroly integrity, aby se zabránilo spouštění malwaru v operačním systému, jako je přepsání základního softwaru systému“.

V systému je také filtr eGMP (rozšířená BPF, vyvinutý Alexejem Starovoitovem), který umožňuje nahrazení modulů jádra bezpečnějšími programy BPF pro nízkoúrovňové systémové operace.

Model provedení
Definováno uživatelem
Kompilace
zabezpečení
Režim selhání
Přístup ke zdrojům

Uživatel
úkol
ano
Každý
uživatelská práva
přerušit provádění
systémové volání, porucha

Core
úkol
ne
statický
ne
jaderná panika
прямой

BPF
událost
ano
JIT, CO-RE
ověření, JIT
chybové hlášení
omezení pomocníci

Jak se BPF liší od běžného uživatelského kódu nebo kódu na úrovni jádra zdroj

AWS uvedl, že Bottlerocket „využívá provozní model, který dále zvyšuje bezpečnost tím, že brání připojení k produkčním serverům s oprávněními správce“ a je „vhodný pro velké distribuované systémy, kde je kontrola nad každým jednotlivým hostitelem omezená“.

Pro správce systému je k dispozici kontejner správce. Ale AWS si nemyslí, že by admin musel často pracovat v Bottlerocket: "Akt přihlášení do samostatné instance Bottlerocket je určen pro občasné operace: pokročilé ladění a odstraňování problémů." zapsat vývojáři.

Rust jazyk

Instrumentace OS nad jádrem je většinou napsána v Rustu. Tento jazyk je ze své podstaty snižuje pravděpodobnost nebezpečného přístupu do pamětia eliminuje rasové podmínky mezi vlákny.

Vlajky se při stavění používají ve výchozím nastavení --enable-default-pie и --enable-default-ssp umožnit randomizaci adresového prostoru spustitelných souborů (pozičně nezávislý spustitelný soubor, PIE) a ochrana proti přetečení zásobníku.

Pro balíčky C/C++ jsou zahrnuty další příznaky -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Kromě Rust a C/C++ jsou některé balíčky napsány v Go.

Integrace se službami AWS

Rozdíl od podobných kontejnerových operačních systémů je v tom, že Amazon optimalizoval Bottlerocket tak, aby běžel na AWS a integroval se s dalšími službami AWS.

Nejoblíbenějším kontejnerovým orchestrátorem je Kubernetes, takže AWS zavedlo integraci s vlastní Enterprise Kubernetes Service (EKS). Orchestrační nástroje se dodávají v samostatném ovládacím kontejneru bottlerocket-control-container, která je ve výchozím nastavení povolena a spravována prostřednictvím API a AWS SSM Agent.

Bude zajímavé sledovat, zda se Bottlerocket rozjede, vzhledem k neúspěchu některých podobných iniciativ v minulosti. Například PhotonOS od Vmware se ukázal jako nevyžádaný a RedHat koupil CoreOS a projekt uzavřel, který byl považován za průkopníka v oboru.

Díky integraci Bottlerocket do služeb AWS je tento systém svým způsobem jedinečný. To je možná hlavní důvod, proč někteří uživatelé mohou preferovat Bottlerocket před jinými distribucemi, jako je CoreOS nebo Alpine. Systém je zpočátku navržen pro práci s EKS a ECS, ale opakujeme, že to není nutné. Za prvé, Bottlerocket může sestavit sami a použít jej například jako hostované řešení. Za druhé, uživatelé EKS a ECS budou mít stále možnost vybrat si svůj operační systém.

Zdrojový kód Bottlerocket je publikován na GitHubu pod licencí Apache 2.0. Vývojáři už ano reagovat na hlášení chyb a požadavky na funkce.

Jako reklama

VDSina nabízí VDS s denní platbou. Je možné nainstalovat jakýkoli operační systém, včetně vlastního obrazu. Každý server je připojen k internetovému kanálu 500 megabitů a je zdarma chráněn před útoky DDoS!

Pro provoz kontejnerů byla vydána minimalistická linuxová distribuce Bottlerocket. To nejdůležitější na něm

Zdroj: www.habr.com

Přidat komentář