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

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

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

يمكّن عزل مساحة الاسم المؤسسات من استخدام مجموعات متعددة المستأجرين في سيناريوهات مختلفة. على سبيل المثال: قد يتشارك فريقان في نفس المجموعة مع إمكانية الوصول إلى أعباء العمل بدرجات متفاوتة من الحساسية؛ أو قد تقوم الشركات بتشغيل خدمات SaaS التي تخصص حاويات أو حجرات لكل عميل.

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

هذا هو المكان NamespaceHound يأتي. يمكن لمشغلي المجموعة استخدام NamespaceHound لتقييم مخاطر الانتهاكات بين المستأجرين في بيئتهم.

NamespaceHound هي أداة للكشف عن مخاطر الانتهاكات المحتملة لعبور مساحة الاسم في مجموعات متعددة المستأجرين. بالنظر إلى المجموعة، سيقوم NamespaceHound بإجراء تحليل لتحديد جميع الطرق الممكنة لعبور الحدود الأمنية بين مساحات الأسماء. بالإضافة إلى الكشف عن مشكلات مساحة الاسم المشتركة، فإنه يقوم بفحص تكوين المجموعة بحثًا عن فرص الوصول المجهول. إذا أعطيت مساحة اسم محددة (عبر معلمة مساحة الاسم -n)، فسوف تركز على مساحة الاسم هذه بالإضافة إلى الوصول المجهول للعثور على جميع الطرق الممكنة للوصول إلى الموارد في مساحة اسم أخرى أو التدخل فيها.

هناك مثال آخر يكون فيه NamespaceHound مفيدًا وهو مساعدة أعضاء الفريق الأحمر والباحثين الأمنيين في العثور على مسارات الحركة الجانبية بمجرد تجاوزهم نقطة الوصول الأولي إلى المجموعة. ملكنا تقرير أمان Kubernetes لعام 2023 وكشف أنه مع الوصول الأولي الناجح، تكون فرص الحركة الجانبية وتصعيد الامتيازات وفيرة.

NamespaceHound هي أداة Python التي يمكنك تشغيلها من CLI. الخيارات المتاحة هي كما يلي:

>python3 nshound.py -h 
usage: nshound.py [-h] [--kubeconfig KUBECONFIG] [-n NAMESPACE | -c] [-o table,json,csv,html] [-v] 
 
options: 
   -h, --help            show this help message and exit 
   --kubeconfig KUBECONFIG 
                         .kubeconfig file containing the cluster access credentials 
   -n NAMESPACE, --namespace NAMESPACE 
                         look for escape paths from this namespace only 
   -c, --controlplane    show issues from kube-system 
   -o table,json,csv,html, --output table,json,csv,html 
                         output format - json, csv or table 
   -v, --verbose         increase output verbosity 

الأمن والخصوصية

لكي يعمل بشكل صحيح، يتطلب NamespaceHound أذونات القراءة على جميع أنواع الموارد. وبطبيعة الحال، تم تعيين مديري المدارس ل admin أو cluster-admin الأدوار، و system:masters ستعمل المجموعات أيضًا.

لا يقوم NamespaceHound بحفظ أي بيانات حول المجموعة المستهدفة محليًا. لا يقوم ببناء الرسوم البيانية ولا يحفظ مادة الكائن. عند كل تشغيل، يقوم NamespaceHound بإنشاء اتصال جديد مع المجموعة وتنفيذ استعلامات خادم API بنفس السعة.

عينة من معابر مساحة الاسم

يمكن لـ NamespaceHound اكتشاف نطاق واسع من معابر مساحة الاسم. تم تضمين مثالين أدناه. (للحصول على القائمة الكاملة التي تضم 22 معبرًا لمساحة الاسم، راجع مستودع جيثب.)

اسم خطورة ثقة وصف طريقة
RBAC_SECRETS_STEALING عالي عالي يتمتع حساب الخدمة من مساحة الاسم هذه بإمكانية الوصول إلى الأسرار الموجودة في مساحة اسم أخرى. الاستعلام عن واجهة برمجة تطبيقات RBAC
RBAC_WORKLOAD_CREATION عالي عالي يمكن لحساب الخدمة من مساحة الاسم هذه إنشاء أحمال عمل في مساحة اسم أخرى. الاستعلام عن واجهة برمجة تطبيقات RBAC

كيف يمكن لمشغلي المجموعة ضمان فعالية حدود أمان مساحة الاسم؟ إن قوة الحدود الأمنية محدودة بأضعف حلقة في تصميمها أو تنفيذها. صمم Wiz إطارًا، خَوخ، لنمذجة وتحسين عزل مستأجر SaaS وPaaS من خلال إدارة سطح الهجوم المكشوف بواسطة واجهات المستخدم. كان إطار العمل يستهدف سابقًا البيئات السحابية العامة، ولكن تم توسيعه ليطبق على Kubernetes multi-tenancy.

تحديد الحدود الأمنية في مجموعة K8s

في مجموعة متعددة المستأجرين، عادةً ما يتم الكشف عن المستأجرين عبر وسيلة الوصول إلى مستوى البيانات، مثل خدمات موازن التحميل أو بوابات التطبيق. ومع ذلك، لا تختلف وظيفة الواجهة عن واجهات السحابة والتطبيقات الأخرى. يمكنك استخدام تقنيات أمان مماثلة لخدمات Kubernetes المكشوفة.

فصل الأجهزة

في بعض المجموعات، يمكن زيادة الفصل على مستوى مساحة الاسم من خلال تقارب العقدة. ستتبع خوارزمية الجدولة نموذج التقارب المصمم لجدولة أعباء العمل الخاصة بمستأجرين معينين فقط لعقدة عامل K8s المخصصة لهم. (بالطبع، سيفرض هذا أداءً مرتفعًا من حيث عدد العقد الإضافية اللازمة لدعم الحمل.)

