العودة إلى التحديثات
New releaseAug 12, 2026

multi-juicer v10.3.0

استضافة وإدارة مثيلات متعددة من Juice Shop للتدريبات الأمنية ومسابقات Capture The Flags

مشاركة

MultiJuicer، منصة Juice Shop متعددة المستخدمين

عادةً ما يكون تشغيل CTFs والتدريبات الأمنية باستخدام OWASP Juice Shop أمرًا صعبًا نوعًا ما، فـ Juice Shop ليس مصممًا لاستخدامه من قِبل عدة مستخدمين في آنٍ واحد. تعليم الجميع كيفية تشغيل Juice Shop على أجهزتهم الخاصة أمرٌ يعمل بشكل مقبول، لكنه يستهلك الكثير من الوقت الثمين.

يمنحك MultiJuicer القدرة على تشغيل نسخ منفصلة من Juice Shop لكل مشارك على عنقود kubernetes مركزي، لتنظيم الفعاليات دون الحاجة إلى نسخ Juice Shop محلية.

ما الذي يفعله:

  • ينشئ نسخًا جديدة من Juice Shop ديناميكيًا عند الحاجة
  • يعمل على نطاق واحد، ويأتي مع LoadBalancer يوجّه حركة المرور إلى نسخة Juice Shop الخاصة بالمشارك
  • لوحة صدارة صغيرة أنيقة تعرض تقدّم جميع المشاركين
  • صفحة إدارة عملية لإدارة النسخ
  • نسخ احتياطي وتطبيق تلقائي لتقدّم التحديات في حال إعادة تشغيل حاوية Juice Shop
  • تنظيف النسخ القديمة وغير المستخدمة تلقائيًا

MultiJuicer، مخطط معماري عالي المستوى

للحصول على وصف تفصيلي للمعمارية والمكونات الفردية، راجع توثيق المعمارية.

👉 جديد على MultiJuicer؟ راجع الجولة المرئية لمعرفة كيفية تسجيل المشاركين، وحصولهم على نسخ JuiceShop الخاصة بهم، وكيفية تتبّع النقاط على لوحة الصدارة.

التثبيت

يعمل MultiJuicer على kubernetes، ولتثبيته ستحتاج إلى helm

helm install multi-juicer oci://ghcr.io/juice-shop/multi-juicer/helm/multi-juicer

راجع ملاحظات الإنتاج للاطلاع على قائمة تحقق بالقيم التي ستحتاج على الأرجح إلى تهيئتها قبل استخدام MultiJuicer في فعاليات حقيقية.

لإعداد MultiJuicer مع دعم تحديات JuiceShop v20+ المتعلقة بالذكاء الاصطناعي/النماذج اللغوية الكبيرة (AI/LLM)، راجع دليل تهيئة 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

الأسئلة الشائعة

ما مقدار موارد الحوسبة التي ستتطلبها العنقود؟

للتحوّط، احسب باستخدام:

  • 1GB ذاكرة و1CPU من الحمل الإضافي، لـ MultiJuicer نفسه
  • 384MB و0.1CPU * عدد المشاركين / الفرق، لنسخ JuiceShop الفردية

تعكس الأرقام أعلاه حدود الموارد الافتراضية. يمكن تعديلها، انظر: تخصيص الإعداد

كم عدد المستخدمين الذين يمكن لـ MultiJuicer التعامل معهم؟

لا يوجد حد ثابت حقيقي. (حتى وإن كان بإمكانك تكوين حد 😉) يمكن تكرار موازن التحميل المخصص (LoadBalancer)، الذي تمر عبره كل حركة المرور الخاصة بالنسخ الفردية، بقدر ما تريد. يمكنك أيضًا إرفاق Horizontal Pod Autoscaler لتحجيم موازن التحميل تلقائيًا.

لماذا موازن تحميل مخصص؟

هناك بعض المتطلبات الخاصة التي لم نجد حلها بسهولة باستخدام أي موازن تحميل جاهز:

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

إذا كانت لديك أفكار رائعة حول كيفية التغلب على هذه المشكلات دون موازن تحميل مخصص، فيرجى مراسلتنا، يسعدنا أن نسمع منك!

لماذا نشر kubernetes منفصل لكل فريق؟

هناك أسباب وجيهة جدًا لذلك:

  • القدرة على حذف نسخ فريق ما بشكل منفصل. إن التخفيض الآمن دون إزالة نسخ الفرق النشطة أمر صعب حقًا مع نشر مُحجَّم. يمكنك فقط اختيار الحجم المطلوب وليس أي pods تحتفظ بها وأيها تتخلص منها.
  • ضمان بقاء الـ pods مرتبطة بشكل صحيح بالفرق بعد إعادة إنشاء pod. هذه ليست مشكلة مع النشر المنفصل وهي صعبة حقًا مع النشر المُحجَّم.
  • القدرة على تضمين اسم الفريق في اسم النشر. قد يبدو هذا سببًا سخيفًا لكنه يجعل تصحيح الأخطاء أسهل بكثير، بمجرد استخدام kubectl.

كيف تدير JuiceShop بسهولة باستخدام kubectl؟

يمكنك سرد جميع JuiceShops مع المعلومات ذات الصلة باستخدام ميزة custom-columns في 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، يمكنك الانضمام عبر هذا الرابط

الفئات