Bottlerocket 1.8 พร้อมใช้งานแล้ว การกระจายตามคอนเทนเนอร์แยก

มีการเผยแพร่การแจกจ่าย Bottlerocket 1.8.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" รวม - การป้องกัน

ในรุ่นใหม่:

  • เนื้อหาของคอนเทนเนอร์การจัดการและการควบคุมได้รับการอัพเดตแล้ว
  • รันไทม์สำหรับคอนเทนเนอร์แยกได้รับการอัพเดตเป็นสาขา 1.6.x ของคอนเทนเนอร์
  • กระบวนการเบื้องหลังที่ประสานการทำงานของคอนเทนเนอร์จะเริ่มต้นใหม่หลังจากการเปลี่ยนแปลงในที่เก็บใบรับรอง
  • มีความสามารถในการตั้งค่าพารามิเตอร์การบู๊ตของเคอร์เนลผ่านส่วนการกำหนดค่าการบู๊ต
  • เปิดใช้งานละเว้นบล็อกว่างเมื่อตรวจสอบความสมบูรณ์ของพาร์ติชันรูทโดยใช้ dm-verity
  • ให้ความสามารถในการผูกชื่อโฮสต์แบบคงที่ใน /etc/hosts
  • มีความสามารถในการสร้างการกำหนดค่าเครือข่ายโดยใช้ยูทิลิตี้ netdog (เพิ่มคำสั่ง create-net-config แล้ว)
  • มีการเสนอตัวเลือกการแจกจ่ายใหม่พร้อมการรองรับ Kubernetes 1.23 ลดเวลาเริ่มต้นสำหรับพ็อดใน Kubernetes โดยปิดใช้งานโหมด configMapAndSecretChangeDetectionStrategy เพิ่มการตั้งค่า kubelet ใหม่: provider-id และ podPidsLimit
  • มีการเสนอการกระจาย 'aws-ecs-1-nvidia' ใหม่สำหรับ Amazon Elastic Container Service (Amazon ECS) และมาพร้อมกับไดรเวอร์ NVIDIA
  • เพิ่มการสนับสนุนสำหรับ Microchip Smart Storage และอุปกรณ์จัดเก็บข้อมูล MegaRAID SAS ขยายการรองรับการ์ดอีเธอร์เน็ตที่ใช้ชิป Broadcom
  • อัปเดตเวอร์ชันของแพ็คเกจและการอ้างอิงสำหรับภาษา Go และ Rust รวมถึงเวอร์ชันของแพ็คเกจด้วยโปรแกรมของบุคคลที่สาม Bottlerocket SDK ได้รับการอัพเดตเป็นเวอร์ชัน 0.26.0

ที่มา: opennet.ru

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