Bottlerocket 1.3 izlaišana, izplatīšana, kuras pamatā ir izolēti konteineri

Ir publicēts Linux izplatīšanas Bottlerocket 1.3.0 izlaidums, kas izstrādāts ar Amazon līdzdalību efektīvai un drošai izolētu konteineru palaišanai. Izplatīšanas rīki un vadības komponenti ir rakstīti Rust un tiek izplatīti saskaņā ar MIT un Apache 2.0 licencēm. Tas atbalsta Bottlerocket palaišanu Amazon ECS, VMware un AWS EKS Kubernetes klasteros, kā arī pielāgotu būvējumu un izdevumu izveidi, kas ļauj konteineriem izmantot dažādus orķestrēšanas un izpildlaika rīkus.

Izplatījums nodrošina atomiski un automātiski atjauninātu nedalāmu sistēmas attēlu, kas ietver Linux kodolu un minimālu sistēmas vidi, ieskaitot tikai konteineru palaišanai nepieciešamos komponentus. Vidē ietilpst sistēmas sistēmas pārvaldnieks, Glibc bibliotēka, Buildroot veidošanas rīks, GRUB sāknēšanas ielādētājs, ļaunā tīkla konfigurators, konteineru izpildlaiks izolētiem konteineriem, Kubernetes konteineru orķestrēšanas platforma, aws-iam-autentifikators un Amazon. ECS aģents.

Konteinera orķestrēšanas rīki ir iekļauti atsevišķā pārvaldības konteinerā, kas ir iespējots pēc noklusējuma un tiek pārvaldīts, izmantojot API un AWS SSM aģentu. Bāzes attēlam trūkst komandu apvalka, SSH servera un tulkotās valodas (piemēram, nav Python vai Perl) - administratīvie rīki un atkļūdošanas rīki tiek ievietoti atsevišķā pakalpojuma konteinerā, kas pēc noklusējuma ir atspējots.

Galvenā atšķirība no līdzīgiem izplatījumiem, piemēram, Fedora CoreOS, CentOS/Red Hat Atomic Host, galvenā uzmanība tiek pievērsta maksimālas drošības nodrošināšanai saistībā ar sistēmas aizsardzības stiprināšanu pret iespējamiem draudiem, apgrūtinot OS komponentu ievainojamību izmantošanu un palielinot konteineru izolāciju. . Konteineri tiek veidoti, izmantojot standarta Linux kodola mehānismus – cgroups, namespaces un seccomp. Papildu izolācijai izplatīšana izmanto SELinux “piespiedu” režīmā.

Saknes nodalījums ir uzstādīts tikai lasāms, un /etc iestatījumu nodalījums tiek montēts tmpfs un pēc restartēšanas tiek atjaunots tā sākotnējā stāvoklī. Tieša failu pārveidošana direktorijā /etc, piemēram, /etc/resolv.conf un /etc/containerd/config.toml, netiek atbalstīta - lai pastāvīgi saglabātu iestatījumus, ir jāizmanto API vai jāpārvieto funkcionalitāte atsevišķos konteineros. Dm-verity modulis tiek izmantots, lai kriptogrāfiski pārbaudītu saknes nodalījuma integritāti, un, ja tiek atklāts mēģinājums modificēt datus blokierīces līmenī, sistēma tiek restartēta.

Lielākā daļa sistēmas komponentu ir rakstīti valodā Rust, kas nodrošina atmiņai drošus līdzekļus, lai izvairītos no ievainojamībām, ko izraisa pēcbrīva piekļuve atmiņai, nulles rādītāja novirzīšana un bufera pārtēriņš. Veidojot pēc noklusējuma, tiek izmantoti kompilācijas režīmi "-enable-default-pie" un "-enable-default-ssp", lai iespējotu izpildāmā faila adrešu telpas (PIE) randomizāciju un aizsardzību pret steku pārpildīšanu, izmantojot kanāriju aizstāšanu. Pakotnēm, kas rakstītas C/C++ valodā, papildus tiek izmantoti karodziņi “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” un “-fstack-clash”. iespējota -aizsardzība".

Jaunajā laidienā:

  • Novērstas docker un izpildlaika konteineru rīku (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) ievainojamības, kas saistītas ar nepareizu piekļuves tiesību iestatīšanu, kas ļāva nepievilcīgiem lietotājiem pārsniegt pamata lietotāju iespējas. direktorijā un izpildīt ārējās programmas.
  • IPv6 atbalsts ir pievienots Kubelet un Pluto.
  • Pēc iestatījumu maiņas konteineru ir iespējams restartēt.
  • Eni-max-pods pakotnei ir pievienots atbalsts Amazon EC2 M6i gadījumiem.
  • Open-vm-tools ir pievienojis atbalstu ierīču filtriem, pamatojoties uz Cilium rīku komplektu.
  • Platformai x86_64 ir ieviests hibrīda sāknēšanas režīms (ar atbalstu EFI un BIOS).
  • Atjauninātas pakotnes versijas un atkarības Rust valodai.
  • Izplatīšanas varianta aws-k8s-1.17 atbalsts, kura pamatā ir Kubernetes 1.17, ir pārtraukts. Ieteicams izmantot versiju aws-k8s-1.21 ar Kubernetes 1.21 atbalstu. K8s varianti izmanto cgroup runtime.slice un system.slice iestatījumus.

Avots: opennet.ru

Pievieno komentāru