
Společnost Amazon o finální verzi — speciální distribuce pro spuštění kontejnerů a jejich efektivní správu.
Bottlerocket (mimochodem, tak se nazývají malé domácí rakety na dýmový prášek) není prvním operačním systémem pro kontejnery, ale je pravděpodobné, že se rozšíří díky výchozí integraci se službami AWS. I když je systém orientován na cloud Amazonu, otevřený zdroj umožňuje jeho sestavení kdekoli: lokálně na serveru, na Raspberry Pi, v jakémkoli konkurenčním cloudu a dokonce i v prostředí bez kontejnerů.
Je to zcela důstojná náhrada za distribuci CoreOS, kterou zrušila společnost Red Hat.
V zásadě má divize Amazon Web Services už Amazon Linux, který nedávno vyšel ve verzi 2: je to distribuce všeobecného určení, kterou lze spustit v kontejneru Docker nebo s hypervizory Linux KVM, Microsoft Hyper-V a VMware ESXi. Byla optimalizována pro práci v cloudu AWS, ale s uvedením Bottlerocketu se všem doporučuje provést upgrade na nový systém, který je bezpečnější, modernější a spotřebovává méně zdrojů.
AWS oznámila Bottlerocket . Okamžitě uznala, že to není první "Linux pro kontejnery", přičemž jako zdroje inspirace zmínila CoreOS, Rancher OS a Project Atomic. Vývojáři uvedli, že operační systém je "výsledkem lekcí, které jsme se naučili po dlouhých letech provozování výrobních služeb v měřítku Amazonu, a s ohledem na zkušenosti, které jsme získali za posledních šest let o tom, jak spouštět kontejnery."
Extrémní minimalismus
Linux je očištěn od všeho, co není potřeba k spuštění kontejnerů. Tento design, podle společnosti, zmenš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 vzniku problémů kvůli závislostem, čímž se snižuje využití zdrojů. V zásadě zde všechno funguje uvnitř oddělených kontejnerů, zatímco základní systém je prakticky holý.
Amazon také odstranila všechny shell a interpretery, čímž eliminuje riziko jejich využití nebo náhodného zvýšení oprávnění uživateli. V základním obraze pro minimalismus a bezpečnost chybí příkazový shell, server SSH a interpretably jako Python. Nástroje pro administrátora byly přesunuty do samostatného servisního kontejneru, který je ve výchozím nastavení deaktivován.
Správa systému je zajištěna dvěma způsoby: přes API a orchestrace.
Místo správce balíčků, který aktualizuje jednotlivé části softwaru, Bottlerocket načítá celý obraz souborového systému a restartuje do něj. V případě selhání spuštění se automaticky vrací zpět, a selhání pracovního zatížení může ručně vyvolat návrat (příkaz přes API).
Rámec (The Update Framework) načítá aktualizace na základě obrazů do alternativních nebo „odpojených“ oddílů. Pro systém jsou vyhrazeny dva diskové oddíly, z nichž jeden obsahuje aktivní systém a na druhém se kopíruje aktualizace. Přičemž kořenový oddíl je namontován v režimu pouze pro čtení, a oddíl /etc je namontován s filesystemem v operační paměti a obnovuje výchozí stav po restartu. Přímé změny konfiguračních souborů v /etc nejsou podporovány: pro zachování nastavení je třeba využívat API nebo přesunout funkčnost do samostatných kontejnerů.

