Kit distribusi Linux minimalis Bottlerocket untuk menjalankan container telah dirilis. Hal terpenting tentang dia





Amazon telah mengumumkan rilis final Bottlerocket , distribusi khusus untuk menjalankan dan mengelola kontainer secara efisien.



Bottlerocket (ngomong-ngomong, ini adalah cara mereka menyebut roket blackpowder kecil buatan sendiri) bukanlah OS pertama untuk container, tetapi kemungkinan besar ini akan tersebar luas karena integrasi default dengan layanan AWS. Meskipun sistem difokuskan pada cloud Amazon, open source memungkinkan Anda untuk membangunnya di mana saja: secara lokal di server, di Raspberry Pi, di cloud pesaing, dan bahkan di lingkungan tanpa kontainer.



Ini adalah pengganti yang cukup layak untuk distribusi CoreOS yang telah dikubur Red Hat.



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



AWS Mengumumkan Bottlerocket pada Maret 2020... Dia segera menyadari bahwa ini bukanlah "Linux untuk container" yang pertama, mengutip CoreOS, Rancher OS dan Project Atomic sebagai sumber inspirasi. Para pengembang menulis bahwa sistem operasi adalah "hasil dari pelajaran yang telah kami pelajari selama sejarah panjang menjalankan layanan produksi di Amazon dan pengalaman yang kami peroleh selama enam tahun terakhir tentang cara menjalankan kontainer."



Minimalis ekstrim



Linux telah kehilangan semua 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, dan mengurangi penggunaan sumber daya. Pada dasarnya, semua yang ada di sini berfungsi di dalam wadah terpisah, dan sistem dasarnya praktis kosong.



Amazon juga telah menghapus semua shell dan interpreter, menghilangkan risiko pengguna menggunakannya atau secara tidak sengaja meningkatkan hak istimewa. Gambar dasar tidak memiliki shell perintah, server SSH, dan bahasa yang ditafsirkan seperti Python demi minimalis dan keamanan. Alat administrator telah dipindahkan ke wadah layanan terpisah, yang dinonaktifkan secara default.



Manajemen sistem disediakan dalam dua cara: melalui API dan orkestrasi.



Alih-alih manajer paket yang memperbarui setiap bagian perangkat lunak, Bottlerocket mengunduh gambar sistem file lengkap dan memuat ulang ke dalamnya. Jika unduhan gagal, unduhan otomatis akan dibatalkan, dan kegagalan beban kerja dapat memicu rollback manual (perintah melalui API).



The TUF (The Perbarui Framework) download update berbasis gambar untuk alternatif atau partisi "unmount". Dua partisi disk dialokasikan untuk sistem, salah satunya berisi sistem aktif, dan pembaruan disalin ke yang kedua. Dalam kasus ini, partisi root dipasang dalam mode hanya-baca, dan partisi /etcdipasang dengan sistem file di RAM tmpfsdan mengembalikan keadaan aslinya setelah restart. Modifikasi langsung dari file konfigurasi /etctidak didukung: untuk menyimpan pengaturan, gunakan API atau pindahkan fungsionalitas ke dalam wadah terpisah.





Skema pembaruan API



Keamanan



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



Secara default, kebijakan diaktifkan untuk berbagi sumber daya antara kontainer dan kernel. Binari dilindungi oleh bendera untuk mencegah pengguna atau program mengeksekusinya. Dan jika ada yang masuk ke sistem file, Bottlerocket menawarkan alat untuk memeriksa dan melacak setiap perubahan yang dibuat.



Mode "boot terverifikasi" diimplementasikan melalui fungsi device-mapper-verity ( dm-verity), 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 yang mendasarinya."



Sistem ini juga memiliki eBPF (BPF diperpanjang, dikembangkan oleh Alexey Starovoitov ), yang memungkinkan penggantian modul kernel 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 Iya apa saja hak pengguna menghentikan eksekusi panggilan sistem, kesalahan
Inti tugas tidak statis tidak inti panik lurus
BPF peristiwa Iya JIT, CO-RE verifikasi, JIT pesan eror pembantu terbatas


Membedakan BPF dari kode tingkat pengguna atau tingkat kernel biasa, sumber



AWS menyatakan bahwa Bottlerocket "mengadopsi model operasi yang selanjutnya meningkatkan keamanan dengan mencegah hak administrator agar tidak terhubung ke server produksi" dan "cocok untuk sistem terdistribusi besar di mana kontrol dibatasi. di atas setiap inang individu ".



Wadah administrator disediakan untuk administrator sistem. Namun AWS tidak berpikir bahwa admin harus sering bekerja di dalam Bottlerocket: "Tindakan masuk ke instans Bottlerocket terpisah dimaksudkan untuk operasi yang jarang: debugging dan pemecahan masalah tingkat lanjut," tulis pengembang.



Bahasa Rust



Alat OS di atas kernel sebagian besar ditulis dalam Rust. Bahasa ini pada dasarnya mengurangi kemungkinan akses memori yang tidak aman dan juga menghilangkan kondisi balapan antar utas .



Jika flag build default diterapkan --enable-default-piedan --enable-default-sspuntuk mengaktifkan pengacakan ruang alamat dari file yang dapat dieksekusi (tidak bergantung pada posisi eksekusi , PIE) dan perlindungan terhadap stack overflow.



Untuk paket ke C / C ++ lebih lanjut termasuk bendera -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONSdan -fstack-clash-protection.



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



Integrasi dengan layanan AWS



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



Orkestrator container paling populer adalah Kubernetes, jadi AWS telah mengimplementasikan integrasi dengan Enterprise Kubernetes Service (EKS) miliknya sendiri. Alat orkestrasi hadir dalam wadah bottlerocket-control- terpisah , yang diaktifkan secara default dan dikelola melalui API dan Agen AWS SSM.



Akan menarik untuk melihat apakah Bottlerocket lepas landas mengingat kegagalan beberapa inisiatif ini di masa lalu. Misalnya, PhotonOS Vmware bangkrut, dan RedHat membeli CoreOS dan menutup proyek yang dianggap sebagai pelopor di bidang tersebut.



Integrasi Bottlerocket ke dalam layanan AWS menjadikan sistem ini unik dengan caranya sendiri. Ini mungkin alasan utama mengapa beberapa pengguna mungkin lebih memilih Bottlerocket daripada distribusi lain seperti CoreOS atau Alpine. Sistem ini awalnya dirancang untuk bekerja dengan EKS dan ECS, tetapi sekali lagi, ini tidak perlu. Pertama, Bottlerocket dapat dibuat secara mandiri dan digunakan, misalnya, sebagai solusi yang dihosting. Kedua, pengguna EKS dan ECS masih memiliki pilihan OS.



Kode sumber Bottlerocket diterbitkan di GitHub di bawah lisensi Apache 2.0. Pengembang sudah menanggapi laporan bug dan permintaan fitur .






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 dilindungi dari serangan DDoS secara gratis!






All Articles