0003 — عقد cTrader CLI هي HTTP + JWT، بدون SSH/shell
السياق
تنفذ حاويات الاختبار/التشغيل على المضيفين البعيدين. النهج الواضح - SSH ثم تشغيل docker - يعطي التطبيق الرئيسي تنفيذ كود بعيد تعسفي بيانات اعتماد طويلة الأجل على كل عقدة. هذا نطاق انفجار كبير لنظام يقوم بتشغيل cBots غير الموثوقة من المستخدمين.
القرار
كل مضيف بعيد يقوم بتشغيل وكيل HTTP مستقل CtraderCliNode بدون SSH وبدون shell. يستدعي التطبيق الرئيسي الوكيل عبر HTTP؛ كل طلب يحمل HS256 JWT قصير الأجل (5 دقائق، iss=app-main / aud=app-node) موقعة بسر تلك العقدة. الوكيل:
- تشغيل فقط الصور التي تطابق
AllowedImagePrefix(مع حد المسار حتىghcr.io/spotwareلا يمكن أن تطابقghcr.io/spotware-evil/...); - execs docker عبر
ArgumentList- أبداً string shell؛ - هو بدون حالة، البحث عن الحاويات بواسطة تصنيف
app.instance؛ - التسجيل الذاتي والنبض إلى
POST /api/nodes/register؛ يقوم التطبيق الرئيسي بتحديث/إدراجCtraderCliNodeحسب الاسم، لذا تنجو عقدة من تغييرات IP.
النتائج
- رمز طلب مسرب تنتهي صلاحيته في دقائق؛ لا توجد بيانات اعتماد shell دائمة لسرقتها.
- قدرة الوكيل محدودة بـ "تشغيل صورة مسموحة" - لا يمكن تحويله إلى shell بعيد عام.
- هوية العقدة مبنية على الاسم، لذا إعادة توفير عقدة برقم IP جديد لا تيتم العقد تاريخه.