Schéma aktualizace přes API
Bezpečnost
Kontejnery jsou vytvářeny standardními mechanismy jádra Linuxu — cgroups, namespaces a seccomp, a jako systém donucovací kontroly přístupu, tedy pro dodatečnou izolaci, je použito v režimu "enforcing".
Ve výchozím nastavení jsou zahrnuty politiky pro dělení zdrojů mezi kontejnery a jádrem. Binárky jsou chráněny flagy, aby je uživatelé nebo programy nemohli vykonávat. A pokud se někdo dostal k souborovému systému, Bottlerocket nabízí nástroj pro kontrolu a sledování jakýchkoli provedených změn.
Režim „ověřeného spouštění“ je realizován prostřednictvím funkce device-mapper-verity (), která kontroluje integritu kořenového oddílu během zavádění. AWS popisuje dm-verity jako „funkci jádra Linuxu, která zajišťuje kontrolu integrity, aby zabránila fungování škodlivého softwaru v OS, jako je přepisování základního systémového softwaru.“
Také v systému je přítomný filtr (rozšířený BPF, ), který umožňuje nahrazovat moduly jádra bezpečnějšími BPF programy pro nízkoúrovňové systémové operace.
Model provádění
Určeno uživateli
Kompilace
Bezpečnost
Režim selhání
Přístup k prostředkům
Uživatel
úkol
ano
jakýkoli
uživatelská práva
přerušení provádění
systémový volání, fault
Jádro
úkol
ne
statické
ne
panika jádra
přímé
BPF
událost
ano
JIT, CO-RE
ověřování, JIT
chybová zpráva
omezené pomocné nástroje
Rozdíl BPF od běžného uživatelského nebo jádrového kódu,
AWS uvedla, že Bottlerocket „aplikuje provozní model, který ještě více zvyšuje bezpečnost tím, že zabraňuje připojení k produkčním serverům s privilegii administrátora“, a „je vhodný pro velké distribuované systémy, kde je omezená kontrola nad každým jednotlivým hostitelem.“
Pro systémové administrátory je k dispozici kontejner správce. Ale AWS si nemyslí, že by správce často potřeboval pracovat uvnitř Bottlerocket: „Aktivita přihlášení se do jednotlivého instance Bottlerocket je určena pro nezvykle prováděné operace: pokročilé ladění a odstraňování problémů,“ vývojáři.
Jazyk Rust
Nástroje OS nad jádrem jsou většinou napsány v jazyce Rust. Tento jazyk z podstaty , a také .
Při sestavení se výchozím způsobem používají vlajky --enable-default-pie a --enable-default-ssp pro povolení randomizace adresního prostoru spustitelných souborů (, PIE) a ochranu proti přetečení zásobníku.
Pro balíčky v C/C++ se navíc přidávají vlajky -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS a -fstack-clash-protection.
Kromě Rust a C/C++ jsou některé balíčky napsány v jazyce Go.
Integrace s AWS službami
Rozdíl od obdobných kontejnerových operačních systémů spočívá v tom, že Amazon optimalizoval Bottlerocket pro práci na AWS a integraci s dalšími AWS službami.
Nejpopulárnějším orchestrace kontejnerů je Kubernetes, a proto AWS zavedla integraci se svým vlastním Enterprise Kubernetes Service (EKS). Nástroje pro orchestrace jsou umístěny v samostatném řídícím kontejneru , který je zapnutý ve výchozím nastavení a spravuje se přes API a AWS SSM Agent.
Bude zajímavé sledovat, zda Bottlerocket uspěje, vzhledem k neúspěchu některých podobných iniciativ v minulosti. Například PhotonOS od Vmware se ukázala jako nevyužitá, zatímco RedHat koupil CoreOS a , který byl považován za průkopníka v této oblasti.
Integrace Bottlerocket do služeb AWS činí tento systém v jistém smyslu unikátní. Možná právě to je hlavní důvod, proč mohou někteří uživatelé preferovat Bottlerocket před jinými distribucemi, jako jsou CoreOS nebo Alpine. Systém byl původně navržen pro práci s EKS a ECS, ale opakujeme, že to není nutné. Za prvé, Bottlerocket lze a použít například jako hosted řešení. Za druhé, uživatelé EKS a ECS si stále zachovávají možnost volby OS.
Zdrojový kód Bottlerocket je zveřejněn na GitHubu pod licencí Apache 2.0. Vývojáři již .
Na základě reklamy
VDSina nabízí . Je možné nainstalovat jakýkoli operační systém, včetně ze svého obrazu. Každý server je připojen k internetovému kanálu s rychlostí 500 Mbit a zdarma chráněn před DDoS útoky!
Zdroj: habr.com
