Amazonka
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
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 /etc
připojený se souborovým systémem v RAM /etc
není podporováno: pro uložení nastavení byste měli použít rozhraní API nebo přesunout funkci do samostatných kontejnerů.
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.
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í (
V systému je také filtr
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
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ů."
Rust jazyk
Instrumentace OS nad jádrem je většinou napsána v Rustu. Tento jazyk je ze své podstaty
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ů (
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
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
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
Zdrojový kód Bottlerocket je publikován na GitHubu pod licencí Apache 2.0. Vývojáři už ano
Jako reklama
VDSina nabízí
Zdroj: www.habr.com