Distribusi Linux minimalis, Bottlerocket, telah dirilis untuk menjalankan container. Hal terpenting tentang dia

Distribusi Linux minimalis, Bottlerocket, telah dirilis untuk menjalankan container. Hal terpenting tentang dia

Perusahaan Amazon mengumumkan tentang rilis final Kotak botol β€” distribusi khusus untuk menjalankan container dan mengelolanya secara efektif.

Bottlerocket (omong-omong, nama yang diberikan untuk roket bubuk hitam kecil buatan sendiri) bukanlah OS pertama untuk container, tetapi kemungkinan besar akan tersebar luas berkat integrasi default dengan layanan AWS. Meskipun sistem ini berfokus pada cloud Amazon, kode sumber terbuka memungkinkannya dibangun di mana saja: secara lokal di server, di Raspberry Pi, di cloud pesaing mana pun, dan bahkan di lingkungan tanpa container.

Ini adalah pengganti yang layak untuk distribusi CoreOS yang dikuburkan Red Hat.

Faktanya, divisi Amazon Web Services sudah memiliki Amazon Linux, yang baru-baru ini keluar dalam versi kedua: ini adalah distribusi tujuan umum yang dapat dijalankan dalam wadah Docker atau dengan Linux KVM, Microsoft Hyper-V, dan VMware Hypervisor ESXi. Ini dioptimalkan untuk berjalan di cloud AWS, namun dengan dirilisnya Bottlerocket, semua orang didorong untuk meningkatkan ke sistem baru yang lebih aman, modern, dan menggunakan lebih sedikit sumber daya.

AWS mengumumkan Bottlerocket pada bulan Maret 2020. Dia segera mengakui bahwa ini bukan β€œLinux untuk container” pertama, mengutip CoreOS, Rancher OS, dan Project Atomic sebagai sumber inspirasinya. Para pengembang menulis bahwa sistem operasi ini adalah "hasil dari pembelajaran yang kami pelajari dari menjalankan layanan produksi pada skala Amazon untuk waktu yang lama, dan pengalaman yang kami peroleh selama enam tahun terakhir tentang cara menjalankan container."

Minimalisme ekstrim

Linux menghilangkan segala sesuatu yang tidak diperlukan untuk menjalankan container. Desain ini, menurut perusahaan, mengurangi permukaan serangan.

Ini berarti lebih sedikit paket yang diinstal pada sistem dasar, yang membuatnya lebih mudah untuk memelihara dan memperbarui OS, dan juga mengurangi kemungkinan masalah karena ketergantungan, sehingga mengurangi penggunaan sumber daya. Pada dasarnya, semua yang ada di sini berfungsi di dalam wadah terpisah, dan sistem yang mendasarinya praktis kosong.

Amazon juga telah menghapus semua shell dan interpreter, menghilangkan risiko penggunaannya atau pengguna secara tidak sengaja meningkatkan hak istimewanya. Demi minimalis dan keamanan, gambar dasar tidak menyertakan shell perintah, server SSH, atau bahasa interpretasi seperti Python. Alat administrator ditempatkan dalam wadah layanan terpisah, yang dinonaktifkan secara default.

Sistem ini dikelola dengan dua cara: melalui API dan orkestrasi.

Alih-alih manajer paket yang memperbarui masing-masing perangkat lunak, Bottlerocket mengunduh image sistem file lengkap dan melakukan boot ulang ke dalamnya. Jika beban gagal, maka secara otomatis melakukan rollback, dan kegagalan beban kerja dapat memicu rollback secara manual (perintah melalui API).

Kerangka TUF (Kerangka Pembaruan) mengunduh pembaruan berbasis gambar ke partisi alternatif atau "tidak terpasang". Dua partisi disk dialokasikan untuk sistem, salah satunya berisi sistem aktif, dan pembaruan disalin ke yang kedua. Dalam hal ini, partisi root dipasang dalam mode read-only, dan partisi /etc dipasang dengan sistem file di RAM tmpfs dan mengembalikan keadaan semula setelah restart. Modifikasi langsung file konfigurasi di /etc tidak didukung: untuk menyimpan pengaturan Anda harus menggunakan API atau memindahkan fungsionalitas ke dalam wadah terpisah.

Distribusi Linux minimalis, Bottlerocket, telah dirilis untuk menjalankan container. Hal terpenting tentang dia
Skema pembaruan API

keamanan

Kontainer dibuat oleh mekanisme standar kernel Linux - cgroups, namespace dan seccomp, dan digunakan sebagai sistem kontrol akses paksa, yaitu untuk isolasi tambahan SELinux dalam mode "menegakkan".

Secara default, kebijakan diaktifkan untuk berbagi sumber daya antara kontainer dan kernel. Biner dilindungi dengan tanda untuk mencegah pengguna atau program mengeksekusinya. Dan jika seseorang berhasil masuk ke sistem file, Bottlerocket menawarkan alat untuk memeriksa dan melacak setiap perubahan yang dilakukan.

