المقدمة
كوبسكيب هو أداة مفتوحة المصدر لكوبرنيتيس تم تطويرها بواسطة أرموسيك تُستخدم لتحليل المخاطر وامتثال الأمان وتصور RBAC وفحص ثغرات الصور. بالإضافة إلى ذلك، يمكن لـ كوبسكيب مسح تصريحات كوبرنيتيس لاكتشاف مشاكل التكوين المحتملة التي تعرض نشراتك لخطر الهجوم. يمكنه أيضًا مسح رسومات Helm واكتشاف انتهاكات RBAC وإجراء حسابات لتقدير المخاطر وعرض اتجاهات المخاطر مع مرور الوقت.
ميزات كوبسكيب:
- اكتشاف أخطاء تكوين كوبرنيتيس وتقديم مساعدة في الإصلاح عبر بوابة أرموسيك السحابية.
- تحليل المخاطر والاتجاهات مع مرور الوقت عبر بوابة أرموسيك السحابية.
- يتضمن العديد من الإطارات لامتثال الأمان، مثل أرموبست، وNSA، وMITRE وممارسات Devops الأفضل.
- دعم إدارة الاستثناءات، مما يتيح لمسؤولي Kubernetes تحديد مستويات المخاطر المقبولة.
- التكامل مع أدوات مختلفة مثل Jenkins وتدفقات Github وPrometheus، إلخ.
- فحص الصور – مسح الصور للثغرات ورؤية وتصنيف وتصفية (أي الثغرة التي يجب إصلاحها أولاً).
- تبسيط تعقيد RBAC من خلال توفير رسم بياني سهل الفهم يظهر تكوين RBAC في عنقودتك.
يمكن تشغيل Kubescape بطرق مختلفة:
- عبر واجهة سطر الأوامر (CLI). هذه الطريقة المفضلة للتشغيل داخل النصوص البرمجية والتشغيلات التلقائية المختلفة، بما في ذلك أنابيب CI/CD. يمكن تحميل النتائج إلى بوابة سحابية Armosec للتحليل.
- ك cronjob داخل عنقود Kubernetes الخاص بك. في هذا الوضع، يراقب Kubescape باستمرار عنقود Kubernetes الخاص بك للتغييرات ويقوم بتحميل نتائج المسح إلى بوابة سحابية Armosec. يعمل هذا الميزة فقط إذا قمت بنشر مكونات العنقود Armo في عنقود DOKS الخاص بك.
- عبر واجهة الويب لـ بوابة سحابية Armosec. يمكنك تشغيل فحص التكوين، فحص الصورة، عرض وتفقد قواعد RBAC، تخصيص الأطر، إلخ. يعمل هذا الميزة فقط إذا قمت بنشر مكونات العنقود Armo في عنقود DOKS الخاص بك.
- داخل بيئة تطوير محرر الكود المرئي (Visual Studio Code). بهذه الطريقة يمكنك اكتشاف المشاكل بسرعة في مراحل التطوير المبكرة.
يستخدم Kubescape أطر مختلفة لاكتشاف التكوينات الخاطئة مثل:
هل Kubescape مجاني؟
نعم، الأدوات والإصدار المجتمعي مجاني دائمًا، باستثناء تنفيذ الخلفية لبوابة السحابة وربما بعض الميزات المتقدمة الأخرى. هناك أيضًا قيود على الحد الأقصى لعدد وحدات العمل التي يمكنك مسحها في كل مجموعة (تصل إلى 10). مدة احتفاظ بيانات تقارير المسح محدودة إلى شهر واحد في بوابة السحابة Armo.
راجع خطط التسعير لمزيد من المعلومات.
هل Kubescape مفتوح المصدر؟
نعم، الأدوات بالتأكيد مفتوحة المصدر. يمكنك زيارة صفحة Armo GitHub الرئيسية للعثور على مزيد من التفاصيل حول تنفيذ كل مكون. لكن تنفيذ خلفية بوابة السحابة ليس مفتوح المصدر.
في هذا الدليل، ستستخدم Kubescape لتحليل المخاطر لسلسلة التوريد الخاصة بتطبيقات Kubernetes الخاصة بك (صور الحاويات، تصريحات YAML لـ Kubernetes). بعد ذلك، ستتعلم كيفية اتخاذ الإجراء المناسب لإصلاح الوضع. وأخيرًا، ستتعلم كيفية دمج Kubescape في خط أنابيب CI/CD لمسح الضعف في مراحل التطوير المبكرة.
جدول المحتويات
- المقدمة
- المتطلبات
- الخطوة 1 – التعرف على واجهة سطر أوامر Kubescape
- الخطوة 2 – التعرف على بوابة سحابة Armosec
- الخطوة 3 – تكوين مسح تلقائي لـ Kubescape لـ DOKS
- الخطوة 4 – استخدام Kubescape لفحص ثغرات تكوين Kubernetes في خط أنابيب CI/CD
- الخطوة 5 – التحقيق في نتائج مسح Kubescape وإصلاح المشاكل المُبَلَّغ عنها
- الخطوة 6 – تشغيل سير عمل CI/CD لـ Kubescape تلقائيًا
- الخطوة 7 – تمكين إشعارات Slack للمراقبة المستمرة
- الاستنتاج
- الموارد الإضافية
المتطلبات المسبقة
لإكمال جميع الخطوات من هذا الدليل، ستحتاج إلى:
- A working
DOKS
cluster runningKubernetes version >=1.21
that you have access to. For additional instructions on configuring a DigitalOcean Kubernetes cluster, see: How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS). - A DigitalOcean Docker Registry. A free plan is enough to complete this tutorial. Also, make sure it is integrated with your DOKS cluster as explained here.
- Kubectl واجهة سطر الأوامر للتفاعل مع
Kubernetes
. اتبع هذه التعليمات للاتصال بمجموعتك معkubectl
وdoctl
. - Helm، لتثبيت Kubescape في مجموعة Kubernetes الخاصة بك.
- Kubescape CLI للتفاعل مع ماسح الثغرات Kubescape.
- A free Armosec Cloud Portal account used to periodically publish scan results for your Kubernetes cluster to a nice dashboard. Also, the Armosec portal web interface helps you with investigations and risk analysis.
- A Slack workspace you own, and a dedicated Slack app to get notified of vulnerability scan issues reported by Kubescape.
الخطوة 1 – التعرف على واجهة سطر الأوامر Kubescape
يمكنك فحص الثغرات يدوياً عبر واجهة سطر الأوامر kubescape
. تم تصميم واجهة سطر الأوامر kubescape للاستخدام في مختلف السكربتات والتلقائيات. مثال عملي لذلك هو في خط أنابيب CI/CD مُنفذ باستخدام أدوات متنوعة مثل Tekton، Jenkins، GitHub Workflows، إلخ.
تم تصميم Kubescape لفحص مجموعة Kubernetes بأكملها من الأساس (أعباء العمل، الحاويات، إلخ). إذا رغبت، يمكنك تقييد الفحوصات إلى مساحة أسماء محددة أيضاً. تشمل الميزات الأخرى فحص الاستضافة (العقد العاملة)، فحص المستودعات المحلية أو عن بُعد (مثل GitHub)، اكتشاف تكوينات خاطئة في تكوينات Kubernetes YAML أو جداول Helm. يمكن اختيار أطر عمل متنوعة عبر أمر framework
، مثل ArmoBest، NSA، MITRE، إلخ.
عند استدعاء واجهة سطر الأوامر kubescape، سيقوم بتنزيل (أو تحديث) قاعدة بيانات الثغرات المعروفة على جهازك المحلي. ثم، سيبدأ عملية الفحص وسيقوم بالإبلاغ عن المشاكل بتنسيق محدد. بشكل افتراضي، سيقوم بطباعة جدول ملخص باستخدام الإخراج القياسي أو الوحدة التحكم. يمكن لـ Kubescape إنشاء تقارير بتنسيقات أخرى أيضاً، مثل JSON، HTML، SARIF، إلخ.
يمكنك اختيار تقديم النتائج إلى بوابة سحابية Armosec عبر العلم --submit
لتخزين النتائج وتصورها لاحقاً.
ملحوظة: ليس من الإلزام تقديم نتائج الفحص إلى بوابة السحابة Armosec. الميزة الكبيرة في استخدام البوابة هي الرؤية لأنها تمنحك وصولًا إلى لوحة تحكم جميلة يمكنك من خلالها التحقق من جميع تقارير الفحص والنقاط الحرجة الكلية. كما أنها تساعدك على المدى الطويل في التحقيقات والتلميحات للتصحيح.
بعض الأمثلة لتجربتها مع واجهة سطر الأوامر Kubescape:
-
مسح كامل نادي Kubernetes وإنشاء تقرير ملخص في وحدة التحكم (المخرجات القياسية):
-
استخدم مساحة أسماء محددة فقط للمسح:
-
استبعد مساحات أسماء محددة من عملية المسح:
-
مسح مساحة أسماء محددة وإرسال النتائج إلى بوابة Armosec السحابية:
-
قم بتنفيذ مسح للعنقود باستخدام إطار عمل محدد (على سبيل المثال NSA):
يمكن لـ Kubescape مسح خوادم عقدة Kubernetes الخاصة بك (أو العقد) لاكتشاف الثغرات في نظام التشغيل أيضًا. لتمكين هذه الميزة ، تحتاج إلى تمرير العلم --enable-host-scan
إلى واجهة سطر الأوامر kubescape. عند تمكين هذا العلم ، يقوم kubescape بنشر sensors
في عنقودك. يتم إنشاء الأجهزة بواسطة Kubernetes DaemonSets التي تنشئ البودات على كل عقدة في عنقودك لمسح الثغرات المعروفة. بعد اكتمال عملية المسح ، يتم إزالة الأجهزة من عنقودك (بما في ذلك الموارد المرتبطة بـ Kubernetes).
واجهة سطر الأوامر Kubescape توفر صفحات مساعدة لجميع الخيارات المتاحة. يمكن استخدام الأمر أدناه لطباعة صفحة المساعدة الرئيسية:
المخرج يبدو مشابهًا ل:
كل أمر (أو فرع) في واجهة سطر الأوامر Kubescape لديه صفحة مساعدة مرتبطة أيضًا يمكن الوصول إليها عبر kubescape [command] --help
.
يرجى زيارة صفحة توثيق واجهة سطر الأوامر Kubescape الرسمية للحصول على المزيد من الأمثلة.
الخطوة 2 – التعرف على بوابة Armosec السحابية
توفر Armosec بوابة سحابية جيدة حيث يمكنك رفع نتائج مسح Kubescape وإجراء تحليل للمخاطر. هذا مفيد جدًا لأنك سترغب في تصور وتفحص كل تقرير مسح، واتخاذ الإجراء المناسب لإصلاح الوضع، ثم إعادة تشغيل المسح مرة أخرى للتحقق من النتائج. من خلال وجود تمثيل بصري جيد لكل تقرير والنقاط الأساسية المرتبطة يساعدك على المدى الطويل في التحقيقات والتكرارات اللازمة لإصلاح المشاكل الأمنية المبلغ عنها.
يمكنك إنشاء حساب مجاني محدود إلى 10 وحدات عمل وشهر واحد من الاحتفاظ بالبيانات والتي يجب أن تكون كافية في معظم الحالات (مثل احتياجات الاختبار أو التطوير). يمكنك قراءة المزيد حول كيفية إنشاء حساب سحابي لـ kubescape
على صفحة الوثائق الرسمية.
بمجرد إنشاء الحساب، يتم إنشاء معرف مستخدم فريد يمكنك استخدامه لرفع نتائج المسح لذلك الحساب المحدد. على سبيل المثال، قد تكون لديك أتمتة معينة مثل خط أنابيب CI/CD حيث تحتاج إلى رفع نتائج المسح، لذا يتعين استخدام معرف المستخدم المرتبط للتمييز بين عدة مستأجرين.
تحليل نقاط الخطر والاتجاهات
لكل تقرير مسح تم تحميله إلى حسابك في سحابة Armosec، يتم إضافة سجل تاريخي جديد يحتوي على قائمة المشاكل التي تم العثور عليها والنقاط الخطر المرتبطة. بهذه الطريقة يمكنك الحصول على الاتجاهات والرسوم البيانية المرتبطة توضح تطور نقاط الخطر مع مرور الوقت. أيضًا، يتم إنشاء قائمة بأهم المشاكل الأمنية أيضًا في لوحة القيادة الرئيسية.
الصورة أدناه توضح هذه الميزات:
فهم قيمة نقاط الخطر في Kubescape
في كل مسح، يتحقق Kubescape من مواردك لاحتمال وجود مخاطر أمنية باستخدام ضوابط داخلية. يُعتبر ضابط Kubescape مفهوم يستخدمه أداة kubescape
للدلالة على الاختبارات المستخدمة تحت الغطاء لفحص جانب معين من عنقودك (أو الموارد التي يتم فحصها). وعلاوة على ذلك، إطار هو مجموعة من الضوابط أو الاختبارات المستخدمة داخليًا لفحص الموارد الخاصة بك للمشاكل. لذلك، اعتمادًا على الإطار الذي تستخدمه، يتم إجراء مجموعة مختلفة من الفحوصات (ومع ذلك، تشترك بعض الاختبارات في بعض الأشياء المشتركة). وأخيرًا، استنادًا إلى العامل الخطر المرتبط بكل اختبار، يتم حساب النقاط النهائية.
النتيجة النهائية هي عدد إيجابي يتراوح من 0 إلى 100%. قيمة أقل تشير إلى أفضل نتيجة، في حين أن قيمة أعلى تشير إلى أسوأها. لذلك، إذا كنت ترغب في التأكد من سلامتك يجب أن تهدف إلى القيمة الأدنى الممكنة. في الممارسة، ينبغي أن يكون مؤشر المخاطر مساويًا أو أقل من 30% نقطة بداية جيدة.
التصحيح المساعد لمشاكل الأمان المبلغ عنها
ميزة أخرى مفيدة تقدمها بوابة السحابة Armosec هي المساعدة في تصحيح مشاكل الأمان. يعني ذلك أنك تتلقى توصيات حول كيفية إصلاح كل مشكلة أمان تم العثور عليها بواسطة ماسح kubescape. هذا مهم للغاية لأنه يبسط العملية ويغلق الدائرة لكل تكرار تحتاج إلى إجرائه لإصلاح كل مشكلة أمان مبلغ عنها.
الصورة أدناه توضح هذه العملية بشكل أفضل:
بالنسبة لكل مشكلة أمان تم الإبلاغ عنها، يتم عرض أيقونة أداة المفك في شكل مفتاح، يمكنك النقر فوقها للحصول على المساعدة في التصحيح:
بعد ذلك، يتم فتح نافذة جديدة، تعطيك تفاصيل حول كل كائن Kubernetes المتأثر، مميزة باللون الأخضر:
يمكنك النقر فوق كل تحكم مثل C-0018
، C-0030
، C-0086
، إلخ والتحقق من المشكلات المميزة. سيتم تقديم اقتراحات حول كيفية إصلاح كل مشكلة أمان. ما تبقى هو اتباع التلميحات وإصلاح كل مشكلة أمان.
تشغيل فحوص العناقيد من واجهة الويب
يوفر بوابة السحابة Armo إمكانية تشغيل فحوص العناقيد من واجهة الويب أيضًا إذا تم نشر مخطط Helm لمكونات سحابة Armo في عنقود DOKS الخاص بك (المناقشة في الخطوة التالية). يمكن تشغيل كل من تكوين وفحص الصورة عبر النقر على زر واحد في البوابة. من أجل عمل هذه الميزة، يتعين عليك الانتظار حتى تنتهي مكونات سحابة Armo من مسح عنقودك في الخلفية، وتحميل النتائج.
يتم تشغيل فحص التكوين عن طريق الانتقال إلى صفحة فحص التكوين والنقر على زر الفحص. توضح الصورة أدناه كيفية إتمام هذه المهمة:
يمكنك أيضًا تعيين أو تعديل الجدول الزمني الحالي للفحص التلقائي إذا كنت ترغب في ذلك عن طريق النقر على زر الجدول الزمني في النافذة المنبثقة التي تظهر بعد النقر على زر الفحص. باستخدام نفس النافذة، يمكنك تحديد الأطر الأساسية التي تريد استخدامها للفحص. توضح الصورة أدناه كيفية إتمام المهام:
الخطوة 3 – تكوين فحوص Kubescape التلقائية لـ DOKS
يمكن تكوين Kubescape لفحص كامل عقدة Kubernetes الخاصة بك تلقائيًا في فترة زمنية محددة، أو في كل مرة يتم فيها نشر صورة تطبيق جديدة. يجب عليك نشر مكونات مجموعة بيانات Armo في عقدة Kubernetes الخاصة بك باستخدام Helm لتحقيق هذه الوظيفة. يُطلب حساب بوابة سحابة Armosec أيضًا لتحميل وتفقد النتائج.
تثبيت مخطط Helm Armo يقوم بتثبيت مهام cron التي تشغّل فحص الثغرات لكل من عقدة Kubernetes بالكامل وصور الحاوية. يمكن تكوين فاصل زمني لكل مهمة cron في ملف قيم Helm.
توفير مكونات مجموعة بيانات Armo لـ DOKS
الخطوات لنشر kubescape
في عقدة Kubernetes الخاصة بك باستخدام Helm:
- أضف مستودع
Helm
وقم بإدراجcharts
المتوفرة:
يبدو الإخراج مشابهًا لما يلي:
ملاحظة: المخطط الذي تهمك هو armo/armo-cluster-components
، الذي سيقوم بتثبيت مكونات Armo في عقدة Kubernetes الخاصة بك. يُرجى زيارة صفحة مستودع armo-helm لمزيد من التفاصيل حول هذا المخطط.
- احصل على معرّف المستخدم الخاص بحسابك في Armo باستخدام سطر الأوامر CLI لـ kubescape (مطلوب في الخطوة التالية):
المخرجات تبدو مشابهة ل:
ملاحظة:
إذا لم تستخدم CLI لـ kubescape
لإرسال نتائج المسح إلى بوابة سحابية Armosec من قبل، فلن يعمل الأمر أعلاه. في هذه الحالة، تحتاج إلى تسجيل الدخول إلى البوابة والحصول على معرّف الحساب من هناك كما هو موضح هنا.
- قم بتثبيت مكونات عملية الكتلة لـ Armo Kubescape باستخدام
Helm
– سيتم إنشاء مساحة أسماءarmo-system
مخصصة أيضًا (تأكد من استبدال عناصر البيانات المتغيرة<>
وفقًا لذلك):
–create-namespace \
ملاحظة:
يتم استخدام نسخة محددة لرسم البيانات الرئيسية لـ Helm. في هذه الحالة، تم اختيار 1.7.15
، الذي يتوافق مع إصدار 1.7.15
من مكونات عملية الكتلة لـ Armo (انظر إلى الإخراج من الخطوة 1
). من الجيد عمومًا تثبيت الإصدار على نسخة محددة. يساعد هذا في الحصول على نتائج متوقعة، ويسمح بالتحكم في الإصدار عبر Git
.
الآن تحقق مما إذا كانت جميع عمليات نشر مكونات عملية الكتلة لـ Armo قيد التشغيل:
المخرجات تبدو مشابهة ل:
يجب أن تكون جميع عمليات نشر مكونات عملية الكتلة لـ Armo قيد التشغيل.
- وأخيرًا، بعد بضع دقائق، يجب أن تتمكن من رؤية تقارير مسح الكتلة الخاصة بك المتاحة في بوابة السحابة، مثل:
- نتائج فحص التكوين:
- نتائج فحص الصورة:
نتائج مصور RBAC:
لمزيد من المعلومات، يرجى زيارة صفحة فحص ثغرات العنقود من الوثائق الرسمية.
تعديل قيم Helm لمخطط مكونات عنقود Armo
يمكنك تغيير سلوك مخطط مكونات عنقود Armo عن طريق تحرير ملف قيم Helm المقدم في هذا الدليل.
- يمكن تغيير الإعدادات التالية:
- فواصل المسح عبر قيم
armoScanScheduler
وarmoKubescapeScanScheduler
.
مشغل مسح صورة جديدة عبر قيمة triggerNewImageScan
.
القائمة الكاملة للقيم التي يمكن تخصيصها حسب احتياجاتك متوفرة في ملف قيم مخطط Helm الرسمي.
لتطبيق التغييرات، تحتاج إلى ترقية إصدار مخطط Helm الحالي عبر (تأكد من استبدال عناصر الـ <>
بشكل مناسب):
الخطوة 4 – استخدام Kubescape لفحص الثغرات في تكوين Kubernetes في خط أنابيب CI/CD
كيف يمكنك الاستفادة من تضمين أداة فحص الامتثال الأمني في خط أنابيب CI/CD الخاص بك وتجنب الحالات غير المريحة في بيئة الإنتاج؟
يبدأ كل شيء على مستوى الأساس، حيث يبدأ تطوير البرمجيات. بشكل عام، سترغب في استخدام بيئة مخصصة لكل مرحلة. لذا، في المراحل المبكرة من التطوير عندما تتغير رموز التطبيق بشكل متكرر جدًا، يجب عليك استخدام بيئة تطوير مخصصة (تسمى بشكل عام بالبيئة السفلية). ثم، يتم تحسين التطبيق أكثر وأكثر في بيئة ضمان الجودة، حيث يقوم فرق ضمان الجودة بإجراء الاختبارات اليدوية و/أو الآلية. بعد ذلك، إذا حصل التطبيق على موافقة فريق ضمان الجودة، يتم الترقية إلى البيئات العليا، مثل المرحلة النهائية، وأخيرًا إلى الإنتاج. في هذه العملية، حيث يتم ترقية التطبيق من بيئة إلى أخرى، يتم تشغيل خط أنابيب مخصص، الذي يفحص بشكل مستمر معلمات التطبيق ويحسب درجة المخاطر الأمنية. إذا لم تلبي الدرجة معيارًا محددًا، فإن الخط أنابيب يفشل على الفور ويتم إيقاف ترقية معلمات التطبيق إلى الإنتاج في المراحل الأولى.
لذلك، يعمل أداة فحص الأمان (مثل kubescape) كحارس، ممنعًا المعلمات غير المرغوب فيها في بيئة الإنتاج الخاصة بك من المراحل الأولى للتطوير. بنفس الطريقة، تستخدم خطوط الأنابيب في البيئات العليا أداة kubescape
للسماح أو منع معلمات التطبيق من دخول المرحلة النهائية للإنتاج.
تنفيذ سير العمل CI/CD في GitHub Actions
في هذه الخطوة، ستتعلم كيفية إنشاء واختبار أنبوب CI/CD عيني مع فحص الضعف المتكامل عبر سير عمل GitHub. لتعلم أساسيات استخدام إجراءات Github مع Kubernetes DigitalOcean، راجع هذا ال دليل.
يقوم الأنبوب المقدم في القسم التالي ببناء ونشر التطبيق game-2048-example من مستودع DigitalOcean kubernetes-sample-apps.
- على مستوى عالٍ، يتكون سير العمل CI/CD المثالي المقدم في مستودع Kubernetes-sample-apps من مراحل الاتيه:
- مرحلة بناء واختبار التطبيق – تبني فنيات التطبيق الرئيسية وتشغل الاختبارات التلقائية.
- مرحلة فحص Kubescape – تقوم بفحص الضعف المعروفة في ملفات YAML لـ Kubernetes المرتبطة بالتطبيق. يعمل كبوابة، والحالة النهائية للأنبوب (نجاح/فشل) تعتمد على هذه الخطوة. في حالة الفشل، يتم إرسال إشعار عبر Slack أيضًا.
- مرحلة بناء ودفع صورة التطبيق – تبني وتسمي صورة التطبيق باستخدام أحدث معرف git commit SHA. ثم، يتم دفع الصورة إلى DOCR.
مرحلة نشر التطبيق – تنشر التطبيق إلى Kubernetes (DOKS).
الرسم البياني أدناه يوضح كل وظيفة من الأنبوب والخطوات المرتبطة بها بالإجراءات (تُظهر الإعدادات ذات الصلة فقط):
- ملاحظة:
- في حالة المشاريع المعتمدة على
kustomize
، من الأفضل أن يتم عرض الملف النهائي للتكوين عبر أمرkubectl kustomize </path/to/kustomization_/file>
من أجل التقاط وفحص كل شيء (بما في ذلك الموارد البعيدة). من ناحية أخرى، قد يكون من الصعب تحديد أي مورد Kubernetes يجب إصلاحه. يرجع ذلك إلى أن الملف النهائي للتكوين يتألف من جميع الموارد التي يجب تطبيقها. هذه هي طريقة عمل Kustomize – يقوم بجمع جميع شظايا التكوين من كل تراكب وتطبيقها فوق القالب لبناء التركيبة النهائية.
يمكنك أيضًا إخبار Kubescape
بفحص المجلد بأكمله حيث تحتفظ بتكويناتك kustomize
(الدليل الحالي يعتمد على هذا النهج). بهذه الطريقة، من الأسهل تحديد المورد الذي يجب تصحيحه في مستودعك. الموارد البعيدة المستخدمة بواسطة kustomize يجب تصحيحها في المصدر. أيضًا، لا تتم التقاط الأسرار و ConfigMaps Kubernetes الناتجة عن طريق kustomize
.
كيف تفشل خط الأنابيب إذا لم يتم تحقيق مستوى معيار الأمان المعين؟
يوفر Kubescape CLI علمًا يسمى --fail-threshold
لهذا الغرض. يتمثل هذا العلم في النقطة التي ترتبط بمجموع درجة المخاطر بعد كل فحص. يمكنك إخفاق أو تمرير خط الأنابيب استنادًا إلى قيمة العتبة وإيقاف نشر التطبيق إذا لم تتم الشروط.
توضح الصورة أدناه السير لسير العمل CI/CD المثالي المستخدم في هذا الدليل:
- يرجى اتباع الخطوات التالية لإنشاء واختبار سير عمل CI/CD لـ
kubescape
المقدم في مستودع GitHub kubernetes-sample-apps: - قم بعمل Fork لمستودع GitHub kubernetes-sample-apps.
SLACK_WEBHOOK_URL
– يحمل عنوان URL لـ Webhook الوارد الخاص بـ Slack المستخدم لإشعارات فحص kubescape.- انتقل إلى علامة التبويب الإجراءات للنسخة المتفرعة من مستودعك وحدد سير العمل مثال CI/CD على 2048 لعبة Kubescape:
A new entry should appear in below list after clicking the Run Workflow green button. Select the running workflow to observe pipeline progress:
انقر فوق زر تشغيل سير العمل واترك القيم الافتراضية:
سيفشل الأنبوب ويتوقف عند تشغيل الوظيفة kubescape-nsa-security-check. من المتوقع ذلك لأن القيمة الافتراضية لعتبة النقاط للمخاطر العامة 30
أقل من القيمة المطلوبة. يجب أن تتلقى أيضًا إشعارًا عبر Slack بتفاصيل حول تشغيل سير العمل:
في الخطوة التالية، ستتعلم كيفية التحقيق في تقرير فحص kubescape
لإصلاح المشاكل، وتقليل درجة المخاطر، واجتياز الخط الناقل.
الخطوة 5 – التحقيق في نتائج فحص Kubescape وإصلاح المشاكل المبلغ عنها
كلما لم يتم تحقيق الحد الأدنى لقيمة درجة المخاطر، ستفشل سير عمل game-2048 GitHub ويتم إرسال إشعار عبر سلاك مع تفاصيل إضافية.
يقوم سير عمل game-2048 بفحص أمان واحد (فحص صورة محلية غير مدعوم) – فحوصات تكوين Kubernetes المضبوطة. يتم استخدام العملية kubescape-nsa-security-check لهذا الغرض. الأمر المعادل kubescape
المستخدم هو – kubescape scan framework nsa /path/to/project/kubernetes/manifests
.
يظهر المقتطف أدناه الخطط الرئيسية لعملية kubescape-nsa-security-check:
–submit –account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
التكوين أعلاه يُخبر واجهة سطر الأوامر لـ kubescape بالبدء في فحص جديد لجميع التصريحات Kubernetes الموجودة في الدليل kustomize/
باستخدام إطار NSA. كما يُحدد مستوى العتبة المستخدم عبر العلم -t، وتقديم النتائج النهائية إلى بوابة سحابة Armo (العلم –submit بالتزامن مع –acount).
بالتالي، خفض قيمة درجة المخاطر واجتياز سير العمل يتضمن التحقيق في وإصلاح المشكلات التي أُبلغ عنها بواسطة الوظيفة kubescape-nsa-security-check. بعد ذلك، ستتعلم كيفية التعامل مع المشكلات الأمنية التي تم الإبلاغ عنها من خلال هذه الوظيفة.
A new browser window opens showing in detail each control and description. You will also be presented with required actions to remediate the issue (highlighted in green color):
لفحص تقرير الحالة، يمكنك النقر على رابط نتائج فحص kubescape من الإشعار الذي تلقيته عبر Slack. ثم، انقر على زر الفحص REPOSITORIES SCAN من القائمة اليسرى في بوابة سحابة Armo. الآن، انقر فوق الإدخال kubernetes-sample-apps من القائمة:
بعد جمع جميع المعلومات من تقرير الفحص، يمكنك المضي قدمًا وتحرير ملف deployment.yaml من مستودعك (الموجود في الدليل game-2048-example/kustomize/resources
). تم تطبيق التصحيحات بالفعل، تحتاج فقط إلى فك تعليق السطور الأخيرة من الملف. يجب أن يبدو الملف deployment.yaml
النهائي على النحو التالي:
# استبدل العلامات `<>` بمعلومات سجل Docker الخاص بك
- ملاحظة:
تم حذف الاقتراحات C-0055 في هذا المثال للبساطة. يمكنك قراءة المزيد حول وضع الحوسبة الآمن في Kubernetes هنا. - ما الذي تغير؟ تم تطبيق الإصلاحات الأمنية التالية:
readOnlyRootFilesystem
– يشغل صورة الحاوية بنظام قراءة فقط (لا يمكن تعديل الملفات بواسطةkubectl exec
في الحاوية).runAsNonRoot
– يعمل كمستخدم غير جذري كما هو محدد بواسطة التوجيه USER من مشروع game-2048 Dockerfile.
allowPrivilegeEscalation
– تعيين allowPrivilegeEscalation إلى false يضمن أن لا يمكن لأي عملية فرعية للحاوية كسب المزيد من الامتيازات من والديها.
capabilities.drop
– لجعل الحاويات أكثر أمانًا، يجب أن توفر الحاويات أقل قدر ممكن من الامتيازات التي تحتاج إليها للتشغيل. في الممارسة، تقوم بإسقاط كل شيء بشكل افتراضي، ثم تضيف الامتيازات المطلوبة خطوة بخطوة. يمكنك قراءة المزيد حول أمان الحاويات في هذا المقال الذي كتبته Armosec.
A few final checks can be performed as well on the Kubernetes side to verify if the reported issues were fixed:
- أخيرًا، قم بتأكيد التغييرات لملف deployment.yaml وقم بدفعها إلى الفرع الرئيسي. بعد تشغيل سير العمل يدويًا يجب أن يكتمل بنجاح هذه المرة:
- تحقق مما إذا كان نشر لعبة 2048 لديه نظام ملفات للقراءة فقط (غير قابل للتغيير) عن طريق كتابة ملف التطبيق index.html:
تحقق مما إذا كان الحاوية تعمل كمستخدم غير جذر (يجب أن يطبع رقمًا صحيحًا مختلفًا عن الصفر – على سبيل المثال، 1000
):
تحقق مما إذا كانت الحاوية تعمل كمستخدم غير جذر (يجب أن يطبع رقمًا صحيحًا مختلفًا عن الصفر – على سبيل المثال، 1000
):
إذا مرت جميع الفحوصات، فقد قمت بتطبيق التوصيات الأمنية المطلوبة بنجاح.
هناك حالات عندما لا ترغب في أن يتأثر درجة المخاطر النهائية ببعض المشاكل المُبلَّغ عنها والتي يعتبر فريقك أنها آمنة لتجاهلها. يقدم Kubescape ميزة مدمجة لإدارة الاستثناءات والتغلب على هذا الوضع.
A more efficient approach is where you integrate vulnerability scan tools directly in your favorite IDE (or Integrated Development Environment). This way, you can detect and fix security issues ahead of time in the software development cycle.
يمكنك قراءة المزيد عن هذه الميزة هنا.
- Kubescape لبيئات التطوير المتكاملة
- يقدم Kubescape دعمًا لتكامل بيئة التطوير المتكاملة عبر الامتدادات التالية:
تساعد الإضافات المذكورة أعلاه في اكتشاف وإصلاح المشاكل في مراحل مبكرة من عملية التطوير، مما يقضي على الإحباط والتكاليف والثغرات الأمنية في أنظمة الإنتاج. كما أنها تساعد في تقليل التكرار وتوفير جهد بشري في المدى الطويل. على سبيل المثال، عند كل إبلاغ عن مشكلة أمنية من قبل أتمتة CI/CD الخاصة بك، ستحتاج إلى العودة وإصلاح المشكلة في الشفرة الخاصة بك، وتأكيد التغييرات، وانتظار أتمتة CI/CD مرة أخرى، ثم تكرار العملية في حالة الفشل.
يمكنك قراءة المزيد حول هذه الميزات من خلال التنقل إلى صفحة توثيق Kubescape، ثم البحث في قسم التكاملات.
الخطوة 6 – تشغيل سير عمل Kubescape CI/CD تلقائيًا
يمكنك ضبط سير العمل للتشغيل تلقائيًا عند كل إرسال أو طلب سحب PR ضد الفرع الرئيسي عن طريق إلغاء تعليق الأسطر التالية في أعلى ملف game-2048-kubescape.yaml:
بعد تعديل الملف، قم بتنفيذ التغييرات على الفرع الرئيسي الخاص بك، ويجب أن تكون جاهزًا للمتابعة.
الخطوة 7 – تمكين إشعارات سليك للرصد المستمر
الأتمتة لفحص الضعف التي قمت بتنفيذها حتى الآن نقطة بداية جيدة ولكنها ليست مثالية. لماذا؟
مشكلة واحدة مع النهج الحالي هي أنك لا تعرف أبدًا متى يتم الإبلاغ عن مشاكل جديدة بالنسبة للأصول التي نشرتها بالفعل في بيئاتك. بعبارة أخرى، قمت بتقييم مخاطر الأمان واتخذت التدابير لإصلاح المشاكل في نقطة زمنية محددة واحدة – عند تنفيذ أتمتة CI/CD الخاصة بك.
لكن ماذا لو تم الإبلاغ عن مشاكل جديدة في غضون ذلك الوقت، وكان تطبيقك غير آمن مرة أخرى؟
ميزة الرصد في Kubescape تساعدك على التعامل مع الثغرات الجديدة، التي يتم الإبلاغ عنها باستمرار. عند الجمع بينها مع التكامل مع سليك، يمكنك اتخاذ إجراءات فورية لإصلاح المشاكل التي تم الكشف عنها حديثًا والتي قد تؤثر على تطبيقك في بيئة الإنتاج.
- تدعم بوابة Armo السحابية التكامل مع سليك لإرسال تنبيهات فورية بعد كل مسح للعنقود. يتطلب هذا الميزة تثبيت مخطط Helm الخاص بمكونات سحابة Armo في عنقود DOKS الخاص بك كما هو موضح في الخطوة 3 – تكوين مسحات Kubescape التلقائية لـ DOKS.
- من خلال تمكين تنبيهات Slack، ستتلقى إشعارات مهمة حول الثغرات المكتشفة في عنقود DOKS الخاص بك، مثل:
- ثغرات عقد العمل (مستوى نظام التشغيل).
ثغرات صور الحاويات.
- إعدادات Kubernetes المخطئة لمختلف الموارد مثل النشر، القرون، إلخ.
- أولاً، تحتاج إلى إنشاء تطبيق Slack. ثم، تحتاج إلى منح الأذونات التالية لروبوت Slack الخاص بك في صفحة OAuth & Permissions:
channels:join
– الانضمام إلى القنوات العامة في مساحة العمل.channels:read
– عرض المعلومات الأساسية حول القنوات العامة في مساحة العمل.groups:read
– عرض المعلومات الأساسية حول القنوات الخاصة التي تمت إضافة تطبيق Slack الخاص بك إليها.chat:write
– إرسال رسائل كـ @< اسم تطبيقك على Slack >.
im:read
– عرض المعلومات الأساسية حول الرسائل المباشرة التي تمت إضافة تطبيق Slack الخاص بك إليها.
mpim:read
– عرض المعلومات الأساسية حول رسائل المجموعة المباشرة التي تمت إضافة تطبيق Slack الخاص بك إليها.
بعد ذلك، انتقل إلى صفحة الإعدادات في حسابك على بوابة السحابة Armo (أيقونة التروس في الزاوية العلوية اليمنى). ثم، حدد التكاملات، ثم Slack.
الآن، قم بلصق رمز مصادقة الروبوت الخاص بك في صفحة OAuth & Permissions من صفحة تطبيق Slack الخاص بك في حقل الإدخال أدخل الرمز. وأخيرًا، حدد كيفية الحصول على الإخطارات وقناة Slack التي يجب إرسال التنبيهات إليها. انقر فوق الزر تعيين الإخطارات وستكون جاهزًا. يوضح الصورة أدناه التفاصيل:
بعد تكوين التكامل مع Slack، يجب أن تتلقى إشعارات دورية بعد كل فحص للمجموعة على القناة المخصصة:
إذا تلقيت إشعارات مشابهة لما تم ذكره أعلاه، فقد قمت بتكوين التكامل مع Slack بنجاح.
في هذا الدليل، تعلمت كيفية استخدام أحد أدوات فحص الثغرات في Kubernetes الأكثر شهرة – Kubescape. كما تعلمت كيفية أداء فحص المجموعة وفحص مستودع (ملفات YAML) باستخدام واجهة سطر الأوامر لـ Kubescape. بعد ذلك، تعلمت كيفية دمج أداة فحص الثغرات في خط أنابيب CI/CD التقليدي المنفذ باستخدام سير العمل في GitHub.
وأخيرًا، تعلمت كيفية التحقيق في تقارير فحص الثغرات، وتطبيق الإصلاحات لإصلاح الوضع، وتقليل درجة المخاطر إلى الحد الأدنى من خلال مثال عملي – تطبيق game-2048 من مستودع kubernetes-sample-apps.
- تعرف على المزيد
- يمكنك تعلم المزيد من خلال قراءة المصادر الإضافية التالية:
- استخدام أداة فحص الثغرات Snyk
- أفضل الممارسات الأمنية لـ Kubernetes من قبل Armo
- اكتشاف مشاكل الأمان مسبقًا بواسطة Armosec
- تأمين نشرات Kubernetes الخاصة بك بواسطة Armosec
- تعرف على المزيد عن ماسحات المضيف Armosec
Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool