Izdanje Bottlerocketa 1.3, distribucije zasnovane na izolovanim kontejnerima

Objavljeno je izdanje Linux distribucije Bottlerocket 1.3.0, razvijene uz učešće Amazona za efikasno i sigurno pokretanje izolovanih kontejnera. Alati i kontrolne komponente distribucije su napisane na Rustu i distribuiraju se pod licencama MIT i Apache 2.0. Podržava pokretanje Bottlerocket-a na Amazon ECS, VMware i AWS EKS Kubernetes klasterima, kao i kreiranje prilagođenih build-ova i izdanja koja omogućavaju korištenje različitih alata za orkestraciju i vrijeme izvođenja za kontejnere.

Distribucija pruža atomski i automatski ažuriranu nedjeljivu sliku sistema koja uključuje Linux kernel i minimalno sistemsko okruženje, uključujući samo komponente potrebne za pokretanje kontejnera. Okruženje uključuje systemd upravitelja sistema, Glibc biblioteku, alat za pravljenje Buildroot, GRUB pokretač, konfigurator opake mreže, vrijeme izvođenja kontejnera za izolovane kontejnere, platformu za orkestraciju Kubernetes kontejnera, aws-iam-authenticator i Amazon ECS agent.

Alati za orkestraciju kontejnera dolaze u zasebnom kontejneru za upravljanje koji je podrazumevano omogućen i kojim se upravlja preko API-ja i AWS SSM agenta. Osnovnoj slici nedostaju komandna školjka, SSH server i interpretirani jezici (na primjer, bez Python-a ili Perl-a) - administrativni alati i alati za otklanjanje grešaka smješteni su u poseban servisni kontejner, koji je po defaultu 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žanju maksimalne sigurnosti u kontekstu jačanja zaštite sistema od mogućih prijetnji, što otežava iskorištavanje ranjivosti u komponentama OS-a i povećava izolaciju kontejnera. . Kontejneri se kreiraju korištenjem standardnih mehanizama jezgre Linuxa - cgroups, namespaces i seccomp. Za dodatnu izolaciju, distribucija koristi SELinux u "prisilnom" načinu.

Korijenska particija se montira samo za čitanje, a /etc settings particija se montira u tmpfs i vraća u prvobitno stanje nakon ponovnog pokretanja. Direktna modifikacija datoteka u /etc direktoriju, kao što su /etc/resolv.conf i /etc/containerd/config.toml, nije podržana - da biste trajno sačuvali postavke, morate koristiti API ili premjestiti funkcionalnost u zasebne spremnike. Modul dm-verity se koristi za kriptografsku provjeru integriteta root particije, a ako se otkrije pokušaj izmjene podataka na razini blok uređaja, sistem se ponovo pokreće.

Većina sistemskih komponenti je napisana u Rustu, koji pruža funkcije sigurne za memoriju kako bi se izbjegle ranjivosti uzrokovane naknadnim pristupima memoriji, nultim dereferencijama pokazivača i prekoračenjem bafera. Kada se gradi po defaultu, koriste se načini kompilacije "-enable-default-pie" i "-enable-default-ssp" kako bi se omogućila randomizacija adresnog prostora izvršne datoteke (PIE) i zaštita od prekoračenja steka kroz kanarsku supstituciju. Za pakete napisane na C/C++, zastavice “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” i “-fstack-clash” su dodatno 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) u vezi sa netačnim postavljanjem prava pristupa, što je omogućilo neprivilegovanim korisnicima da idu dalje od direktorijum i izvršavanje eksternih programa.
  • Podrška za IPv6 je dodata kubeletu i plutonu.
  • Moguće je ponovo pokrenuti kontejner nakon promjene njegovih postavki.
  • Podrška za Amazon EC2 M6i instance dodata je paketu eni-max-pods.
  • Open-vm-tools ima dodatnu podršku za filtere uređaja, baziranu na Cilium kompletu alata.
  • Za platformu x86_64 implementiran je hibridni režim pokretanja (sa podrškom za EFI i BIOS).
  • Ažurirane verzije paketa i zavisnosti za Rust jezik.
  • Podrška za varijantu distribucije aws-k8s-1.17 zasnovanu na Kubernetes 1.17 je ukinuta. Preporučljivo je koristiti verziju aws-k8s-1.21 sa podrškom za Kubernetes 1.21. K8s varijante koriste postavke cgroup runtime.slice i system.slice.

izvor: opennet.ru

Dodajte komentar