Mode "boot terverifikasi" diimplementasikan melalui fungsi veritas pemetaan perangkat (dm-kebenaran), yang memeriksa integritas partisi root saat boot. AWS mendeskripsikan dm-verity sebagai β€œfitur kernel Linux yang menyediakan pemeriksaan integritas untuk mencegah malware berjalan di OS, seperti menimpa perangkat lunak sistem inti.”

Ada juga filter di sistem eGMP (BPF diperpanjang, dikembangkan oleh Alexei Starovoitov), yang memungkinkan modul kernel diganti dengan program BPF yang lebih aman untuk operasi sistem tingkat rendah.

Model eksekusi
Ditetapkan pengguna
Kompilasi
keamanan
Mode gagal
Akses ke sumber daya

Pengguna
tugas
ya
apapun
hak pengguna
mengganggu eksekusi
panggilan sistem, kesalahan

Intinya
tugas
tidak
statis
tidak
panik kernel
lurus

BPF
Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅
ya
JIT, CO-RE
verifikasi, JIT
pesan eror
pembantu yang terbatas

Perbedaan BPF dengan kode tingkat pengguna atau kernel biasa sumber

AWS mengatakan Bottlerocket "menggunakan model operasi yang lebih meningkatkan keamanan dengan mencegah koneksi ke server produksi dengan hak administratif" dan "cocok untuk sistem terdistribusi besar di mana kontrol atas setiap host terbatas."

Wadah administrator disediakan untuk administrator sistem. Namun menurut AWS, admin tidak perlu sering bekerja di dalam Bottlerocket: "Tindakan masuk ke instans Bottlerocket terpisah ditujukan untuk operasi yang jarang dilakukan: proses debug dan pemecahan masalah tingkat lanjut," menulis pengembang.

Bahasa karat

Instrumentasi OS di atas kernel sebagian besar ditulis dalam Rust. Bahasa ini pada dasarnya mengurangi kemungkinan akses memori yang tidak amanDan menghilangkan kondisi balapan antar thread.

Bendera diterapkan secara default saat membangun --enable-default-pie ΠΈ --enable-default-ssp untuk mengaktifkan pengacakan ruang alamat file yang dapat dieksekusi (dapat dieksekusi secara independen posisi, PIE) dan perlindungan stack overflow.

Untuk paket C/C++, flag tambahan disertakan -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS ΠΈ -fstack-clash-protection.

Selain Rust dan C/C++, beberapa paket ditulis dalam Go.

Integrasi dengan layanan AWS

Perbedaan dari sistem operasi kontainer serupa adalah Amazon telah mengoptimalkan Bottlerocket untuk berjalan di AWS dan berintegrasi dengan layanan AWS lainnya.

Orkestra kontainer yang paling populer adalah Kubernetes, jadi AWS telah memperkenalkan integrasi dengan Enterprise Kubernetes Service (EKS) miliknya sendiri. Alat orkestrasi hadir dalam wadah kontrol terpisah wadah kendali roket botol, yang diaktifkan secara default dan dikelola melalui API dan AWS SSM Agent.

Akan menarik untuk melihat apakah Bottlerocket berhasil, mengingat kegagalan beberapa inisiatif serupa di masa lalu. Misalnya, PhotonOS dari Vmware ternyata tidak diklaim, dan RedHat membeli CoreOS dan menutup proyek tersebut, yang dianggap sebagai pionir di bidangnya.

Integrasi Bottlerocket ke dalam layanan AWS menjadikan sistem ini unik dengan caranya sendiri. Ini mungkin alasan utama mengapa beberapa pengguna lebih memilih Bottlerocket daripada distro lain seperti CoreOS atau Alpine. Sistem ini pada awalnya dirancang untuk bekerja dengan EKS dan ECS, namun kami ulangi bahwa hal ini tidak diperlukan. Pertama, Bottlerocket bisa merakit sendiri dan menggunakannya, misalnya, sebagai solusi yang dihosting. Kedua, pengguna EKS dan ECS masih dapat memilih OS mereka.

Kode sumber Bottlerocket dipublikasikan di GitHub di bawah lisensi Apache 2.0. Para pengembang sudah melakukannya menanggapi laporan bug dan permintaan fitur.

Tentang Hak Periklanan

VDSina menawarkan VDS dengan pembayaran harian. Dimungkinkan untuk menginstal sistem operasi apa pun, termasuk dari gambar Anda sendiri. Setiap server terhubung ke saluran Internet 500 Megabit dan terlindungi dari serangan DDoS secara gratis!

Distribusi Linux minimalis, Bottlerocket, telah dirilis untuk menjalankan container. Hal terpenting tentang dia

Sumber: www.habr.com

Tambah komentar