Megjelent egy minimalista Linux disztribúció, a Bottlerocket, konténerek futtatására. A legfontosabb tudnivalók róla

Megjelent egy minimalista Linux disztribúció, a Bottlerocket, konténerek futtatására. A legfontosabb tudnivalók róla

Amazon cég bejelentette a végső megjelenésről Bottlerocket — egy speciális disztribúció a konténerek futtatására és hatékony kezelésére.

A Bottlerocket (mellesleg, így hívják a kis házi rakétákat, amelyeket füstlőporral készítenek) nem az első operációs rendszer a konténerekhez, de valószínű, hogy széles körben elterjed majd az AWS szolgáltatásokkal való alapértelmezett integráció miatt. Bár a rendszer az Amazon felhőre épül, a nyílt forráskód lehetővé teszi, hogy bárhol összerakják: helyben egy szerveren, Raspberry Pi-n, bármilyen versenytársnál, sőt, még konténerek nélküli környezetben is.

Ez egy teljesen megfelelő alternatíva a Red Hat által megsemmisített CoreOS disztribúcióhoz.

Az Amazon Web Services már rendelkezik az Amazon Linuxszal, amely nemrégiben megjelent a második verziójával: ez egy általános célú disztribúció, amely futtatható Docker konténerben vagy Linux KVM, Microsoft Hyper-V és VMware ESXi hypervisorokkal. Az AWS felhőben való munkára optimalizálták, de a Bottlerocket megjelenésével mindenkinek ajánlott frissítenie az új rendszerre, amely biztonságosabb, modernebb és kevesebb erőforrást igényel.

Az AWS 2020 márciusában bejelentette a Bottlerocket-ot . Azonnal elismerte, hogy ez nem az első "Linux a konténerekhez", említve a CoreOS-t, Rancher OS-t és a Project Atomic-ot inspirációs forrásként. A fejlesztők azt írták, hogy az operációs rendszer "azoknak a tanulságoknak az eredménye, amelyeket hosszú ideig tartó Amazon szolgáltatásaink futtatásából vontunk le, és figyelembe véve az elmúlt hat év tapasztalatait a konténerek futtatásáról".Extrém minimalizmus

A Linux mindentől mentes, ami nem szükséges a konténerek futtatásához. Ez a kialakítás, a vállalat szerint, csökkenti a támadási felületet.

Ez azt jelenti, hogy az alaprendszer kevesebb csomagot tartalmaz, ami megkönnyíti az operációs rendszer támogatását és frissítését, valamint csökkenti a függőségek miatti problémák előfordulásának valószínűségét, és csökkenti az erőforrások használatát. Alapvetően minden itt külön konténerekben fut, az alap rendszer pedig gyakorlatilag üres.

Ez azt jelenti, hogy az alapértelmezett rendszerben kevesebb csomag települ, ami megkönnyíti az operációs rendszer támogatását és frissítését, valamint csökkenti a függőségek miatti problémák valószínűségét és a források felhasználását. Alapvetően itt minden különálló konténerekben működik, az alapértelmezett rendszer pedig gyakorlatilag üres.

Az Amazon eltávolította az összes shellt és interpretert, kizárva a felhasználók véletlenszerű privilégiumemelésének kockázatát. Az alap képen a minimalizmus és a biztonság érdekében hiányzik a parancssor, az SSH szerver és az olyan értelmező nyelvek, mint a Python. Az adminisztrátori eszközök egy külön szolgáltató konténerbe kerültek, amely alapértelmezetten ki van kapcsolva.

A rendszer kezelése két módon történik: API-n keresztül és orchestrációval.

Ahelyett, hogy csomagkezelőt használna, amely az egyes szoftverkomponenseket frissíti, a Bottlerocket egy teljes fájlrendszerképet tölt le és újraindul erre. Ha a rendszerindítás meghiúsul, automatikusan visszaáll a korábbi állapotra, és egy munkaterhelés meghibásodása manuális visszaállítást indíthat el (API-n keresztüli parancs).

Keretrendszer TUF (The Update Framework) alternatív vagy „lecsatolt” partíciókba tölti fel a frissítéseket. A rendszerhez két lemezpartíciót különítettek el, az egyik az aktív rendszert tartalmazza, míg a másikon a frissítés másolódik. Az alappartíció írásvédett módban van csatolva, míg a /etc a memóriában található fájlrendszerrel van csatolva tmpfs és az újraindítás után visszaállítja az eredeti állapotot. A konfigurációs fájlok közvetlen módosítása a /etc nem támogatott: a beállítások megőrzéséhez API-t kell használni vagy a funkcionalitást külön konténerekbe kell helyezni.

Megjelent egy minimalista Linux disztribúció, a Bottlerocket, konténerek futtatására. A legfontosabb tudnivalók róla
Az API-n keresztüli frissítési séma

Biztonság

A konténerek a Linux kernel beépített mechanizmusai által — cgroups, névterek és seccomp segítségével — jönnek létre, és a kényszerített hozzáférés-szabályozási rendszert, azaz a további izoláció érdekében SELinux és "enforcing" módban van.

Alapértelmezés szerint bekapcsolt politikák vannak a források konténerek és a kernel közötti elosztására. A bináris fájlokat védFlags által védik, hogy a felhasználók vagy programok ne tudják azokat végrehajtani. Ha valaki hozzáfér a fájlrendszerhez, a Bottlerocket eszközt kínál a feltett módosítások ellenőrzésére és nyomon követésére.

