Amazon เผยแพร่ Bottlerocket 1.0.0 ซึ่งเป็นการแจกจ่าย Linux ที่ใช้คอนเทนเนอร์แบบแยกส่วน

บริษัทอเมซอน นำเสนอ การเปิดตัวครั้งแรกที่สำคัญของการกระจาย Linux เฉพาะ Bottlerocket 1.0.0ออกแบบมาเพื่อใช้งานคอนเทนเนอร์แบบแยกส่วนได้อย่างมีประสิทธิภาพและปลอดภัย เครื่องมือของการแจกจ่ายและส่วนประกอบการควบคุมเขียนด้วยภาษา Rust และ การแพร่กระจาย ภายใต้ใบอนุญาต MIT และ Apache 2.0 โครงการนี้กำลังได้รับการพัฒนาบน GitHub และสมาชิกชุมชนพร้อมให้เข้าร่วมได้ อิมเมจการปรับใช้ระบบถูกสร้างขึ้นสำหรับสถาปัตยกรรม x86_64 และ Aarch64 ระบบปฏิบัติการได้รับการปรับให้ทำงานบนคลัสเตอร์ Amazon ECS และ AWS EKS Kubernetes ถูกจัดหา เครื่องมือสำหรับการสร้างแอสเซมบลีและรุ่นของคุณเอง ซึ่งสามารถใช้เครื่องมือการเรียบเรียง เคอร์เนล และรันไทม์อื่นๆ สำหรับคอนเทนเนอร์ได้

การกระจายนี้ให้เคอร์เนล Linux และสภาพแวดล้อมระบบขั้นต่ำ รวมถึงเฉพาะส่วนประกอบที่จำเป็นในการรันคอนเทนเนอร์ แพ็คเกจที่เกี่ยวข้องในโครงการ ได้แก่ system manager systemd, ไลบรารี Glibc และเครื่องมือประกอบ
Buildroot, GRUB bootloader, ตัวกำหนดค่าเครือข่าย ชั่วร้าย, รันไทม์สำหรับคอนเทนเนอร์ที่แยกออกมา ตู้คอนเทนเนอร์, แพลตฟอร์มการจัดการคอนเทนเนอร์ Kubernetes, aws-iam-authenticator และตัวแทน Amazon ECS

การแจกจ่ายได้รับการอัปเดตแบบอะตอมมิกและจัดส่งในรูปแบบของอิมเมจระบบที่แบ่งแยกไม่ได้ พาร์ติชั่นดิสก์สองพาร์ติชั่นได้รับการจัดสรรสำหรับระบบ โดยพาร์ติชั่นหนึ่งมีระบบที่ใช้งานอยู่ และการอัพเดตจะถูกคัดลอกไปยังพาร์ติชั่นที่สอง หลังจากปรับใช้การอัปเดตแล้ว พาร์ติชันที่สองจะเริ่มทำงาน และในพาร์ติชั่นแรก ระบบจะบันทึกเวอร์ชันก่อนหน้าจนกว่าจะมีการอัปเดตครั้งถัดไป ซึ่งคุณสามารถย้อนกลับได้หากเกิดปัญหา การอัปเดตจะถูกติดตั้งโดยอัตโนมัติโดยไม่มีการแทรกแซงของผู้ดูแลระบบ

ความแตกต่างที่สำคัญจากการแจกแจงที่คล้ายกันเช่น Fedora CoreOS, CentOS/Red Hat Atomic Host คือจุดสนใจหลักในการให้บริการ ความปลอดภัยสูงสุด ในบริบทของการเสริมสร้างการป้องกันระบบให้แข็งแกร่งจากภัยคุกคามที่เป็นไปได้ ทำให้ยากขึ้นในการหาประโยชน์จากช่องโหว่ในส่วนประกอบของระบบปฏิบัติการ และเพิ่มการแยกคอนเทนเนอร์ คอนเทนเนอร์ถูกสร้างขึ้นโดยใช้กลไกเคอร์เนล Linux มาตรฐาน - cgroups, เนมสเปซ และ seccomp สำหรับการแยกเพิ่มเติม การแจกจ่ายจะใช้ SELinux ในโหมด "บังคับใช้" และโมดูลจะใช้สำหรับการตรวจสอบการเข้ารหัสความสมบูรณ์ของพาร์ติชันรูท dm-ความจริง. หากตรวจพบความพยายามที่จะแก้ไขข้อมูลที่ระดับอุปกรณ์บล็อก ระบบจะรีบูต

พาร์ติชันรากถูกเมาท์แบบอ่านอย่างเดียว และพาร์ติชันการตั้งค่า /etc จะถูกเมาท์ใน tmpfs และคืนค่าเป็นสถานะดั้งเดิมหลังจากรีสตาร์ท ไม่รองรับการแก้ไขไฟล์โดยตรงในไดเร็กทอรี /etc เช่น /etc/resolv.conf และ /etc/containerd/config.toml หากต้องการบันทึกการตั้งค่าอย่างถาวร คุณต้องใช้ 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"

เครื่องมือจัดระเบียบตู้คอนเทนเนอร์มีจำหน่ายแยกต่างหาก ภาชนะควบคุมซึ่งเปิดใช้งานตามค่าเริ่มต้นและควบคุมผ่าน API และตัวแทน AWS SSM อิมเมจพื้นฐานขาดเชลล์คำสั่ง เซิร์ฟเวอร์ SSH และภาษาที่ตีความ (เช่น ไม่มี Python หรือ Perl) - เครื่องมือการดูแลระบบและเครื่องมือแก้ไขจุดบกพร่องอยู่ใน ภาชนะบริการแยกต่างหากซึ่งปิดใช้งานตามค่าเริ่มต้น

ที่มา: opennet.ru

เพิ่มความคิดเห็น