Izdanje Bottlerocket 1.3, distribucije temeljene na izoliranim spremnicima

Objavljeno je izdanje Linux distribucije Bottlerocket 1.3.0, razvijene uz sudjelovanje Amazona za učinkovito i sigurno pokretanje izoliranih spremnika. Distribucijski alati i kontrolne komponente napisani su u Rustu i distribuiraju se pod licencama MIT i Apache 2.0. Podržava pokretanje Bottlerocketa na klasterima Amazon ECS, VMware i AWS EKS Kubernetes, kao i stvaranje prilagođenih verzija i izdanja koja dopuštaju upotrebu raznih alata za orkestraciju i vrijeme izvođenja za spremnike.

Distribucija pruža atomski i automatski ažuriranu nedjeljivu sliku sustava koja uključuje Linux kernel i minimalno okruženje sustava, uključujući samo komponente potrebne za pokretanje spremnika. Okruženje uključuje upravitelja sustava systemd, biblioteku Glibc, alat za izgradnju Buildroot, GRUB boot loader, opaki mrežni konfigurator, runtime spremnika za izolirane spremnike, Kubernetes platformu za orkestraciju spremnika, aws-iam-authenticator i Amazon ECS agent.

Alati za orkestraciju spremnika dolaze u zasebnom spremniku za upravljanje koji je omogućen prema zadanim postavkama i njime se upravlja putem API-ja i AWS SSM agenta. Osnovnoj slici nedostaje naredbena ljuska, SSH poslužitelj i interpretirani jezici (na primjer, nema Python ili Perl) - administrativni alati i alati za otklanjanje pogrešaka smješteni su u zasebni spremnik usluge, koji je prema zadanim postavkama onemogućen.

Ključna razlika u odnosu na slične distribucije kao što su Fedora CoreOS, CentOS/Red Hat Atomic Host je primarni fokus na pružanje maksimalne sigurnosti u kontekstu jačanja zaštite sustava od mogućih prijetnji, što otežava iskorištavanje ranjivosti u komponentama OS-a i povećava izolaciju spremnika . Spremnici se stvaraju korištenjem standardnih mehanizama Linux kernela - cgroups, namespaces i seccomp. Za dodatnu izolaciju, distribucija koristi SELinux u načinu "provođenja".

Korijenska particija je montirana samo za čitanje, a /etc particija postavki je montirana u tmpfs i vraćena u svoje izvorno stanje nakon ponovnog pokretanja. Izravna izmjena datoteka u /etc direktoriju, kao što su /etc/resolv.conf i /etc/containerd/config.toml, nije podržana - da biste trajno spremili postavke, morate koristiti API ili premjestiti funkcionalnost u zasebne spremnike. Modul dm-verity koristi se za kriptografsku provjeru integriteta root particije, a ako se otkrije pokušaj izmjene podataka na razini blok uređaja, sustav se ponovno pokreće.

Većina komponenti sustava napisana je u Rustu, koji pruža značajke za sigurnost memorije kako bi se izbjegle ranjivosti uzrokovane pristupima memoriji nakon oslobađanja, dereferenciranjem nultog pokazivača i prekoračenjem međuspremnika. Prilikom izrade prema zadanim postavkama, načini kompilacije "-enable-default-pie" i "-enable-default-ssp" koriste se za omogućavanje nasumičnog odabira adresnog prostora izvršne datoteke (PIE) i zaštitu od preljeva stogova kroz canary zamjenu. Za pakete napisane u C/C++ dodatno su zastavice “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” i “-fstack-clash” omogućena - zaštita".

U novom izdanju:

  • Ispravljene ranjivosti u docker i runtime kontejnerskim alatima (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) povezane s netočnim postavljanjem prava pristupa, što je omogućilo neprivilegiranim korisnicima da odu izvan baze imenik i izvršavanje vanjskih programa.
  • Podrška za IPv6 dodana je u kubelet i pluto.
  • Moguće je ponovno pokrenuti spremnik nakon promjene njegovih postavki.
  • Podrška za Amazon EC2 M6i instance dodana je paketu eni-max-pods.
  • Open-vm-tools je dodao podršku za filtere uređaja, temeljene na alatu Cilium.
  • Za platformu x86_64 implementiran je hibridni način pokretanja (s podrškom za EFI i BIOS).
  • Ažurirane verzije paketa i ovisnosti za Rust jezik.
  • Podrška za varijantu distribucije aws-k8s-1.17 koja se temelji na Kubernetesu 1.17 je prekinuta. Preporuča se korištenje verzije aws-k8s-1.21 s podrškom za Kubernetes 1.21. K8s varijante koriste postavke cgroup runtime.slice i system.slice.

Izvor: opennet.ru

Dodajte komentar