النقل بالحاويات

يتم تشغيل المثيلات التي تنتمي إلى مستأجرين مختلفين في حاويات منفصلة تعمل على أجهزة مشتركة (أو متداخلة داخل جهاز ظاهري مشترك) عبر المحاكاة الافتراضية على مستوى نظام التشغيل.

تجزئة البيانات

يتم تخزين تكوين مستوى التحكم في ETCD وبالتالي يتم مشاركته بين المستأجرين، حتى لو كان مشفرًا. عادةً ما ترتبط موارد مستوى البيانات بمساحة الاسم؛ ومع ذلك، هناك أنواع معينة من الموارد تكون عالمية وتتطلب مراجعة لكل مورد. يعتبر K8s RBAC دقيقًا بدرجة كافية لضمان الوصول إلى حساب الخدمة لكل اسم مورد.

تجزئة الشبكة

يتم تشغيل المثيلات التي تنتمي إلى مستأجرين مختلفين على أجهزة منفصلة (افتراضية أو فعلية) في نفس الشبكة، والتي يتم تقسيمها إلى شبكات VPN مستأجرة واحدة. يتم تشجيع استخدام سياسات الشبكة بين مساحات الأسماء.

تجزئة الهوية

تجزئة الهوية موجودة بشكل افتراضي. ترتبط حسابات خدمة K8s بمساحة الاسم.

قياس عوامل التصلب في مجموعة K8s

عند قياس فعالية حدود أمان مساحة الاسم، يمكننا استخدام عوامل التعزيز (أو الإنفاذ) الخمسة لإطار عمل PEACH:

تصلب الامتياز

Kubernetes RBAC (التحكم في الوصول على أساس الدور) هو وسيلة لتنظيم الوصول إلى موارد المجموعة بناءً على أدوار المديرين الفرديين داخل المجموعة. يجب اعتبار RBAC بمثابة حدود أمنية قوية فقط في حالة مراعاة الإرشادات التالية:

  • هناك نوعان من الأدوار في K8s RBAC: مستوى مساحة الاسم Role وعلى مستوى الكتلة ClusterRole. يجب أن يتم تعيين مديري المستأجر فقط للأدوار التي لا تعتبر مسؤولين عموميين.

  • من المهم اتباع مبدأ الامتيازات الأقل عند إسناد الأدوار إلى المديرين. قم بتعيين الوصول الفعل الضروري فقط إلى موارد محددة ولا تقم مطلقًا بتعيين * للأفعال أو الموارد.

  • كن حذرًا عند تعيين الامتيازات التي تسمح بوصول المضيف إلى مديري المستأجر (على سبيل المثال، /pod:create). ما لم تكن الكبسولة في وضع الحماية، يكون المضيف وسيطًا مشتركًا بين مساحات الأسماء ويمكن استخدامه للوصول إلى البيانات والأسرار الخاصة بمساحات الأسماء الأخرى.

  • استخدم وحدة التحكم في القبول لفرض سلوكيات خارج الخط، مثل تشغيل البودات ذات الامتيازات، أو بدء تشغيل البودات كجذر، أو بدء البودات باستخدام حساب الخدمة الافتراضي.

تصلب التشفير

تكون بعض موارد Kubernetes ذات نطاق عالمي (خطافات الويب، على سبيل المثال)، وبالتالي يمكن مشاركتها بين المستأجرين. يجب ألا تستخدم البيانات الحساسة أو سير العمل الموارد العالمية. إذا فعلوا ذلك، فمن الأفضل استخدام مصادقة إضافية عبر RBAC إضافي مخصص ClusterRoles.

PersistentVolume و PersistentVolumeClaim هي كائنات K8s المستخدمة بشكل متكرر لإدارة الوصول إلى التخزين المخصص في المجموعة. تقترح وثائق Kubernetes الرسمية بشأن الإيجارات المتعددة تكوين ملف منفصل StorageClass لكل مستأجر واستخدامها لتقوية العزلة. إذا أ StorageClass تمت مشاركته، فيجب عليك تعيين سياسة الاسترداد “حذف” للتأكد من أن أ PersistentVolume لا يمكن إعادة استخدامها عبر مساحات أسماء مختلفة.

إذا كنت تستخدم وحدة تخزين سرية خارجية، فتأكد من عزل الوصول إلى التخزين لكل مستأجر.

تصلب المصادقة

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

تصلب الاتصال

افتراضيًا، يمكن لأي حجرة داخل المجموعة الاتصال بأي حجرة أخرى. يجب حظر الاتصال بين المستأجرين وخروج المستأجر من خلال سياسات شبكة Kubernetes. يُنصح باستخدام تسميات مساحة الاسم لسياسات الشبكة كآلية تصنيف أكثر استقرارًا على تسميات البودات.

بالإضافة إلى تشغيل NamespaceHound من واجهة سطر الأوامر، يمكنك أيضًا الوصول إلى وظائفه من ملف الطب الشرعي قسم كائنات مساحة الاسم Kubernetes في بوابة Wiz. تعرض علامة التبويب “الطب الشرعي” التأثير المحتمل لكائن ما يتم اختراقه. هذا مناسب بشكل خاص لعرض نتائج نوع NamespaceHound:

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

نأمل أن تكون هذه النظرة العامة على NamespaceHound قد أعطتك بعض الأفكار المفيدة حول ممارسات الأمان لمجموعات Kubernetes متعددة المستأجرين. لمزيد من المعلومات حول استراتيجيات الأمان الخاصة بـ Kubernetes، اقرأ عن النقاط الرئيسية التي توصلنا إليها من تقرير Kubernetes Security لعام 2023.

شاركها.
اترك تعليقاً