Minimalistik Linux distributivi Bottlerocket konteynerlarni ishlatish uchun chiqarildi. U haqida eng muhim narsa

Minimalistik Linux distributivi Bottlerocket konteynerlarni ishlatish uchun chiqarildi. U haqida eng muhim narsa

Amazon e'lon qildi yakuniy nashr haqida Shisha idish — konteynerlarni ishga tushirish va ularni samarali boshqarish uchun ixtisoslashtirilgan tarqatish.

Bottlerocket (Aytgancha, kichik uy qurilishi qora kukunli raketalarga berilgan nom) konteynerlar uchun birinchi operatsion tizim emas, lekin u AWS xizmatlari bilan standart integratsiya tufayli keng tarqalgan bo'lishi mumkin. Tizim Amazon bulutiga yo'naltirilgan bo'lsa-da, ochiq kodli kod uni istalgan joyda qurishga imkon beradi: mahalliy serverda, Raspberry Pi-da, har qanday raqobatdosh bulutda va hatto konteynersiz muhitda.

Bu Red Hat ko'mgan CoreOS tarqatish uchun to'liq munosib o'rinbosar.

Darhaqiqat, Amazon Web Services bo'limida allaqachon Amazon Linux mavjud bo'lib, u yaqinda ikkinchi versiyasida chiqdi: bu Docker konteynerida yoki Linux KVM, Microsoft Hyper-V va VMware bilan ishlashi mumkin bo'lgan umumiy maqsadli tarqatish. ESXi gipervisorlari. U AWS bulutida ishlash uchun optimallashtirilgan, ammo Bottlerocket-ning chiqarilishi bilan hamma xavfsizroq, zamonaviyroq va kamroq resurslardan foydalanadigan yangi tizimga o'tishga undaydi.

AWS Bottlerocketni e'lon qildi 2020 yil mart oyida. U ilhom manbalari sifatida CoreOS, Rancher OS va Project Atomic-ga tayanib, bu birinchi "konteynerlar uchun Linux" emasligini darhol tan oldi. Ishlab chiquvchilarning yozishicha, operatsion tizim "uzoq vaqt davomida Amazon miqyosida ishlab chiqarish xizmatlarini ishga tushirishdan olgan saboqlarimiz va oxirgi olti yil ichida konteynerlarni qanday boshqarish bo‘yicha to‘plagan tajribamiz natijasidir".

Haddan tashqari minimalizm

Linux konteynerlarni ishlatish uchun kerak bo'lmagan hamma narsadan mahrum. Ushbu dizayn, kompaniyaga ko'ra, hujum yuzasini kamaytiradi.

Bu shuni anglatadiki, bazaviy tizimda kamroq paketlar o'rnatilgan, bu OTni saqlash va yangilashni osonlashtiradi, shuningdek, bog'liqliklar tufayli muammolar ehtimolini kamaytiradi, resurslardan foydalanishni kamaytiradi. Asosan, bu erda hamma narsa alohida idishlar ichida ishlaydi va asosiy tizim deyarli yalang'och.

Amazon shuningdek, barcha qobiq va tarjimonlarni olib tashladi, ulardan foydalanish yoki foydalanuvchilarning tasodifan imtiyozlarni oshirish xavfini yo'q qildi. Minimalizm va xavfsizlik uchun asosiy tasvir buyruqlar qobig'ini, SSH serverini yoki Python kabi talqin qilingan tillarni o'z ichiga olmaydi. Administrator vositalari sukut bo'yicha o'chirilgan alohida xizmat ko'rsatish konteyneriga joylashtirilgan.

Tizim ikki usulda boshqariladi: API va orkestratsiya orqali.

Dasturiy ta'minotning alohida qismlarini yangilaydigan paket menejeri o'rniga Bottlerocket fayl tizimining to'liq tasvirini yuklab oladi va uni qayta ishga tushiradi. Agar yuk muvaffaqiyatsiz bo'lsa, u avtomatik ravishda orqaga qaytariladi va ish yukining noto'g'riligi qo'lda orqaga qaytarishni boshlashi mumkin (API orqali buyruq).

