Pelepasan Bottlerocket 1.3, distribusi berdasarkan wadah terisolasi

Rilis distribusi Linux Bottlerocket 1.3.0 telah diterbitkan, dikembangkan dengan partisipasi Amazon untuk peluncuran kontainer terisolasi yang efisien dan aman. Alat distribusi dan komponen kontrol ditulis dalam Rust dan didistribusikan di bawah lisensi MIT dan Apache 2.0. Ini mendukung menjalankan Bottlerocket di klaster Kubernetes Amazon ECS, VMware dan AWS EKS, serta membuat build dan edisi khusus yang memungkinkan penggunaan berbagai alat orkestrasi dan runtime untuk container.

Distribusi ini menyediakan citra sistem tak terpisahkan yang diperbarui secara atom dan otomatis yang mencakup kernel Linux dan lingkungan sistem minimal, termasuk hanya komponen yang diperlukan untuk menjalankan container. Lingkungan tersebut mencakup manajer sistem systemd, perpustakaan Glibc, alat build Buildroot, boot loader GRUB, konfigurator jaringan jahat, runtime containerd untuk container terisolasi, platform orkestrasi container Kubernetes, aws-iam-authenticator, dan Amazon Agen ECS.

Alat orkestrasi kontainer hadir dalam kontainer manajemen terpisah yang diaktifkan secara default dan dikelola melalui API dan AWS SSM Agent. Gambar dasar tidak memiliki shell perintah, server SSH, dan bahasa yang ditafsirkan (misalnya, tidak ada Python atau Perl) - alat administratif dan alat debugging ditempatkan dalam wadah layanan terpisah, yang dinonaktifkan secara default.

Perbedaan utama dari distribusi serupa seperti Fedora CoreOS, CentOS/Red Hat Atomic Host adalah fokus utama dalam memberikan keamanan maksimum dalam rangka memperkuat perlindungan sistem dari kemungkinan ancaman, mempersulit eksploitasi kerentanan pada komponen OS dan meningkatkan isolasi container. . Kontainer dibuat menggunakan mekanisme kernel Linux standar - cgroups, namespace, dan seccomp. Untuk isolasi tambahan, distribusi menggunakan SELinux dalam mode “menegakkan”.

Partisi root dipasang hanya-baca, dan partisi pengaturan /etc dipasang di tmpfs dan dikembalikan ke keadaan semula setelah restart. Modifikasi langsung file di direktori /etc, seperti /etc/resolv.conf dan /etc/containerd/config.toml, tidak didukung - untuk menyimpan pengaturan secara permanen, Anda harus menggunakan API atau memindahkan fungsionalitas ke dalam wadah terpisah. Modul dm-verity digunakan untuk memverifikasi integritas partisi root secara kriptografis, dan jika upaya untuk mengubah data pada tingkat perangkat blok terdeteksi, sistem akan reboot.

Sebagian besar komponen sistem ditulis dalam Rust, yang menyediakan fitur pengaman memori untuk menghindari kerentanan yang disebabkan oleh akses memori setelah bebas, dereferensi penunjuk nol, dan buffer overruns. Saat membangun secara default, mode kompilasi "-enable-default-pie" dan "-enable-default-ssp" digunakan untuk mengaktifkan pengacakan ruang alamat file yang dapat dieksekusi (PIE) dan perlindungan terhadap stack overflow melalui substitusi canary. Untuk paket yang ditulis dalam C/C++, flag “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” dan “-fstack-clash” juga ditambahkan. diaktifkan -perlindungan".

Dalam rilis baru:

  • Memperbaiki kerentanan pada alat docker dan runtime containerd (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) terkait dengan pengaturan hak akses yang salah, yang memungkinkan pengguna yang tidak memiliki hak istimewa untuk melampaui basis direktori dan menjalankan program eksternal.
  • Dukungan IPv6 telah ditambahkan ke kubelet dan pluto.
  • Dimungkinkan untuk memulai ulang penampung setelah mengubah pengaturannya.
  • Dukungan untuk instans M2i Amazon EC6 telah ditambahkan ke paket eni-max-pods.
  • Open-vm-tools telah menambahkan dukungan untuk filter perangkat, berdasarkan pada toolkit Cilium.
  • Untuk platform x86_64, mode boot hybrid diterapkan (dengan dukungan untuk EFI dan BIOS).
  • Versi paket dan dependensi yang diperbarui untuk bahasa Rust.
  • Dukungan untuk varian distribusi aws-k8s-1.17 berdasarkan Kubernetes 1.17 telah dihentikan. Disarankan untuk menggunakan versi aws-k8s-1.21 dengan dukungan untuk Kubernetes 1.21. Varian k8s menggunakan pengaturan cgroup runtime.slice dan system.slice.

Sumber: opennet.ru

Tambah komentar