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

การเปิดตัวการแจกจ่าย Linux Bottlerocket 1.2.0 พร้อมให้ใช้งานแล้ว ซึ่งพัฒนาร่วมกับ 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" รวม - การป้องกัน

ในรุ่นใหม่:

  • เพิ่มการรองรับมิเรอร์รีจิสตรีอิมเมจคอนเทนเนอร์
  • เพิ่มความสามารถในการใช้ใบรับรองที่ลงนามด้วยตนเอง
  • เพิ่มตัวเลือกในการกำหนดค่าชื่อโฮสต์
  • เวอร์ชันเริ่มต้นของคอนเทนเนอร์การดูแลระบบได้รับการอัปเดตแล้ว
  • เพิ่มการตั้งค่า topologyManagerPolicy และ topologyManagerScope สำหรับ kubelet
  • เพิ่มการรองรับการบีบอัดเคอร์เนลโดยใช้อัลกอริทึม zstd
  • มีความสามารถในการโหลดเครื่องเสมือนลงใน VMware ในรูปแบบ OVA (Open Virtualization Format)
  • เวอร์ชันการเผยแพร่ aws-k8s-1.21 ได้รับการอัปเดตพร้อมรองรับ Kubernetes 1.21 การสนับสนุน aws-k8s-1.16 ถูกยกเลิกแล้ว
  • อัปเดตเวอร์ชันแพ็คเกจและการขึ้นต่อกันสำหรับภาษา Rust

ที่มา: opennet.ru

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