Тусгаарлагдсан саванд суурилсан түгээлт болох Bottlerocket 1.7-г гаргалаа

Тусгаарлагдсан савыг үр дүнтэй, аюулгүй ажиллуулах зорилгоор Amazon-ийн оролцоотойгоор боловсруулсан Bottlerocket 1.7.0 Linux түгээлтийн хувилбарыг хэвлэв. Түгээлтийн хэрэгсэл болон хяналтын бүрэлдэхүүн хэсгүүдийг Rust дээр бичсэн бөгөөд MIT болон Apache 2.0 лицензийн дагуу түгээдэг. Энэ нь Amazon ECS, VMware, AWS EKS Kubernetes кластерууд дээр Bottlerocket-ийг ажиллуулах, түүнчлэн контейнерт зориулсан янз бүрийн зохион байгуулалт, ажиллах цагийн хэрэгслийг ашиглах боломжийг олгодог захиалгат бүтээц, хувилбаруудыг бий болгохыг дэмждэг.

Энэхүү түгээлт нь Линукс цөмийг агуулсан атомын болон автоматаар шинэчлэгдсэн хуваагдашгүй системийн дүр төрх, зөвхөн контейнер ажиллуулахад шаардлагатай бүрэлдэхүүн хэсгүүдийг багтаасан хамгийн бага системийн орчныг бүрдүүлдэг. Энэ орчинд systemd системийн менежер, Glibc номын сан, Buildroot бүтээх хэрэгсэл, GRUB ачаалагч, муу сүлжээний тохируулагч, контейнерээс тусгаарлагдсан контейнер ажиллах хугацаа, Kubernetes контейнер зохион байгуулах платформ, aws-iam-authenticator, Amazon ECS агент орно. .

Контейнер зохион байгуулах хэрэгслүүд нь анхдагчаар идэвхжсэн, API болон AWS SSM Agent-ээр удирддаг тусдаа удирдлагын контейнерт ирдэг. Үндсэн зурагт командын бүрхүүл, SSH сервер, тайлбарласан хэл байхгүй (жишээлбэл, Python эсвэл Perl байхгүй) - захиргааны болон дибаг хийх хэрэгслийг тусдаа үйлчилгээний контейнерт шилжүүлсэн бөгөөд энэ нь анхдагчаар идэвхгүй болно.

Fedora CoreOS, CentOS/Red Hat Atomic Host зэрэг ижил төстэй түгээлтийн гол ялгаа нь системийн боломжит аюулаас хамгаалах хамгаалалтыг бэхжүүлэх, үйлдлийн системийн бүрэлдэхүүн хэсгүүдийн эмзэг байдлыг ашиглахад хүндрэл учруулах, контейнер тусгаарлалтыг нэмэгдүүлэх хүрээнд хамгийн их аюулгүй байдлыг хангахад гол анхаарлаа хандуулдаг. Контейнеруудыг Линуксийн цөмийн ердийн механизмууд - cgroups, namespaces, seccomp ашиглан бүтээдэг. Нэмэлт тусгаарлахын тулд түгээлт нь SELinux-ийг "хэрэгжүүлэх" горимд ашигладаг.

Үндэс хуваалтыг зөвхөн унших горимд суурилуулсан бөгөөд /etc тохиргоотой хуваалтыг tmpfs-д суулгаж, дахин эхлүүлсний дараа анхны төлөвт нь сэргээнэ. /etc/resolv.conf болон /etc/containerd/config.toml зэрэг /etc лавлах дахь файлуудыг шууд өөрчлөхийг дэмждэггүй - тохиргоог бүрмөсөн хадгалахын тулд та API ашиглах эсвэл функцийг тусдаа контейнерт шилжүүлэх хэрэгтэй. Үндэс хуваалтын бүрэн бүтэн байдлыг криптограф шалгахын тулд dm-verity модулийг ашигладаг бөгөөд блок төхөөрөмжийн түвшинд өгөгдлийг өөрчлөх оролдлого илэрвэл системийг дахин ачаална.

Системийн ихэнх бүрэлдэхүүн хэсгүүд нь Rust хэл дээр бичигдсэн байдаг бөгөөд санах ойг чөлөөлсний дараа санах ойн талбарыг хаяглах, тэг заагчийг ялгах, буфер хэт ачааллаас үүсэх эмзэг байдлаас зайлсхийхийн тулд санах ойд аюулгүй хэрэгслүүдээр хангадаг. Барилга барих үед "--enable-default-pie" болон "--enable-default-ssp" эмхэтгэлийн горимуудыг анхдагчаар ашиглан гүйцэтгэгдэх файлуудын хаягийн орон зайг санамсаргүй хуваарилах (PIE) болон канарын шошгыг орлуулах замаар стек халихаас хамгаалах боломжтой. C/C++ хэл дээр бичигдсэн багцуудын хувьд "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" болон "-fstack-clash" гэсэн тугуудыг нэмж оруулсан болно. орсон - хамгаалалт.

Шинэ хувилбарт:

  • RPM багцуудыг суулгахдаа JSON форматаар програмуудын жагсаалтыг гаргаж, /var/lib/bottlerocket/inventory/application.json файл болгон хост контейнерт холбож, боломжтой багцуудын талаарх мэдээллийг авах боломжтой.
  • "Админ" болон "хяналтын" савнууд шинэчлэгдсэн.
  • Go болон Rust хэлний багцын хувилбарууд болон хамаарлыг шинэчилсэн.
  • Гуравдагч талын програмуудтай багцуудын шинэчилсэн хувилбарууд.
  • kmod-5.10-nvidia-д зориулсан tmpfilesd тохиргооны асуудлыг шийдсэн.
  • Tuftool-ийг суулгахдаа хамаарлын хувилбаруудыг холбодог.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх