„Amazon“ išleidžia „Bottlerocket 1.0.0“, „Linux“ platinimą, pagrįstą izoliuotais konteineriais

„Amazon“ kompanija pateiktas pirmasis reikšmingas specialaus Linux platinimo leidimas 1.0.0, skirtas efektyviai ir saugiai naudoti izoliuotus konteinerius. Platinimo įrankiai ir valdymo komponentai parašyti Rust ir skleisti pagal MIT ir Apache 2.0 licencijas. Projektas kuriamas GitHub ir jame gali dalyvauti bendruomenės nariai. Sistemos diegimo vaizdas sukurtas x86_64 ir Aarch64 architektūroms. OS pritaikyta veikti Amazon ECS ir AWS EKS Kubernetes klasteriuose. Yra numatyta įrankiai, skirti kurti savo rinkinius ir leidimus, kuriuose gali būti naudojami kiti orkestravimo įrankiai, branduoliai ir konteinerių vykdymo laikas.

Platinimas suteikia Linux branduolį ir minimalią sistemos aplinką, įskaitant tik komponentus, reikalingus konteineriams paleisti. Tarp projekte dalyvaujančių paketų yra sistemos tvarkyklė systemd, Glibc biblioteka ir surinkimo įrankiai
Buildroot, GRUB įkrovos programa, tinklo konfigūratorius nedoras, izoliuotų konteinerių veikimo laikas konteinerių, Kubernetes konteinerių orkestravimo platforma, aws-iam-autentifikatorius ir Amazon ECS agentas.

Paskirstymas atnaujinamas atomiškai ir pateikiamas kaip nedalomas sistemos vaizdas. Sistemai skiriami du disko skaidiniai, viename iš jų yra aktyvi sistema, o naujinimas nukopijuojamas į antrąjį. Įdiegus naujinimą, antrasis skaidinys tampa aktyvus, o pirmajame, kol ateina kitas naujinimas, išsaugoma ankstesnė sistemos versija, kurią, iškilus problemoms, galite grąžinti atgal. Atnaujinimai įdiegiami automatiškai be administratoriaus įsikišimo.

Pagrindinis skirtumas nuo panašių platinimų, tokių kaip Fedora CoreOS, CentOS/Red Hat Atomic Host, yra pagrindinis dėmesys maksimalus saugumas stiprinant sistemos apsaugą nuo galimų grėsmių, apsunkinant OS komponentų pažeidžiamumą ir didinant konteinerių izoliaciją. Konteineriai kuriami naudojant standartinius Linux branduolio mechanizmus – cgroups, namespaces ir seccomp. Papildomai izoliacijai paskirstymas naudoja SELinux vykdymo režimu, o modulis naudojamas kriptografiniam šakninio skaidinio vientisumo patikrinimui. dm-verity. Jei aptinkamas bandymas modifikuoti duomenis blokinio įrenginio lygiu, sistema paleidžiama iš naujo.

Šakninis skaidinys yra prijungtas tik skaityti, o /etc nustatymų skaidinys yra įtrauktas į tmpfs ir atkuriamas į pradinę būseną po paleidimo iš naujo. Tiesioginis failų keitimas /etc kataloge, pvz., /etc/resolv.conf ir /etc/containerd/config.toml, nepalaikomas – norėdami visam laikui išsaugoti nustatymus, turite naudoti API arba perkelti funkcionalumą į atskirus konteinerius.

Dauguma sistemos komponentų yra parašyti „Rust“ kalba, kuri suteikia atmintį saugančias funkcijas, kad būtų išvengta pažeidžiamumų, atsirandančių dėl laisvos atminties prieigos, nulinių rodyklės nuorodų ir buferio viršijimo. Kuriant pagal numatytuosius nustatymus, kompiliavimo režimai „--enable-default-pie“ ir „--enable-default-ssp“ naudojami, kad būtų galima atsitiktinai pasirinkti vykdomųjų failų adresų erdvę (PYRAGAS) ir kamino perpildymo apsauga naudojant kanarinį pakeitimą.
Paketams, parašytiems C/C++, pridedamos papildomos vėliavėlės
„-Siena“, „-Werror=format-security“, „-Wp,-D_FORTIFY_SOURCE=2“, „-Wp,-D_GLIBCXX_ASSERTIONS“ ir „-fstack-clash-protection“.

Konteinerių orkestravimo įrankiai tiekiami atskirai kontrolinis konteineris, kuris įjungtas pagal numatytuosius nustatymus ir valdomas per API ir AWS SSM agentas. Baziniame paveikslėlyje trūksta komandų apvalkalo, SSH serverio ir interpretuojamų kalbų (pavyzdžiui, nėra Python ar Perl) - administravimo įrankiai ir derinimo įrankiai yra atskiras aptarnavimo konteineris, kuris pagal numatytuosius nustatymus yra išjungtas.

Šaltinis: opennet.ru

Добавить комментарий