يتوفر Bottlerocket 1.8 ، وهو توزيع يعتمد على الحاويات المعزولة

تم نشر إصدار توزيعة Linux Bottlerocket 1.8.0، والتي تم تطويرها بمشاركة Amazon من أجل الإطلاق الفعال والآمن للحاويات المعزولة. أدوات التوزيع ومكونات التحكم مكتوبة بلغة Rust ويتم توزيعها بموجب تراخيص MIT وApache 2.0. وهو يدعم تشغيل Bottlerocket على مجموعات Amazon ECS وVMware وAWS EKS Kubernetes، بالإضافة إلى إنشاء إصدارات وإصدارات مخصصة تسمح باستخدام أدوات التنسيق ووقت التشغيل المتنوعة للحاويات.

يوفر التوزيع صورة نظام غير قابلة للتجزئة يتم تحديثها ذريًا وتلقائيًا، وتتضمن نواة Linux وبيئة نظام بسيطة، بما في ذلك المكونات الضرورية فقط لتشغيل الحاويات. تتضمن البيئة مدير نظام systemd، ومكتبة Glibc، وأداة بناء Buildroot، ومحمل التمهيد GRUB، ومكوِّن الشبكة الشريرة، ووقت تشغيل الحاوية للحاويات المعزولة، ومنصة تنسيق الحاويات Kubernetes، وأداة aws-iam-authenticator، وAmazon. وكيل ECS.

تأتي أدوات تنسيق الحاوية في حاوية إدارة منفصلة يتم تمكينها افتراضيًا وإدارتها من خلال واجهة برمجة التطبيقات (API) وAWS SSM Agent. لا تحتوي الصورة الأساسية على غلاف أوامر وخادم SSH واللغات المفسرة (على سبيل المثال، لا يوجد Python أو Perl) - يتم وضع الأدوات الإدارية وأدوات تصحيح الأخطاء في حاوية خدمة منفصلة، ​​والتي يتم تعطيلها افتراضيًا.

يتمثل الاختلاف الرئيسي عن التوزيعات المماثلة مثل Fedora CoreOS وCentOS/Red Hat Atomic Host في التركيز الأساسي على توفير أقصى قدر من الأمان في سياق تعزيز حماية النظام من التهديدات المحتملة، مما يزيد من صعوبة استغلال نقاط الضعف في مكونات نظام التشغيل وزيادة عزل الحاويات . يتم إنشاء الحاويات باستخدام آليات Linux kernel القياسية - مجموعات cgroups ومساحات الأسماء وseccomp. لمزيد من العزل، يستخدم التوزيع SELinux في وضع "الفرض".

يتم تثبيت القسم الجذر للقراءة فقط، ويتم تثبيت قسم الإعدادات /etc في tmpfs ويتم استعادته إلى حالته الأصلية بعد إعادة التشغيل. التعديل المباشر للملفات في الدليل /etc، مثل /etc/resolv.conf و/etc/containerd/config.toml، غير مدعوم - لحفظ الإعدادات بشكل دائم، يجب عليك استخدام واجهة برمجة التطبيقات (API) أو نقل الوظيفة إلى حاويات منفصلة. يتم استخدام وحدة dm-verity للتحقق من سلامة القسم الجذر بشكل مشفر، وإذا تم اكتشاف محاولة لتعديل البيانات على مستوى جهاز الكتلة، فسيتم إعادة تشغيل النظام.

تتم كتابة معظم مكونات النظام بلغة Rust، والتي توفر ميزات آمنة للذاكرة لتجنب الثغرات الأمنية الناجمة عن الوصول إلى الذاكرة بعد الفراغ، وإلغاء مرجعيات المؤشر الفارغ، وتجاوزات المخزن المؤقت. عند الإنشاء بشكل افتراضي، يتم استخدام أوضاع التجميع "-enable-default-pie" و"-enable-default-ssp" لتمكين التوزيع العشوائي لمساحة عنوان الملف القابل للتنفيذ (PIE) والحماية من تجاوزات المكدس من خلال استبدال Canary. بالنسبة للحزم المكتوبة بلغة C/C++، يتم إضافة العلامات "-Wall" و"-Werror=format-security" و"-Wp,-D_FORTIFY_SOURCE=2" و"-Wp,-D_GLIBCXX_ASSERTIONS" و"-fstack-clash" بالإضافة إلى ذلك تمكين - الحماية".

في الإصدار الجديد:

  • تم تحديث محتويات الحاويات الإدارية والتحكمية.
  • تم تحديث وقت التشغيل للحاويات المعزولة إلى فرع الحاوية 1.6.x.
  • يضمن إعادة تشغيل العمليات الخلفية التي تنسق تشغيل الحاويات بعد إجراء تغييرات على مخزن الشهادات.
  • من الممكن ضبط معلمات تمهيد kernel من خلال قسم تكوين التمهيد.
  • تم تمكين تجاهل الكتل الفارغة عند مراقبة سلامة القسم الجذر باستخدام dm-verity.
  • تم توفير القدرة على ربط أسماء المضيفين بشكل ثابت في /etc/hosts.
  • تم توفير القدرة على إنشاء تكوين شبكة باستخدام الأداة المساعدة netdog (تمت إضافة أمر generator-net-config).
  • تم اقتراح خيارات توزيع جديدة مع دعم Kubernetes 1.23. تم تقليل وقت بدء تشغيل القرون في Kubernetes عن طريق تعطيل وضع configMapAndSecretChangeDetectionStrategy. تمت إضافة إعدادات kubelet جديدة: معرف الموفر وpodPidsLimit.
  • تم اقتراح إصدار جديد من مجموعة التوزيع "aws-ecs-1-nvidia" لخدمة Amazon Elastic Container Service (Amazon ECS)، المزودة ببرامج تشغيل NVIDIA.
  • تمت إضافة دعم لأجهزة التخزين Microchip Smart Storage وMegaRAID SAS. تم توسيع دعم بطاقات Ethernet على شرائح Broadcom.
  • تم تحديث إصدارات الحزم وتبعياتها للغتي Go وRust، بالإضافة إلى إصدارات الحزم مع برامج الجهات الخارجية. تم تحديث Bottlerocket SDK إلى الإصدار 0.26.0.

المصدر: opennet.ru

إضافة تعليق