Амазон компани
Bottlerocket (дашрамд хэлэхэд, жижиг гар хийцийн хар нунтаг пуужинд өгсөн нэр) нь чингэлэгт зориулсан анхны үйлдлийн систем биш боловч AWS үйлчилгээтэй анхдагч интеграцийн ачаар өргөн тархсан байх магадлалтай. Хэдийгээр систем нь Amazon үүлэн дээр төвлөрсөн боловч нээлттэй эх код нь үүнийг хаана ч бий болгох боломжийг олгодог: дотооддоо сервер дээр, Raspberry Pi дээр, ямар ч өрсөлдөгч үүлэнд, тэр ч байтугай контейнергүй орчинд.
Энэ нь Red Hat-ийн булсан CoreOS түгээлтийн бүрэн зохистой орлуулалт юм.
Үнэн хэрэгтээ Amazon Web Services хэлтэс нь Amazon Linux-тэй болсон бөгөөд саяхан хоёр дахь хувилбараа гаргасан: энэ нь Docker контейнер эсвэл Linux KVM, Microsoft Hyper-V, VMware-тай ажиллах боломжтой ерөнхий зориулалтын түгээлт юм. ESXi гипервизорууд. Үүнийг AWS үүлэн дээр ажиллуулахаар оновчтой болгосон боловч Bottlerocket-г гаргаснаар хүн бүр илүү аюулгүй, орчин үеийн, бага нөөц ашигладаг шинэ систем рүү шинэчлэхийг уриалж байна.
AWS Bottlerocket-ийг зарлалаа
Хэт минимализм
Линукс нь контейнер ажиллуулахад шаардлагагүй бүх зүйлээс хасагдсан. Энэхүү загвар нь компанийн үзэж байгаагаар халдлагын гадаргууг багасгадаг.
Энэ нь үндсэн систем дээр цөөн тооны багц суулгасан гэсэн үг бөгөөд энэ нь OS-ийн засвар үйлчилгээ, шинэчлэлтийг хөнгөвчлөхөөс гадна хараат байдлаас үүдэлтэй асуудлын магадлалыг бууруулж, нөөцийн хэрэглээг бууруулдаг. Үндсэндээ энд бүх зүйл тусдаа саванд ажилладаг бөгөөд үндсэн систем нь бараг нүцгэн байдаг.
Амазон мөн бүх бүрхүүл, орчуулагчийг устгаж, тэдгээрийг ашиглах, эсвэл хэрэглэгчид санамсаргүйгээр давуу эрхээ нэмэгдүүлэх эрсдлийг арилгасан. Минимализм, аюулгүй байдлын үүднээс үндсэн зураг нь тушаалын бүрхүүл, SSH сервер эсвэл Python гэх мэт тайлбарласан хэлийг агуулаагүй болно. Администраторын хэрэгслийг тусдаа үйлчилгээний саванд байрлуулсан бөгөөд энэ нь анхдагчаар идэвхгүй байдаг.
Системийг API болон зохион байгуулалтаар дамжуулан хоёр аргаар удирддаг.
Тусдаа програм хангамжийн хэсгүүдийг шинэчилдэг багц менежерийн оронд Bottlerocket файлын системийн бүрэн дүрсийг татаж аваад дахин ачаална. Ачаалал бүтэлгүйтвэл автоматаар буцаах ба ажлын ачаалал алдаа гарвал буцаалтыг гараар өдөөж болно (API-ээр дамжуулан тушаал).
Хүрээ /etc
RAM-д файлын системд суурилуулсан /etc
дэмжигдээгүй: тохиргоог хадгалахын тулд та API ашиглах эсвэл функцийг тусдаа саванд шилжүүлэх хэрэгтэй.
API шинэчлэх схем
Аюулгүй байдал
Контейнерууд нь Линуксийн цөмийн стандарт механизмууд - бүлгүүд, нэрийн орон зай, seccomp-ээр бүтээгдсэн бөгөөд албадан нэвтрэх хяналтын систем, өөрөөр хэлбэл нэмэлт тусгаарлалтанд ашиглагддаг.
Анхдагчаар бол контейнер болон цөмийн хооронд нөөцийг хуваалцах бодлогыг идэвхжүүлсэн. Хоёртын файлууд нь хэрэглэгч эсвэл программыг гүйцэтгэхээс урьдчилан сэргийлэхийн тулд тугаар хамгаалагдсан байдаг. Хэрэв хэн нэгэн файлын системд нэвтэрсэн тохиолдолд Bottlerocket нь хийсэн өөрчлөлтийг шалгах, хянах хэрэгслийг санал болгодог.
"Баталгаажсан ачаалах" горим нь төхөөрөмж-mapper-verity функцээр хэрэгждэг (
Мөн системд шүүлтүүр байдаг
Гүйцэтгэлийн загвар
Хэрэглэгчийн тодорхойлсон
Эмхэтгэл
Аюулгүй байдал
Алдаа гарах горим
Нөөцөд хандах
Хэрэглэгч
даалгавар
Хэрэв тийм бол
ямар ч
хэрэглэгчийн эрх
гүйцэтгэлийг тасалдуулах
системийн дуудлага, алдаа
Гол нь
даалгавар
ямар ч
статик
ямар ч
цөмийн сандрал
шулуун
GMP
үйл явдал
Хэрэв тийм бол
JIT, CO-RE
баталгаажуулалт, JIT
алдааны мэдэгдэл
хязгаарлагдмал туслахууд
BPF нь энгийн хэрэглэгчийн эсвэл цөмийн түвшний кодоос юугаараа ялгаатай вэ
AWS-ийн хэлснээр Bottlerocket нь "захиргааны эрхтэй үйлдвэрлэлийн серверүүдтэй холбогдохоос сэргийлж аюулгүй байдлыг улам сайжруулдаг үйлдлийн загварыг ашигладаг" бөгөөд "хост тус бүрийг хянах нь хязгаарлагдмал байдаг том тархсан системд тохиромжтой".
Системийн администраторуудад администраторын савыг өгсөн. Гэхдээ AWS нь админыг Bottlerocket дотор ажиллах шаардлагагүй гэж боддог: "Тусдаа Bottlerocket-д нэвтрэх үйлдэл нь ховор үйлдлүүдэд зориулагдсан: дэвшилтэт дибаг хийх, алдааг олж засварлах,"
Зэв хэл
Цөмийн дээд хэсэгт байрлах үйлдлийн системийн багаж хэрэгсэл нь ихэвчлэн 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
.
Rust болон C/C++-ээс гадна зарим багцуудыг Go дээр бичсэн байдаг.
AWS үйлчилгээтэй нэгтгэх
Ижил төрлийн контейнер үйлдлийн системүүдээс ялгаатай нь Amazon нь Bottlerocket-ийг AWS дээр ажиллаж, бусад AWS үйлчилгээнүүдтэй нэгтгэхийн тулд оновчтой болгосон явдал юм.
Хамгийн алдартай чингэлэг найруулагч бол Kubernetes тул AWS нь өөрийн Enterprise Kubernetes Service (EKS)-тай нэгтгэсэн. Оркестрийн хэрэгслүүд нь тусдаа хяналтын саванд ирдэг
Өмнө нь үүнтэй төстэй зарим санаачилга бүтэлгүйтсэнийг харгалзан Bottlerocket хөөрөх эсэх нь сонирхолтой байх болно. Жишээлбэл, Vmware-ийн PhotonOS нь нэхэмжлээгүй болж, RedHat CoreOS болон
Bottlerocket-ийг AWS үйлчилгээнд нэгтгэсэн нь энэ системийг өөрийн гэсэн өвөрмөц болгодог. Энэ нь магадгүй зарим хэрэглэгчид Bottlerocket-ийг CoreOS эсвэл Alpine гэх мэт бусад түгээлтүүдээс илүүд үзэх гол шалтгаан байж болох юм. Уг систем нь анх EKS болон ECS-тэй ажиллахаар бүтээгдсэн боловч энэ нь шаардлагагүй гэдгийг бид давтан хэлье. Нэгдүгээрт, Bottlerocket can
Bottlerocket эх кодыг Apache 2.0 лицензийн дагуу GitHub дээр нийтэлсэн. Хөгжүүлэгчид аль хэдийн хийсэн
Сурталчилгааны эрх
VDSina санал болгодог
Эх сурвалж: www.habr.com