A „megbízható indítás” módja a device-mapper-verity funkción keresztül valósul meg (dm-verity), amely az alapvető partíció integritását ellenőrzi induláskor. Az AWS a dm-verity-t úgy írja le, mint a „Linux kernel egy olyan funkcióját, amely az integritás ellenőrzését biztosítja, hogy megakadályozza a rosszindulatú programok működését az operációs rendszerben, például a fő rendszerprogram szoftverének felülírását”.

A rendszerben egy szűrő is található, eBPF (bővített BPF, Alekszej Starovojtov fejlesztése), amely lehetővé teszi, hogy a kernel modulokat biztonságosabb BPF programokkal váltsák fel az alacsony szintű rendszerfolyamatokhoz.

Futtatási modell
A felhasználó által meghatározva
Komplikáció
Biztonság
Hiba üzemmód
Erőforrás-hozzáférés

Felhasználó
a Linaro szakemberei fejlesztik, akik nyílt forráskódú szoftver optimalizálásával foglalkoznak ARM platformokra.
igen
bármely
felhasználói jogok
végrehajtás megszakítása
rendszerhívás, hiba

Kernel
a Linaro szakemberei fejlesztik, akik nyílt forráskódú szoftver optimalizálásával foglalkoznak ARM platformokra.
nem
statikus
nem
kernel pánik
közvetlen

BPF
esemény
igen
JIT, CO-RE
ellenőrzés, JIT
hibajelentés
korlátozott segítők

A BPF eltér az általános felhasználói vagy kernel kódoktól, forrás

Az AWS kijelentette, hogy a Bottlerocket "egy olyan működési modellt alkalmaz, amely még inkább növeli a biztonságot, meggátolva az adminisztrátori jogosultságokkal rendelkező csatlakozást a termelési szerverekhez", és "nagy elosztott rendszerekhez alkalmas, ahol korlátozott a kontroll minden egyes gazdagép felett."

Rendszergazdák számára adminisztrátori konténer áll rendelkezésre. Az AWS azonban nem gondolja, hogy az adminisztrátor gyakran dolgozna a Bottlerocketban: "Egy adott Bottlerocket példányhoz való belépés aktusa az olyan ritka műveletekre szolgál, mint az elmélyített hibakeresés és diagnosztika" — írták, fejlesztők.

A Rust nyelve

Az operációs rendszer eszközkészlete főként Rust nyelven íródott. Ez a nyelv természeténél fogva csökkenti a memóriahoz való biztonságtalan hozzáférés valószínűségét, valamint megakadályozza a versenyhelyzeteket a szálak között.

Alapértelmezés szerint a következő zászlók alkalmazásra kerülnek --enable-default-pie és --enable-default-ssp a végrehajtható fájlok címtér randomizálása érdekében (pozíciófüggetlen végrehajtható, PIE) és a verem túlcsordulásának megakadályozására.

A C/C++ csomagokhoz további zászlók kerülnek hozzáadásra. -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS és -fstack-clash-protection.

A Rust és C/C++ mellett néhány csomag Go nyelven íródott.

Integráció az AWS szolgáltatásokkal

A hasonló konténer operációs rendszerektől való eltérés az, hogy az Amazon optimalizálta a Bottlerocketet az AWS-en való működéshez és az AWS egyéb szolgáltatásaival való integrációhoz.

A legnépszerűbb konténerorchestrátor a Kubernetes, ezért az AWS integrálta saját Enterprise Kubernetes Service-ét (EKS). Az orchestration eszközök egy külön kezelő konténerben találhatók bottlerocket-control-container, amely alapértelmezés szerint van aktiválva, és az API-n és az AWS SSM Agent-en keresztül irányítják.

Érdekes lesz látni, hogy a Bottlerocket hogyan fog teljesíteni, figyelembe véve néhány hasonló kezdeményezés korábbi kudarcát. Például a Vmware PhotonOS nem vált népszerűvé, míg a RedHat megvásárolta a CoreOS-t és leállította a projektet, amelyet a terület úttörőjének tartottak.

A Bottlerocket AWS-be való integrálása egyedi jelleget ad ennek a rendszernek. Lehet, hogy ez a fő oka annak, hogy egyes felhasználók miért választhatják a Bottlerocket-ot más disztribúciók, például a CoreOS vagy az Alpine helyett. A rendszer eredetileg az EKS és az ECS működésére van tervezve, de hangsúlyozni kell, hogy ez nem kötelező. Először is, a Bottlerocket-ot saját magunk is összeállíthatjuk és használhatjuk például hibrid megoldásként. Másodszor, az EKS és ECS felhasználói továbbra is megőrizhetik az operációs rendszer választásának lehetőségét.

A Bottlerocket forráskódja a GitHub-on található Apache 2.0 licenc alatt. A fejlesztők már válaszolnak a hibajelentésekre és a funkciókérésre.

Hirdetés

VDSina ajánlatot tesz VDS napi díjjal. Bármilyen operációs rendszer telepíthető, beleértve a saját képeit is. Minden szerver 500 Megabit internetkapcsolatra van csatlakoztatva, és ingyenesen védve van a DDoS támadások ellen!

Megjelent egy minimalista Linux disztribúció, a Bottlerocket, konténerek futtatására. A legfontosabb tudnivalók róla

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster