تم إصدار Bottlerocket لتوزيع Linux المصغر لتشغيل الحاويات. أهم شيء عنه

تم إصدار Bottlerocket لتوزيع Linux المصغر لتشغيل الحاويات. أهم شيء عنه

شركة أمازون أعلن حول الإصدار النهائي صاروخ زجاجة — توزيعة متخصصة لتشغيل الحاويات وإدارتها بشكل فعال.

إن Bottlerocket (بالمناسبة، الاسم الذي يطلق على صواريخ مسحوق أسود صغيرة محلية الصنع) ليس أول نظام تشغيل للحاويات، ولكن من المحتمل أن ينتشر على نطاق واسع بفضل التكامل الافتراضي مع خدمات AWS. على الرغم من أن النظام يركز على سحابة أمازون، إلا أن الكود مفتوح المصدر يسمح ببنائه في أي مكان: محليًا على خادم، على Raspberry Pi، في أي سحابة منافسة، وحتى في بيئة بدون حاوية.

يعد هذا بديلاً جيدًا تمامًا لتوزيع CoreOS الذي دفنته Red Hat.

في الواقع، يمتلك قسم Amazon Web Services بالفعل Amazon Linux، والذي صدر مؤخرًا في نسخته الثانية: وهو توزيع للأغراض العامة يمكن تشغيله في حاوية Docker أو باستخدام Linux KVM وMicrosoft Hyper-V وVMware. مراقبي الأجهزة الافتراضية ESXi. لقد تم تحسينه للتشغيل على سحابة AWS، ولكن مع إصدار Bottlerocket، يتم تشجيع الجميع على الترقية إلى نظام جديد أكثر أمانًا وحداثة ويستخدم موارد أقل.

أعلنت AWS عن لعبة Bottlerocket في مارس 2020. واعترفت على الفور أن هذا ليس أول "Linux للحاويات"، مستشهدة بمصادر الإلهام لـ CoreOS وRancher OS وProject Atomic. كتب المطورون أن نظام التشغيل هو "نتيجة الدروس التي تعلمناها من تشغيل خدمات الإنتاج على نطاق أمازون لفترة طويلة، والخبرة التي اكتسبناها على مدى السنوات الست الماضية حول كيفية تشغيل الحاويات".

بساطتها القصوى

يتم تجريد Linux من كل ما هو غير ضروري لتشغيل الحاويات. وهذا التصميم، بحسب الشركة، يقلل من مساحة الهجوم.

وهذا يعني أنه تم تثبيت عدد أقل من الحزم على النظام الأساسي، مما يسهل صيانة نظام التشغيل وتحديثه، ويقلل أيضًا من احتمالية حدوث مشكلات بسبب التبعيات، مما يقلل من استخدام الموارد. في الأساس، كل شيء هنا يعمل داخل حاويات منفصلة، ​​والنظام الأساسي خالي عمليًا.

قامت أمازون أيضًا بإزالة جميع الأصداف والمترجمات الفورية، مما يلغي خطر استخدامها أو قيام المستخدمين بتصعيد الامتيازات عن طريق الخطأ. من أجل التبسيط والأمان، لا تتضمن الصورة الأساسية غلاف أوامر أو خادم SSH أو لغات مترجمة مثل Python. يتم وضع أدوات الإدارة في حاوية خدمة منفصلة، ​​والتي يتم تعطيلها افتراضيًا.

تتم إدارة النظام بطريقتين: من خلال واجهة برمجة التطبيقات (API) والتنسيق.

بدلاً من مدير الحزم الذي يقوم بتحديث الأجزاء الفردية من البرامج، يقوم Bottlerocket بتنزيل صورة كاملة لنظام الملفات وإعادة التشغيل فيها. إذا فشل التحميل، فسيتم التراجع تلقائيًا، ويمكن أن يؤدي فشل حمل العمل إلى التراجع يدويًا (الأمر عبر واجهة برمجة التطبيقات).

نطاق TUF (إطار التحديث) يقوم بتنزيل التحديثات المستندة إلى الصور إلى الأقسام البديلة أو "غير المثبتة". يتم تخصيص قسمين من القرص للنظام، يحتوي أحدهما على النظام النشط، ويتم نسخ التحديث إلى الثاني. في هذه الحالة، يتم تثبيت القسم الجذر في وضع القراءة فقط، ويتم تثبيت القسم /etc شنت مع نظام الملفات في ذاكرة الوصول العشوائي tmpfs ويستعيد حالته الأصلية بعد إعادة التشغيل. التعديل المباشر لملفات التكوين في /etc غير مدعوم: لحفظ الإعدادات، يجب عليك استخدام واجهة برمجة التطبيقات (API) أو نقل الوظيفة إلى حاويات منفصلة.

تم إصدار Bottlerocket لتوزيع Linux المصغر لتشغيل الحاويات. أهم شيء عنه
مخطط تحديث API

أمن

يتم إنشاء الحاويات بواسطة الآليات القياسية لنواة Linux - مجموعات cgroups ومساحات الأسماء وseccomp، ويتم استخدامها كنظام تحكم في الوصول القسري، أي لعزل إضافي SELinux في وضع "الإنفاذ".

افتراضيًا، يتم تمكين السياسات لمشاركة الموارد بين الحاويات والنواة. الثنائيات محمية بإشارات لمنع المستخدمين أو البرامج من تنفيذها. وإذا وصل أحد إلى نظام الملفات، فإن Bottlerocket يقدم أداة للتحقق وتتبع أي تغييرات تم إجراؤها.

