
multi-juicer v10.3.0
استضافة وإدارة مثيلات متعددة من Juice Shop للتدريبات الأمنية ومسابقات Capture The Flags
عادةً ما يكون إجراء دورات CTF وتدريبات الأمان باستخدام OWASP Juice Shop أمرًا صعبًا، فـ Juice Shop ببساطة ليس مصممًا للاستخدام من قبل عدة مستخدمين في وقت واحد. توجيه الجميع حول كيفية بدء Juice Shop على أجهزتهم الشخصية يعمل بشكل جيد، لكنه يستهلك الكثير من الوقت الثمين.
يمنحك MultiJuicer القدرة على تشغيل مثيلات منفصلة من Juice Shop لكل مشارك على مجموعة Kubernetes مركزية، لإجراء الفعاليات دون الحاجة إلى مثيلات Juice Shop محلية.
ما يفعله:
- إنشاء مثيلات Juice Shop جديدة ديناميكيًا عند الحاجة
- يعمل على نطاق واحد، مع موازن تحميل (LoadBalancer) يوجه حركة المرور إلى مثيل Juice Shop الخاص بالمشارك
- لوحة متصدرين لطيفة تُظهر تقدم جميع المشاركين
- صفحة إدارة ملائمة لإدارة المثيلات
- نسخ احتياطي وتطبيق تلقائي لتقدم التحديات في حالة إعادة تشغيل حاويات Juice Shop
- تنظيف المثيلات القديمة وغير المستخدمة تلقائيًا
للحصول على وصف تفصيلي للهندسة والمكونات الفردية، راجع توثيق الهندسة المعمارية.
👉 هل أنت جديد في MultiJuicer؟ راجع الدليل المرئي لمعرفة كيفية تسجيل المشاركين، والحصول على مثيلات JuiceShop الخاصة بهم، وكيفية تتبع النتائج على لوحة النتائج.
التثبيت
يعمل MultiJuicer على Kubernetes، ولتثبيته ستحتاج إلى helm
helm install multi-juicer oci://ghcr.io/juice-shop/multi-juicer/helm/multi-juicer
راجع ملاحظات الإنتاج للحصول على قائمة مراجعة بالقيم التي قد تحتاج إلى تكوينها قبل استخدام MultiJuicer في الفعاليات الفعلية.
لإعداد MultiJuicer مع دعم تحديات AI/LLM ذات الصلة في JuiceShop v20+، راجع دليل تكوين AI/LLM
أدلة التثبيت لمزودي السحابة / البيئات المحددة
بشكل عام، يعمل MultiJuicer على أي مجموعة Kubernetes تقريبًا، ولكن لتسهيل الأمر على أي شخص جديد على Kubernetes، لدينا بعض الأدلة حول كيفية إعداد مجموعة Kubernetes مع تثبيت MultiJuicer لبعض مزودي السحابة المحددين.
تخصيص الإعداد
لديك بعض الخيارات حول كيفية إعداد المكدس، مع بعض الخيارات لتخصيص مثيلات JuiceShop حسب رغبتك. يمكنك العثور على قيم التكوين الافتراضية تحت: helm/multi-juicer/values.yaml
قم بتنزيل الملف وحفظه وأخبر helm باستخدام ملف التكوين الخاص بك بدلاً من الافتراضي عن طريق تشغيل:
helm install -f values.yaml multi-juicer ./multi-juicer/helm/multi-juicer/
لتخصيص سمات مثيلات JuiceShop وواجهة MultiJuicer (السمة، الشعار، التحديات المُمكّنة، ...)، راجع دليل تخصيص JuiceShop.
إلغاء التثبيت
helm delete multi-juicer
الأسئلة الشائعة
ما مقدار الموارد الحاسوبية التي سيتطلبها الكتلة؟
للحصول على هامش أمان، احسب بما يلي:
- 1 غيغابايت من الذاكرة و 1 نواة وحدة معالجة مركزية (CPU) overhead، لـ MultiJuicer نفسه
- 300 ميغابايت و 0.2 نواة CPU × عدد المشاركين / الفرق، لمثيلات JuiceShop الفردية
تعكس الأرقام أعلاه حدود الموارد الافتراضية. يمكن تعديل هذه القيم، راجع: تخصيص الإعداد
كم عدد المستخدمين الذين يمكن لـ MultiJuicer التعامل معهم؟
لا يوجد حد ثابت حقيقي. (على الرغم من أنه يمكنك تكوين واحد 😉) يمكن تكرار موازن التحميل المخصص، الذي تمر من خلاله كل حركة المرور للمثيلات الفردية، بقدر ما تريد. يمكنك أيضًا إرفاق Horizontal Pod Autoscaler لتوسيع نطاق موازن التحميل تلقائيًا.
لماذا موازن تحميل مخصص؟
هناك بعض المتطلبات الخاصة التي لم نجد حلاً سهلاً لها مع أي موازن تحميل مبني مسبقًا:
- تقييد عدد المستخدمين في نشر معين لأعضاء فريق معين فقط.
- يجب أن تكون ملفات تعريف الارتباط (cookies) الخاصة بموازن التحميل آمنة وليس من السهل تزييفها للوصول إلى مثيل آخر.
- التعامل مع بدء تشغيل المثيلات الجديدة.
إذا كانت لديك أفكار رائعة حول كيفية التغلب على هذه المشكلات بدون موازن تحميل مخصص، فيرجى كتابة لنا، يسعدنا سماع رأيك!
لماذا نشر Kubernetes منفصل لكل فريق؟
هناك بعض الأسباب الجيدة جدًا لذلك:
- القدرة على حذف مثيلات فريق بشكل منفصل. يصعب القياس لأسفل بأمان، دون إزالة مثيلات الفرق النشطة، مع نشر موسع النطاق. يمكنك فقط اختيار المقياس المطلوب وليس أي البودات (Pods) يجب الاحتفاظ بها وأيها يجب التخلص منه.
- لضمان بقاء البودات مرتبطة بشكل صحيح بالفرق بعد إعادة إنشاء البود. هذه مشكلة غير موجودة مع النشر المنفصل ويصعب حلها مع النشر الموسع النطاق.
- القدرة على تضمين اسم الفريق في اسم النشر. يبدو هذا سببًا سخيفًا لكنه يجعل التصحيح أسهل بكثير، فقط باستخدام
kubectl.
كيفية إدارة JuiceShop بسهولة باستخدام kubectl؟
يمكنك سرد جميع مثيلات JuiceShop مع المعلومات ذات الصلة باستخدام ميزة الأعمدة المخصصة في kubectl.
$ kubectl get -l app.kubernetes.io/name=juice-shop -o custom-columns="TEAM:metadata.labels.team,SOLVED-CHALLENGES:metadata.annotations.multi-juicer\.owasp-juice\.shop/challengesSolved,LAST-REQUEST:metadata.annotations.multi-juicer\.owasp-juice\.shop/lastRequestReadable" deployments
TEAM SOLVED-CHALLENGES LAST-REQUEST
foobar 3 Wed May 4 2042 18:14:22 GMT+0000 (Coordinated Universal Time)
team-42 0 Wed May 4 2042 18:14:30 GMT+0000 (Coordinated Universal Time)
the-empire 0 Wed May 4 2042 18:14:46 GMT+0000 (Coordinated Universal Time)
من أين جاء هذا المشروع
بدأ المشروع في iteratec، وهي شركة تطوير برمجيات ألمانية، لتشغيل تدريبات الأمان الخاصة بها لمطوريها وعملائها. ثم تم فتح المصدر للمشروع في 2019 وتم التبرع به لمنظمة OWASP / مشروع OWASP Juice Shop في 2023.
تحدث معنا!
يمكنك الوصول إلينا في قناة #project-juiceshop في مساحة عمل OWASP Slack. يسعدنا سماع أي ملاحظات أو تقارير استخدام لديك. إذا لم تكن بالفعل في مساحة عمل OWASP Slack، يمكنك الانضمام عبر هذا الرابط.