การเปิดตัว Bottlerocket 1.7 ซึ่งเป็นการจำหน่ายตามภาชนะที่แยกได้

มีการเผยแพร่การแจกจ่าย Bottlerocket 1.7.0 Linux ซึ่งพัฒนาโดยมีส่วนร่วมของ Amazon เพื่อเรียกใช้คอนเทนเนอร์แยกอย่างมีประสิทธิภาพและปลอดภัย ชุดเครื่องมือและส่วนประกอบการควบคุมของการแจกจ่ายเขียนขึ้นใน Rust และเผยแพร่ภายใต้ใบอนุญาต MIT และ Apache 2.0 รองรับการเรียกใช้ Bottlerocket บนคลัสเตอร์ Amazon ECS, VMware และ AWS EKS Kubernetes รวมถึงการสร้างบิลด์และรุ่นแบบกำหนดเองที่อนุญาตให้มีเครื่องมือการประสานและรันไทม์ที่แตกต่างกันสำหรับคอนเทนเนอร์

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

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

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

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

ส่วนประกอบของระบบส่วนใหญ่เขียนขึ้นใน Rust ซึ่งมีเครื่องมือที่ปลอดภัยสำหรับหน่วยความจำเพื่อหลีกเลี่ยงช่องโหว่ที่เกิดจากการกำหนดพื้นที่หน่วยความจำหลังจากที่พื้นที่หน่วยความจำว่างลง การยกเลิกการอ้างอิงพอยน์เตอร์ว่าง และบัฟเฟอร์เกิน เมื่อสร้าง โหมดการคอมไพล์ "--enable-default-pie" และ "--enable-default-ssp" จะถูกใช้เป็นค่าเริ่มต้นเพื่อเปิดใช้งานการสุ่มพื้นที่แอดเดรสของไฟล์เรียกทำงาน (PIE) และป้องกันการล้นของสแต็กผ่านการแทนที่ป้ายกำกับ canary สำหรับแพ็กเกจที่เขียนใน 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
  • แพ็คเกจเวอร์ชันอัปเดตพร้อมโปรแกรมบุคคลที่สาม
  • แก้ไขปัญหาการกำหนดค่า tmpfilesd สำหรับ kmod-5.10-nvidia แล้ว
  • เมื่อติดตั้ง tuftool เวอร์ชันอ้างอิงจะถูกเชื่อมโยง

ที่มา: opennet.ru

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