Perusahaan Amazon
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
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 /etc
dipasang dengan sistem file di RAM /etc
tidak didukung: untuk menyimpan pengaturan Anda harus menggunakan API atau memindahkan fungsionalitas ke dalam wadah terpisah.
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
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 (
Ada juga filter di sistem
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
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,"
Bahasa karat
Instrumentasi OS di atas kernel sebagian besar ditulis dalam Rust. Bahasa ini pada dasarnya
Bendera diterapkan secara default saat membangun --enable-default-pie
ΠΈ --enable-default-ssp
untuk mengaktifkan pengacakan ruang alamat file yang dapat dieksekusi (
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
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
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
Kode sumber Bottlerocket dipublikasikan di GitHub di bawah lisensi Apache 2.0. Para pengembang sudah melakukannya
Tentang Hak Periklanan
VDSina menawarkan
Sumber: www.habr.com