Ramka TUF (Yangilanish ramkasi) muqobil yoki "ajralmagan" bo'limlarga tasvirga asoslangan yangilanishlarni yuklab oladi. Tizim uchun ikkita disk bo'limi ajratilgan, ulardan biri faol tizimni o'z ichiga oladi va yangilanish ikkinchisiga ko'chiriladi. Bunday holda, ildiz bo'limi faqat o'qish rejimida o'rnatiladi va bo'lim /etc RAMdagi fayl tizimi bilan o'rnatilgan tmpfs va qayta ishga tushirilgandan so'ng asl holatini tiklaydi. Konfiguratsiya fayllarini to'g'ridan-to'g'ri o'zgartirish /etc qo'llab-quvvatlanmaydi: sozlamalarni saqlash uchun siz API-dan foydalanishingiz yoki funksionallikni alohida konteynerlarga ko'chirishingiz kerak.

Minimalistik Linux distributivi Bottlerocket konteynerlarni ishlatish uchun chiqarildi. U haqida eng muhim narsa
API yangilash sxemasi

Xavfsizlik

Konteynerlar Linux yadrosining standart mexanizmlari - guruhlar, nomlar va seccomp tomonidan yaratilgan va majburiy kirishni boshqarish tizimi sifatida, ya'ni qo'shimcha izolyatsiya uchun ishlatiladi. SELinux "majburiy" rejimida.

Odatiy bo'lib, siyosatlar konteynerlar va yadro o'rtasida resurslarni almashish uchun yoqilgan. Ikkilik fayllar foydalanuvchilarning yoki dasturlarning ularni bajarishiga yo'l qo'ymaslik uchun bayroqlar bilan himoyalangan. Va agar kimdir fayl tizimiga kirsa, Bottlerocket kiritilgan o'zgarishlarni tekshirish va kuzatish uchun vositani taklif qiladi.

"Tasdiqlangan yuklash" rejimi qurilma-mapper-verity funktsiyasi orqali amalga oshiriladi (dm-haqiqat), yuklash paytida ildiz bo'limining yaxlitligini tekshiradi. AWS dm-verity-ni “Linux yadrosining OTda zararli dasturlarning ishlashini oldini olish uchun yaxlitlikni tekshirishni taʼminlaydigan xususiyati, masalan, asosiy tizim dasturiy taʼminotini qayta yozish” deb taʼriflaydi.

Tizimda filtr ham mavjud eGMP (kengaytirilgan BPF, Aleksey Starovoitov tomonidan ishlab chiqilgan), bu yadro modullarini past darajadagi tizim operatsiyalari uchun xavfsizroq BPF dasturlari bilan almashtirish imkonini beradi.

Amalga oshirish modeli
Foydalanuvchi aniqlangan
Jamlama
Xavfsizlik
Muvaffaqiyatsizlik rejimi
Resurslarga kirish

Foydalanuvchi
muammo
ha
har qanday
foydalanuvchi huquqlari
bajarilishini to'xtatish
tizim chaqiruvi, xato

asosiy
muammo
yo'q
statik
yo'q
yadro vahima
to'g'ri

GMP
sobitie
ha
JIT, CO-RE
tekshirish, JIT
xato xabari
cheklangan yordamchilar

BPF oddiy foydalanuvchi yoki yadro darajasidagi koddan qanday farq qiladi manba

AWSning ta'kidlashicha, Bottlerocket "ma'muriy imtiyozlarga ega bo'lgan ishlab chiqarish serverlariga ulanishni oldini olish orqali xavfsizlikni yanada kuchaytiradigan operatsion modeldan foydalanadi" va "har bir alohida xost ustidan nazorat cheklangan katta taqsimlangan tizimlar uchun javob beradi".

