Амазон компани мэргэшсэн анхны чухал асуудал Linux-түгээлт , тусгаарлагдсан савыг үр ашигтай, найдвартай ажиллуулах зориулалттай. Түгээлтийн хэрэгсэл болон хяналтын бүрэлдэхүүн хэсгүүдийг Rust болон MIT болон Apache 2.0 лицензийн дагуу. Төслийг GitHub дээр боловсруулж байгаа бөгөөд олон нийтийн гишүүд оролцох боломжтой. Системийг байршуулах дүрсийг x86_64 болон Aarch64 архитектурт зориулж бүтээсэн. Үйлдлийн систем нь Amazon ECS болон AWS EKS Kubernetes кластерууд дээр ажиллахад тохирсон. Контейнерын бусад зохион байгуулалтын хэрэгсэл, цөм болон ажиллах цагийг ашиглаж болох өөрийн угсралт, хэвлэлийг бий болгох хэрэгслүүд.
Түгээлт нь цөмийг хангадаг Linux мөн контейнер ажиллуулахад шаардлагатай бүрэлдэхүүн хэсгүүдийг багтаасан хамгийн бага системийн орчин. Төсөлд ашигласан багцуудад systemd системийн менежер, Glibc сан, бүтээх хэрэгслүүд орно.
Buildroot, GRUB ачаалагч, сүлжээний тохируулагч , тусгаарлагдсан савны ажиллах хугацаа , Kubernetes контейнер зохион байгуулах платформ, aws-iam-authenticator, Amazon ECS агент.
Түгээлт нь атомаар шинэчлэгдэж, хуваагдашгүй системийн дүрс хэлбэрээр хүргэгдэнэ. Системд хоёр дискний хуваалт хуваарилагдсан бөгөөд тэдгээрийн нэг нь идэвхтэй системийг агуулдаг бөгөөд шинэчлэлтийг хоёр дахь хэсэгт хуулж авдаг. Шинэчлэлтийг суулгасны дараа хоёрдахь хуваалт идэвхжиж, эхнийх нь дараагийн шинэчлэлт ирэх хүртэл системийн өмнөх хувилбар хадгалагдах бөгөөд хэрэв асуудал гарвал буцаах боломжтой. Шинэчлэлтүүдийг администраторын оролцоогүйгээр автоматаар суулгадаг.
Fedora CoreOS гэх мэт ижил төстэй тархалтуудаас гол ялгаа нь CentOS/Red Hat Atomic Host нь голчлон хангахад чиглэгддэг болзошгүй аюул заналхийллээс системийн хамгаалалтыг бэхжүүлэх, үйлдлийн системийн бүрэлдэхүүн хэсгүүдийн эмзэг байдлыг ашиглахад хүндрэл учруулах, контейнер тусгаарлалтыг нэмэгдүүлэх зэрэг хүрээнд. Контейнеруудыг стандарт цөмийн механизмыг ашиглан үүсгэдэг. Linux — cgroups, namespaces, болон seccomp. Нэмэлт тусгаарлалтын хувьд тархалт нь SE-г ашигладаг.Linux "албадлага" горимд, мөн модулийг үндсэн хуваалтын бүрэн бүтэн байдлыг криптографийн баталгаажуулалтад ашигладаг . Хэрэв блок төхөөрөмжийн түвшинд өгөгдлийг өөрчлөх оролдлого илэрсэн бол системийг дахин ачаална.
Үндэс хуваалт нь зөвхөн уншихад суурилагдсан бөгөөд /etc тохиргооны хуваалт нь tmpfs-д суурилагдсан бөгөөд дахин ачаалсны дараа анхны төлөвт нь сэргээгддэг. /etc/resolv.conf болон /etc/containerd/config.toml зэрэг /etc лавлах дахь файлуудыг шууд өөрчлөхийг дэмждэггүй - тохиргоог бүрмөсөн хадгалахын тулд та API ашиглах эсвэл функцийг тусдаа саванд шилжүүлэх шаардлагатай.
Системийн ихэнх бүрэлдэхүүн хэсгүүд нь Rust хэл дээр бичигдсэн байдаг бөгөөд санах ойд үнэгүй хандалт хийх, хоосон заагч хаягжилт, буфер хэт ачааллаас үүсэх эмзэг байдлаас зайлсхийхийн тулд санах ойд аюулгүй функцуудыг өгдөг. Анхдагчаар бүтээхдээ "--enable-default-pie" болон "--enable-default-ssp" эмхэтгэлийн горимуудыг ажиллуулж болох файлуудын хаягийн зайг санамсаргүй байдлаар идэвхжүүлэхийн тулд ашигладаг () ба канарын орлуулах замаар стек халихаас хамгаалах.
C/C++ хэл дээр бичигдсэн багцуудын хувьд нэмэлт тугуудыг оруулсан болно
"-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" болон "-fstack-clash-protection".
Контейнерын зохион байгуулалтын хэрэгслийг тусад нь нийлүүлдэг , энэ нь анхдагчаар идэвхжсэн бөгөөд дамжуулан удирддаг болон AWS SSM агент. Үндсэн зурагт командын бүрхүүл, SSH сервер, тайлбарласан хэл байхгүй (жишээлбэл, Python эсвэл Perl байхгүй) - удирдлагын хэрэгслүүд болон дибаг хийх хэрэгслүүд энд байрладаг. , энэ нь анхдагчаар идэвхгүй байна.
Эх сурвалж: opennet.ru
