Dostupan je izdanak Linux distribucije Bottlerocket 1.1.0, koji se razvija uz sudjelovanje tvrtke Amazon za učinkovito i sigurno pokretanje izoliranih kontejnera. Alati i upravljačke komponente distribucije napisane su na jeziku Rust i distribuiraju se pod MIT i Apache 2.0 licencama. Podržano je pokretanje Bottlerocket u Amazon ECS klasterima i AWS EKS Kubernetesu, kao i kreiranje prilagođenih izdanja koja dopuštaju korištenje različitih orkestracijskih alata i runtimea za kontejnere.
Distribucija pruža atomsku i automatski ažuriranu nedjeljivu sistemsku sliku, koja uključuje Linux kernel i minimalno sistemsko okruženje, uključujući samo komponente potrebne za pokretanje kontejnera. U okruženju se koriste sistemski upravljač systemd, biblioteka Glibc, alat za izgradnju Buildroot, bootloader GRUB, konfigurator mreže wicked, runtime za izolirane kontejnere containerd, platforma za orkestraciju kontejnera Kubernetes, autentifikator aws-iam-authenticator i agent Amazon ECS.
Alati za orkestraciju kontejnera isporučuju se u zasebnom upravljačkom kontejneru, koji je uključen prema zadanim postavkama i upravlja se putem API-a i AWS SSM Agent-a. U osnovnoj slici nedostaje komandna ljuska, server SSH i interpretirani jezici (primjerice, nedostaju Python ili Perl) — alati za administratora i alati za debagiranje premješteni su u zaseban servisni kontejner, koji je prema zadanim postavkama isključen.
Ključna razlika u odnosu na slične distribucije, poput Fedora CoreOS, CentOS/Red Hat Atomic Host, jest primarna orijentacija na pružanje maksimalne sigurnosti u kontekstu jačanja zaštite sustava od mogućih prijetnji, otežavanja iskorištavanja ranjivosti u komponentama OS-a i povećanja izolacije kontejnera. Kontejneri se kreiraju pomoću ugrađenih mehanizama Linux kernela — cgroups, prostora imena i seccomp. Za dodatnu izolaciju u distribuciji se koristi SELinux u načinu rada 'enforcing'.
Korijenski odjeljak montira se u režimu samo za čitanje, a odjeljak s postavkama /etc montira se u tmpfs i obnavlja izvorno stanje nakon ponovnog pokretanja. Izravna izmjena datoteka u direktoriju /etc, poput /etc/resolv.conf i /etc/containerd/config.toml, nije podržana — za trajno spremanje postavki treba koristiti API ili iznijeti funkcionalnost u odvojene kontejnere. Za kriptografsku verifikaciju cjelovitosti korijenskog odjeljka uključen je modul dm-verity, a u slučaju otkrivanja pokušaja modifikacije podataka na razini blok uređaja sustav se ponovo pokreće.
Većina sustavnih komponenti napisana je na jeziku Rust, koji pruža sredstva za sigurni rad s memorijom, čime se izbjegavaju ranjivosti uzrokovane pristupom području memorije nakon njegovog oslobađanja, dereferenciranjem nultih pokazivača i izlaskom iz granica bafera. Tijekom izrade prema zadanim postavkama primjenjuju se opcije kompilacije "--enable-default-pie" i "--enable-default-ssp" za uključivanje randomizacije adresnog prostora izvršnih datoteka (PIE) i zaštite od preljeva stoga putem zamjene kanarinskih oznaka. Za pakete napisane na jeziku C/C++, dodatno se uključuju oznake "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" i "-fstack-clash-protection".
U novom izdanju:
- Predložena su dva nova modela distribucije aws-k8s-1.20 i vmware-k8s-1.20 s podrškom za Kubernetes 1.20. U ovim modelima, kao i u ažuriranom modelu aws-ecs-1, korištena je nova verzija Linux kernela 5.10. Način lockdown je prema zadanoj postavci prebačen na vrijednost 'integrity' (onemogućene su mogućnosti koje omogućuju promjene u aktivnom kernelu iz prostora korisnika). Podrška za model aws-k8s-1.15 temeljen na Kubernetes 1.15 je prekinuta.
- Za Amazon ECS implementirana je podrška za mrežni način awsvpc, koji omogućuje dodjeljivanje zasebnih mrežnih sučelja i unutarnjih IP adrese za svaku zadaću.
- Dodane su postavke za upravljanje raznim parametrima Kubernetes-a, uključujući QPS, limite na bazenima i mogućnost povezivanja s cloud provajderima koji nisu AWS.
- U bootstrap kontejneru osigurano je ograničenje pristupa podacima korisnika pomoću SELinux-a.
- Dodana je alatka resize2fs.
Izvor: opennet.ru
