شركة أمازون
إن Bottlerocket (بالمناسبة، الاسم الذي يطلق على صواريخ مسحوق أسود صغيرة محلية الصنع) ليس أول نظام تشغيل للحاويات، ولكن من المحتمل أن ينتشر على نطاق واسع بفضل التكامل الافتراضي مع خدمات AWS. على الرغم من أن النظام يركز على سحابة أمازون، إلا أن الكود مفتوح المصدر يسمح ببنائه في أي مكان: محليًا على خادم، على Raspberry Pi، في أي سحابة منافسة، وحتى في بيئة بدون حاوية.
يعد هذا بديلاً جيدًا تمامًا لتوزيع CoreOS الذي دفنته Red Hat.
في الواقع، يمتلك قسم Amazon Web Services بالفعل Amazon Linux، والذي صدر مؤخرًا في نسخته الثانية: وهو توزيع للأغراض العامة يمكن تشغيله في حاوية Docker أو باستخدام Linux KVM وMicrosoft Hyper-V وVMware. مراقبي الأجهزة الافتراضية ESXi. لقد تم تحسينه للتشغيل على سحابة AWS، ولكن مع إصدار Bottlerocket، يتم تشجيع الجميع على الترقية إلى نظام جديد أكثر أمانًا وحداثة ويستخدم موارد أقل.
أعلنت AWS عن لعبة Bottlerocket
بساطتها القصوى
يتم تجريد Linux من كل ما هو غير ضروري لتشغيل الحاويات. وهذا التصميم، بحسب الشركة، يقلل من مساحة الهجوم.
وهذا يعني أنه تم تثبيت عدد أقل من الحزم على النظام الأساسي، مما يسهل صيانة نظام التشغيل وتحديثه، ويقلل أيضًا من احتمالية حدوث مشكلات بسبب التبعيات، مما يقلل من استخدام الموارد. في الأساس، كل شيء هنا يعمل داخل حاويات منفصلة، والنظام الأساسي خالي عمليًا.
قامت أمازون أيضًا بإزالة جميع الأصداف والمترجمات الفورية، مما يلغي خطر استخدامها أو قيام المستخدمين بتصعيد الامتيازات عن طريق الخطأ. من أجل التبسيط والأمان، لا تتضمن الصورة الأساسية غلاف أوامر أو خادم SSH أو لغات مترجمة مثل Python. يتم وضع أدوات الإدارة في حاوية خدمة منفصلة، والتي يتم تعطيلها افتراضيًا.
تتم إدارة النظام بطريقتين: من خلال واجهة برمجة التطبيقات (API) والتنسيق.
بدلاً من مدير الحزم الذي يقوم بتحديث الأجزاء الفردية من البرامج، يقوم Bottlerocket بتنزيل صورة كاملة لنظام الملفات وإعادة التشغيل فيها. إذا فشل التحميل، فسيتم التراجع تلقائيًا، ويمكن أن يؤدي فشل حمل العمل إلى التراجع يدويًا (الأمر عبر واجهة برمجة التطبيقات).
نطاق /etc
شنت مع نظام الملفات في ذاكرة الوصول العشوائي /etc
غير مدعوم: لحفظ الإعدادات، يجب عليك استخدام واجهة برمجة التطبيقات (API) أو نقل الوظيفة إلى حاويات منفصلة.
مخطط تحديث API
أمن
يتم إنشاء الحاويات بواسطة الآليات القياسية لنواة Linux - مجموعات cgroups ومساحات الأسماء وseccomp، ويتم استخدامها كنظام تحكم في الوصول القسري، أي لعزل إضافي
افتراضيًا، يتم تمكين السياسات لمشاركة الموارد بين الحاويات والنواة. الثنائيات محمية بإشارات لمنع المستخدمين أو البرامج من تنفيذها. وإذا وصل أحد إلى نظام الملفات، فإن Bottlerocket يقدم أداة للتحقق وتتبع أي تغييرات تم إجراؤها.
يتم تنفيذ وضع "التمهيد الذي تم التحقق منه" من خلال وظيفة التحقق من جهاز معين (
يوجد أيضًا مرشح في النظام
نموذج التنفيذ
تعريف المستخدم
التحويل البرمجي
أمن
وضع الفشل
الوصول إلى الموارد
المستخدم
مهمة
نعم
أي
حقوق المستخدم
مقاطعة التنفيذ
استدعاء النظام، خطأ
جوهر
مهمة
لا
ثابتة
لا
ذعر النواة
توجيه
BPF
событие
نعم
جيت، كو-ري
التحقق، JIT
رسالة خطأ
مساعدين محدودين
كيف يختلف BPF عن المستخدم العادي أو رمز مستوى النواة
قالت AWS إن Bottlerocket "تستخدم نموذج تشغيل يعزز الأمان بشكل أكبر من خلال منع الاتصال بخوادم الإنتاج ذات الامتيازات الإدارية" وهو "مناسب للأنظمة الموزعة الكبيرة حيث يكون التحكم في كل مضيف فردي محدودًا".
يتم توفير حاوية المسؤول لمسؤولي النظام. لكن AWS لا تعتقد أن المسؤول سيحتاج في كثير من الأحيان إلى العمل داخل Bottlerocket: "إن عملية تسجيل الدخول إلى مثيل Bottlerocket منفصل مخصصة للعمليات النادرة: التصحيح المتقدم واستكشاف الأخطاء وإصلاحها،"
لغة الصدأ
تتم كتابة أدوات نظام التشغيل الموجودة أعلى النواة في الغالب بلغة Rust. وهذه اللغة بطبيعتها
يتم تطبيق الأعلام بشكل افتراضي عند البناء --enable-default-pie
и --enable-default-ssp
لتمكين التوزيع العشوائي لمساحة العنوان للملفات القابلة للتنفيذ (
بالنسبة لحزم 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) الخاصة بها. تأتي أدوات التنسيق في حاوية تحكم منفصلة
سيكون من المثير للاهتمام معرفة ما إذا كانت شركة Bottlerocket ستنطلق أم لا، نظرًا لفشل بعض المبادرات المماثلة في الماضي. على سبيل المثال، تبين أن PhotonOS من Vmware لم تتم المطالبة به، واشترت RedHat CoreOS و
إن دمج Bottlerocket في خدمات AWS يجعل هذا النظام فريدًا بطريقته الخاصة. ربما يكون هذا هو السبب الرئيسي الذي يجعل بعض المستخدمين يفضلون Bottlerocket على التوزيعات الأخرى مثل CoreOS أو Alpine. تم تصميم النظام في البداية للعمل مع EKS وECS، ولكننا نكرر أن هذا ليس ضروريًا. أولاً، يمكن لـ Bottlerocket
يتم نشر كود مصدر Bottlerocket على GitHub بموجب ترخيص Apache 2.0. لقد قام المطورون بالفعل
كإعلان
فدسينا تقدم
المصدر: www.habr.com