Izdaja Bottlerocket 1.3, distribucije, ki temelji na izoliranih vsebnikih

Objavljena je bila izdaja distribucije Linuxa Bottlerocket 1.3.0, ki je bila razvita s sodelovanjem Amazona za učinkovit in varen zagon izoliranih vsebnikov. Orodja in nadzorne komponente distribucije so napisane v Rustu in se distribuirajo pod licencama MIT in Apache 2.0. Podpira zagon Bottlerocket v gruči Amazon ECS, VMware in AWS EKS Kubernetes ter ustvarjanje gradenj in izdaj po meri, ki omogočajo uporabo različnih orodij za orkestracijo in izvajanje za vsebnike.

Distribucija zagotavlja atomsko in samodejno posodobljeno nedeljivo sliko sistema, ki vključuje jedro Linuxa in minimalno sistemsko okolje, vključno s komponentami, potrebnimi za zagon vsebnikov. Okolje vključuje upravitelja sistema systemd, knjižnico Glibc, orodje za gradnjo Buildroot, zagonski nalagalnik GRUB, zloben omrežni konfigurator, izvajalno okolje vsebnika za izolirane vsebnike, platformo za orkestracijo vsebnikov Kubernetes, aws-iam-authenticator in Amazon ECS agent.

Orodja za orkestracijo vsebnika so v ločenem vsebniku za upravljanje, ki je privzeto omogočen in se upravlja prek API-ja in agenta AWS SSM. Osnovni sliki manjka ukazna lupina, strežnik SSH in interpretirani jeziki (na primer brez Pythona ali Perla) - skrbniška orodja in orodja za odpravljanje napak so nameščena v ločenem storitvenem vsebniku, ki je privzeto onemogočen.

Ključna razlika od podobnih distribucij, kot so Fedora CoreOS, CentOS/Red Hat Atomic Host, je primarna osredotočenost na zagotavljanje maksimalne varnosti v kontekstu krepitve zaščite sistema pred možnimi grožnjami, oteževanje izkoriščanja ranljivosti v komponentah OS in povečanje izolacije vsebnika. . Vsebniki so ustvarjeni s standardnimi mehanizmi jedra Linuxa - cgroups, namespaces in seccomp. Za dodatno izolacijo distribucija uporablja SELinux v načinu »uveljavljanje«.

Korenska particija je nameščena samo za branje, particija z nastavitvami /etc pa je nameščena v tmpfs in po vnovičnem zagonu obnovljena v prvotno stanje. Neposredno spreminjanje datotek v imeniku /etc, kot sta /etc/resolv.conf in /etc/containerd/config.toml, ni podprto – če želite trajno shraniti nastavitve, morate uporabiti API ali premakniti funkcionalnost v ločene vsebnike. Modul dm-verity se uporablja za kriptografsko preverjanje celovitosti korenske particije in če je zaznan poskus spreminjanja podatkov na ravni blokovne naprave, se sistem znova zažene.

Večina sistemskih komponent je napisanih v Rustu, ki zagotavlja varne funkcije za pomnilnik, da se izognemo ranljivostim, ki jih povzročajo dostopi do pomnilnika po sprostitvi, dereference ničelnega kazalca in prekoračitve medpomnilnika. Pri privzeti gradnji se načina prevajanja "-enable-default-pie" in "-enable-default-ssp" uporabljata za omogočanje naključne razvrstitve naslovnega prostora izvršljivih datotek (PIE) in zaščito pred prelivi skladov s kanarsko zamenjavo. Za pakete, napisane v C/C++, so zastavice “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” in “-fstack-clash” dodatno omogočeno - zaščita".

V novi izdaji:

  • Odpravljene ranljivosti v orodjih docker in runtime container (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103), povezane z nepravilno nastavitvijo pravic dostopa, ki je neprivilegiranim uporabnikom omogočila, da presežejo osnovno imenik in izvajati zunanje programe.
  • Podpora za IPv6 je bila dodana v kubelet in pluto.
  • Vsebnik je mogoče znova zagnati po spremembi njegovih nastavitev.
  • Podpora za instance Amazon EC2 M6i je bila dodana v paket eni-max-pods.
  • Open-vm-tools je dodal podporo za filtre naprav, ki temelji na kompletu orodij Cilium.
  • Za platformo x86_64 je implementiran hibridni način zagona (s podporo za EFI in BIOS).
  • Posodobljene različice paketov in odvisnosti za jezik Rust.
  • Podpora za distribucijsko različico aws-k8s-1.17, ki temelji na Kubernetesu 1.17, je bila ukinjena. Priporočljiva je uporaba različice aws-k8s-1.21 s podporo za Kubernetes 1.21. Različice k8s uporabljajo nastavitvi cgroup runtime.slice in system.slice.

Vir: opennet.ru

Dodaj komentar