Tizim ma'murlari uchun administrator konteyneri taqdim etiladi. Ammo AWS administrator ko‘pincha Bottlerocket ichida ishlashi kerak deb o‘ylamaydi: “Bottlerocket-ning alohida nusxasiga kirish harakati kamdan-kam hollarda bajariladigan operatsiyalar uchun mo‘ljallangan: ilg‘or disk raskadrovka va muammolarni bartaraf etish,” yozing ishlab chiquvchilar.

Zang tili

Yadro ustidagi OS asboblari asosan Rustda yozilgan. Bu til o'z tabiatiga ko'ra xavfsiz xotiraga kirish ehtimolini kamaytiradi, shuningdek iplar orasidagi poyga sharoitlarini yo'q qiladi.

Qurilishda bayroqlar sukut bo'yicha qo'llaniladi --enable-default-pie и --enable-default-ssp bajariladigan fayllarning manzil maydonini tasodifiylashtirishni yoqish (pozitsiyadan mustaqil bajariladigan, PIE) va stekning toshib ketishidan himoya qilish.

C/C++ paketlari uchun qo'shimcha bayroqlar kiritilgan -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

Rust va C/C++ dan tashqari ba'zi paketlar Go'da yozilgan.

AWS xizmatlari bilan integratsiya

Shu kabi konteyner operatsion tizimlaridan farqi shundaki, Amazon AWS da ishlash va boshqa AWS xizmatlari bilan integratsiya qilish uchun Bottlerocket-ni optimallashtirgan.

Eng mashhur konteyner orkestri Kubernetes, shuning uchun AWS o'zining Enterprise Kubernetes Service (EKS) bilan integratsiyani joriy qildi. Orkestrlash vositalari alohida nazorat konteynerida keladi bottlerocket-nazorat-konteyner, sukut bo'yicha yoqilgan va API va AWS SSM Agent orqali boshqariladi.

O'tmishda shunga o'xshash tashabbuslar muvaffaqiyatsizlikka uchraganini hisobga olsak, Bottlerocket uchib ketadimi yoki yo'qligini bilish qiziq. Masalan, Vmware-dan PhotonOS talab qilinmagan bo'lib chiqdi va RedHat CoreOS-ni sotib oldi va loyihani yopdi, bu sohada kashshof hisoblangan.

Bottlerocket-ning AWS xizmatlariga integratsiyalashuvi ushbu tizimni o'ziga xos tarzda noyob qiladi. Bu, ehtimol, ba'zi foydalanuvchilar Bottlerocket-ni CoreOS yoki Alpine kabi boshqa distroslardan afzal ko'rishlarining asosiy sababidir. Tizim dastlab EKS va ECS bilan ishlash uchun mo'ljallangan, ammo biz bu kerak emasligini takrorlaymiz. Birinchidan, Bottlerocket mumkin o'zingiz yig'ing va uni, masalan, hosted yechim sifatida foydalaning. Ikkinchidan, EKS va ECS foydalanuvchilari hali ham o'z operatsion tizimini tanlash imkoniyatiga ega bo'ladilar.

Bottlerocket manba kodi GitHub-da Apache 2.0 litsenziyasi ostida nashr etilgan. Ishlab chiquvchilar allaqachon xato hisobotlari va xususiyat so'rovlariga javob bering.

Reklama huquqlari to'g'risida

VDSina takliflar Kundalik to'lov bilan VDS. Har qanday operatsion tizimni, shu jumladan o'zingizning rasmingizdan o'rnatishingiz mumkin. Har bir server 500 Megabitli internet kanaliga ulangan va DDoS hujumlaridan bepul himoyalangan!

Minimalistik Linux distributivi Bottlerocket konteynerlarni ishlatish uchun chiqarildi. U haqida eng muhim narsa

Manba: www.habr.com

a Izoh qo'shish