يتم تنفيذ وضع "التمهيد الذي تم التحقق منه" من خلال وظيفة التحقق من جهاز معين (DM-حقيقة)، الذي يتحقق من سلامة القسم الجذر أثناء التمهيد. تصف AWS dm-verity بأنها "ميزة في Linux kernel توفر فحوصات التكامل لمنع تشغيل البرامج الضارة على نظام التشغيل، مثل الكتابة فوق برامج النظام الأساسية."

يوجد أيضًا مرشح في النظام eGMP (BPF الموسعة، تم تطويره بواسطة أليكسي ستاروفويتوف)، والذي يسمح باستبدال وحدات kernel ببرامج BPF أكثر أمانًا لعمليات النظام ذات المستوى المنخفض.

نموذج التنفيذ
تعريف المستخدم
التحويل البرمجي
أمن
وضع الفشل
الوصول إلى الموارد

المستخدم
مهمة
نعم
أي
حقوق المستخدم
مقاطعة التنفيذ
استدعاء النظام، خطأ

جوهر
مهمة
لا
ثابتة
لا
ذعر النواة
توجيه

BPF
событие
نعم
جيت، كو-ري
التحقق، JIT
رسالة خطأ
مساعدين محدودين

كيف يختلف BPF عن المستخدم العادي أو رمز مستوى النواة مصدر

قالت AWS إن Bottlerocket "تستخدم نموذج تشغيل يعزز الأمان بشكل أكبر من خلال منع الاتصال بخوادم الإنتاج ذات الامتيازات الإدارية" وهو "مناسب للأنظمة الموزعة الكبيرة حيث يكون التحكم في كل مضيف فردي محدودًا".

يتم توفير حاوية المسؤول لمسؤولي النظام. لكن AWS لا تعتقد أن المسؤول سيحتاج في كثير من الأحيان إلى العمل داخل Bottlerocket: "إن عملية تسجيل الدخول إلى مثيل Bottlerocket منفصل مخصصة للعمليات النادرة: التصحيح المتقدم واستكشاف الأخطاء وإصلاحها،" пишут المطورين.

لغة الصدأ

تتم كتابة أدوات نظام التشغيل الموجودة أعلى النواة في الغالب بلغة Rust. وهذه اللغة بطبيعتها يقلل من احتمالية الوصول غير الآمن إلى الذاكرةو يلغي ظروف السباق بين المواضيع.

يتم تطبيق الأعلام بشكل افتراضي عند البناء --enable-default-pie и --enable-default-ssp لتمكين التوزيع العشوائي لمساحة العنوان للملفات القابلة للتنفيذ (موقف مستقل قابل للتنفيذ، PIE) وحماية تجاوز سعة المكدس.

بالنسبة لحزم C/C++، يتم تضمين علامات إضافية -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS и -fstack-clash-protection.

بالإضافة إلى Rust وC/C++، تتم كتابة بعض الحزم بلغة Go.

التكامل مع خدمات AWS

يتمثل الاختلاف عن أنظمة تشغيل الحاويات المماثلة في أن Amazon قامت بتحسين Bottlerocket للتشغيل على AWS والتكامل مع خدمات AWS الأخرى.

أشهر منسق للحاويات هو Kubernetes، لذلك قدمت AWS التكامل مع خدمة Enterprise Kubernetes (EKS) الخاصة بها. تأتي أدوات التنسيق في حاوية تحكم منفصلة حاوية التحكم في الصواريخ، والذي يتم تمكينه افتراضيًا وإدارته من خلال واجهة برمجة التطبيقات (API) وAWS SSM Agent.

سيكون من المثير للاهتمام معرفة ما إذا كانت شركة Bottlerocket ستنطلق أم لا، نظرًا لفشل بعض المبادرات المماثلة في الماضي. على سبيل المثال، تبين أن PhotonOS من Vmware لم تتم المطالبة به، واشترت RedHat CoreOS و أغلق المشروعوالذي يعتبر رائدا في هذا المجال.

إن دمج Bottlerocket في خدمات AWS يجعل هذا النظام فريدًا بطريقته الخاصة. ربما يكون هذا هو السبب الرئيسي الذي يجعل بعض المستخدمين يفضلون Bottlerocket على التوزيعات الأخرى مثل CoreOS أو Alpine. تم تصميم النظام في البداية للعمل مع EKS وECS، ولكننا نكرر أن هذا ليس ضروريًا. أولاً، يمكن لـ Bottlerocket تجميع بنفسك واستخدامها، على سبيل المثال، كحل مستضاف. ثانيًا، سيظل لدى مستخدمي EKS وECS القدرة على اختيار نظام التشغيل الخاص بهم.

يتم نشر كود مصدر Bottlerocket على GitHub بموجب ترخيص Apache 2.0. لقد قام المطورون بالفعل الرد على تقارير الأخطاء وطلبات الميزات.

كإعلان

فدسينا تقدم VDS مع الدفع اليومي. من الممكن تثبيت أي نظام تشغيل، بما في ذلك من صورتك الخاصة. كل خادم متصل بقناة إنترنت بسعة 500 ميجابت ومحمي من هجمات DDoS مجانًا!

تم إصدار Bottlerocket لتوزيع Linux المصغر لتشغيل الحاويات. أهم شيء عنه

المصدر: www.habr.com

إضافة تعليق