Амазон нь тусгаарлагдсан контейнер дээр суурилсан Linux түгээлт болох Bottlerocket 1.0.0-ийг нийтэлдэг

Амазон компани танилцуулсан тусгай Linux түгээлтийн анхны чухал хувилбар Шилэн боов 1.0.0, тусгаарлагдсан савыг үр ашигтай, найдвартай ажиллуулах зориулалттай. Түгээлтийн хэрэгсэл болон хяналтын бүрэлдэхүүн хэсгүүдийг Rust болон тархалт MIT болон Apache 2.0 лицензийн дагуу. Төслийг GitHub дээр боловсруулж байгаа бөгөөд олон нийтийн гишүүд оролцох боломжтой. Системийг байршуулах дүрсийг x86_64 болон Aarch64 архитектурт зориулж бүтээсэн. Үйлдлийн систем нь Amazon ECS болон AWS EKS Kubernetes кластерууд дээр ажиллахад тохирсон. хангаж байна Контейнерын бусад зохион байгуулалтын хэрэгсэл, цөм болон ажиллах цагийг ашиглаж болох өөрийн угсралт, хэвлэлийг бий болгох хэрэгслүүд.

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

Түгээлт нь атомаар шинэчлэгдэж, хуваагдашгүй системийн дүрс хэлбэрээр хүргэгдэнэ. Системд хоёр дискний хуваалт хуваарилагдсан бөгөөд тэдгээрийн нэг нь идэвхтэй системийг агуулдаг бөгөөд шинэчлэлтийг хоёр дахь хэсэгт хуулж авдаг. Шинэчлэлтийг суулгасны дараа хоёрдахь хуваалт идэвхжиж, эхнийх нь дараагийн шинэчлэлт ирэх хүртэл системийн өмнөх хувилбар хадгалагдах бөгөөд хэрэв асуудал гарвал буцаах боломжтой. Шинэчлэлтүүдийг администраторын оролцоогүйгээр автоматаар суулгадаг.

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

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

Системийн ихэнх бүрэлдэхүүн хэсгүүд нь 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-protection".

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

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

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