
مدقق أمني آلي لمجموعات Kubernetes مع شبكة خدمات Istio، يفرض أفضل الممارسات عبر سياسات OPA ويولد تقارير تصحيح للتكوينات الخاطئة.
عزز أمان شبكة الخدمات الخاصة بـ Kubernetes !!
mesh-kridik هي أداة مفتوحة المصدر للتحقق الأمني تقوم بإجراء فحوصات أمنية متنوعة على مجموعة Kubernetes مع شبكة خدمات istio وتُخرج تقريراً أمنياً.
اختبارات الفحوصات الأمنية هي التنفيذ الكامل لـ أفضل ممارسات أمان istio
يتم إجراء الفحوصات الأمنية على مجموعة Kubernetes مع شبكة خدمات istio ويتم الاستفادة من OPA (وكيل سياسة مفتوح) لفرض القواعد الأمنية، ويتضمن تقرير التدقيق الناتج: السبب الجذري للمشكلة الأمنية والإصلاح المقترح للمشكلة الأمنية.

git clone https://github.com/chen-keinan/mesh-kridik
cd mesh-kridik
make build
تنفيذ Mesh-Kridik بدون أي علامات، ينفذ جميع الاختبارات
./mesh-kridik
تنفيذ mesh-kridik مع علامات، ينفذ الاختبارات عند الطلب
Usage: mesh-kridik [--version] [--help] <command> [<args>]
Available commands are:
-r , --report : run security checks and generate remediation report
-i , --include: execute only specific security check, example -i=1.1
-e , --exclude: ignore specific security check, example -e=1.1,2.0
تنفيذ الاختبارات وإنشاء تقرير للاختبارات الفاشلة وإصلاحاتها
./mesh-kridik -r
تعرّض Kube-kridik خطافاً للإضافات المخصصة مثال :
go build -buildmode=plugin -o=~/<plugin folder>/<plugin>.so ~/<plugin folder>/<plugin>.go
cp ~/<plugin folder>/<plugin>.so ~/.kube-kridik/plugins/compile/<plugin>.so
تدعم Kube-kridik هذه المواصفات ويمكن توسيعها بسهولة:
يمكن توسيع هذه المواصفات بسهولة عن طريق تعديل ملفات المواصفات في مجلد ~/.mesh-kridik/security/mesh/istio
| الاسم | الوصف | التأثير |
|---|---|---|
| Mutual TLS | يتم تكوين وكلاء Istio Mutual TLS في الوضع المتسامح افتراضياً | سيقبل الوكلاء كلاً من Mutual TLS وحركة المرور النصية العادية |
| أنماط سياسة الترخيص الأكثر أماناً في Istio | استخدم أنماط ALLOW-with-positive-matching أو DENY-with-negative-match | أنماط سياسة الترخيص هذه أكثر أماناً لأن أسوأ نتيجة في حالة عدم تطابق السياسة هي رفض 403 غير متوقع بدلاً من تجاوز سياسة الترخيص. |
| تطبيع المسار في سياسة الترخيص | نقطة إنفاذ سياسات الترخيص هي وكيل Envoy بدلاً من نقطة الوصول المعتادة للمورد في التطبيق الخلفي | يمكن أن يؤدي عدم التطابق إما إلى رفض غير متوقع أو تجاوز السياسة |
| إنشاء TLS لحركة المرور الصادرة | استخدام DestinationRule على ServiceEntry لحركة المرور الصادرة | عدم استخدام إنشاء TLS لحركة المرور الصادرة إلى خدمة خارجية سيؤدي إلى إرسالها بنص عادي |
| اكتشاف البروتوكول | قم بتعريف بروتوكول الخدمة بشكل صريح | قد يؤدي الاكتشاف الخاطئ إلى سلوك غير متوقع لحركة المرور |
| دعم CNI | التقاط حركة المرور الشفاف في Istio | لن يتم التقاط كافة حركة مرور الشبكة |
| المضيفات الواسعة بشكل مفرط | تجنب إعدادات المضيف الواسعة بشكل مفرط في Gateway | قد يؤدي إلى تعرض محتمل لنطاقات غير متوقعة |
| تقييد صلاحيات إنشاء Gateway | تقييد إنشاء موارد Gateway على مسؤولي المجموعة الموثوقين | قد يؤدي إلى إنشاء Gateway بواسطة مستخدمين غير موثوقين |
| تكوين حد للاتصالات الواردة (downstream) | قم بتحديث global_downstream_max_connections في خريطة الإعدادات وفقاً لعدد الاتصالات المتزامنة التي تحتاجها مثيلات البوابة الفردية في نشرك. بمجرد الوصول إلى الحد، سيبدأ Envoy في رفض اتصالات TCP | عدم وجود حد لعدد الاتصالات الواردة يمكن أن يستغله جهة ضارة |
| تكوين رموز حسابات الخدمة من طرف ثالث | يوصى بتكوين رموز من طرف ثالث لأن خصائص الرمز من الطرف الأول أقل أماناً | خصائص الرمز من الطرف الأول أقل أماناً وقد تسبب اختراقاً للمصادقة |
| مستوى التحكم (Control Plane) | يكشف Istiod عن عدة منافذ نص عادي غير مصادق عليها افتراضياً | يكشف عن منفذ خدمة XDS 15010 ومنفذ التصحيح 8080 عبر نص عادي غير مصادق عليه |
| مستوى البيانات (Data Plane) | يكشف الوكيل عن مجموعة من المنافذ | التطبيقات التي تعمل في نفس pod مع الوكيل لديها وصول؛ لا يوجد حد للثقة بين sidecar والتطبيق |
| فهم قيود التقاط حركة المرور | تأمين حركة المرور الصادرة عن طريق تعيين meshConfig.outboundTrafficPolicy.mode | لن يتم التحكم في الوصول إلى الخدمات الخارجية |