الانتقال إلى المحتوى
الأدلة

مصادقة الخادم الوسيط الموثوق في OpenClaw

تفويض مصادقة gateway إلى Pomerium أو Caddy أو nginx مع oauth2-proxy أو Traefik، وقواعد وقت التشغيل بترتيب تقييمها، وحمايات loopback والواجهات المحلية، ومنح النطاقات حسب الهوية، والموافقة التلقائية على الأجهزة، وقائمة التحقق الأمنية

مدة القراءة: ⁨8⁩ د

مصادقة الخادم الوسيط الموثوق هي الوضع المناسب عندما يعمل gateway خلف خادم وسيط مدرك للهوية: يصادق الخادم الوسيط على الشخص، ويضيف ترويسة تحمل هويته، ويثق gateway بتلك الترويسة، لكن فقط حين تأتي من الخادم الوسيط. تبدأ الوثائق بتحذير من أن الإعداد الخاطئ يكشف gateway، ومعظم الصفحة قائمة بالفحوص التي تجعل هذه الثقة آمنة. وها هي بالترتيب الذي يقيّمها به gateway.

متى وكيف

  • استخدمه خلف Pomerium، أو Caddy مع OAuth، أو nginx مع oauth2-proxy، أو Traefik مع forward auth، وفي بيئات الحاويات التي يكون فيها الخادم الوسيط المسار الوحيد، أو حين تصطدم المتصفحات بأخطاء عدم التفويض في WebSocket لأنها لا تستطيع تمرير الرموز أثناء المصافحة؛ ولا تستخدمه حين يقتصر دور الخادم الوسيط على إنهاء TLS، أو حين يوجد أي مسار يتجاوز الخادم الوسيط، أو حين لا تكون متأكدًا من أن الخادم الوسيط يزيل ترويسات forwarded، أو للوصول الشخصي لمستخدم واحد حيث يكون tailnet مع loopback أبسط.
  • آلية العمل: يصادق الخادم الوسيط على المستخدم، ويضيف ترويسة هوية مثل ترويسة forwarded-user، ويتحقق gateway من أن الطلب جاء من عنوان خادم وسيط موثوق، ويقرأ الترويسات المطلوبة وهوية المستخدم، ثم يمنح التفويض إذا كانت قائمة السماح للمستخدمين، إن ضبطت، تتضمن هذا المستخدم؛ أما الإعدادات فترتبط بالشبكة المحلية، ولا تدرج إلا عناوين الخادم الوسيط أو نطاقات عناوينه، وتحدد وضع المصادقة، وترويسة المستخدم، وترويسات مطلوبة اختيارية، وقائمة سماح اختيارية للمستخدمين، مع loopback معطّل افتراضيًا والموافقة التلقائية على الأجهزة معطّلة افتراضيًا.
  • قواعد وقت التشغيل بالترتيب: تنسب حركة المرور التي تحمل سمات الخادم الوسيط قبل مصادقة gateway، ويجب أن تأتي من خادم وسيط موثوق مع ترويسات عنوان عميل تشير إلى عميل ليس على loopback، وإلا رفضتها المسارات التي يصادق عليها gateway لغياب نسبتها إلى خادم وسيط؛ ويجب أن يعيد الخادم الوسيط كتابة سلسلة forwarded-for بأمان، ولا تقبل ترويسة العنوان الحقيقي إلا إذا كان خيار الرجوع إليها مفعّلًا؛ وترفض مصادر loopback ما لم يكن خيار التمكين الصريح مضبوطًا على true وكان loopback مدرجًا أيضًا بوصفه خادمًا وسيطًا موثوقًا؛ وترفض المصادر التي تطابق أحد عناوين واجهات المضيف نفسه كحماية من الانتحال، كما يؤدي فشل اكتشاف الواجهات إلى الرفض أيضًا؛ ثم يجب أن تكون الترويسات المطلوبة وترويسة المستخدم موجودة وغير فارغة، وأن تتضمن قائمة السماح للمستخدمين هذا المستخدم.
  • وجود أثر لترويسات forwarded في طلب loopback يستبعده من الرجوع المحلي المباشر إلى كلمة المرور ومن التحقق بهوية الجهاز، مع بقائه فاشلًا في مصادقة الخادم الوسيط الموثوق؛ أما العملاء الداخليون الذين لا يمرون عبر الخادم الوسيط فيستخدمون كلمة مرور gateway، التي يختارها أمر status تلقائيًا من دون تجاوز لعنوان URL؛ وتقبل قائمة الخوادم الوسيطة الموثوقة نطاقات العناوين بصيغتها العادية أو بالصيغة المعيّنة (mapped)، والبادئة المعيّنة التي تغطي كل شيء تظل بحاجة إلى خيار التمكين الصريح لكي يشمل loopback.
لا يمكن لرمز Gateway أن يحل محل مصادقة الخادم الوسيط.

المنح، والموافقة التلقائية، وترويسة النطاقات

تمنح نطاقات الهوية مستخدمين موثقين مختارين نطاقات تقتصر على الجلسة من دون توسيع المنح الخاص بأجهزتهم: المفتاح هو هوية الخادم الوسيط أو اسم الدخول في tailnet، وتطابق عناوين البريد الإلكتروني من دون تمييز بين الأحرف الكبيرة والصغيرة، ويضم المنح إلى النطاقات المصرح بها للجهاز ثم تحده ترويسة نطاقات صريحة، ولا تحصل عليه أبدًا الاتصالات بالرمز أو بكلمة المرور أو من دون مصادقة. أما الموافقة التلقائية على الأجهزة، المعطّلة افتراضيًا، فتستخدم هوية الخادم الوسيط حدًّا للموافقة على أجهزة المشغّل الجديدة، في المتصفح أو الأصلية، وعلى ترقيات النطاقات بالمفتاح نفسه: لا تتأهل إلا اتصالات الخادم الوسيط الموثوق ذات الهوية غير الفارغة التي اجتازت قائمة السماح، ولا تتأهل أبدًا اتصالات دور node ولا ترقيات الأدوار، وتقاطع النطاقات المطلوبة مع القائمة المهيأة (read وwrite وapprovals وquestions إن لم تضبط، ولا توسَّع أبدًا)، وتحد ترويسة نطاقات الخادم الوسيط المنح الدائم أيضًا، وإدراج admin يجعل أي مستخدم للخادم الوسيط قادرًا على الحصول على جهاز بصلاحيات إدارة كاملة، وهو ما يصنفه تدقيق الأمان حرجًا ويحذر منه gateway عند البدء. ولا تستطيع جلسات واجهة التحكم التي لا جهاز لها أن تعلن نطاقاتها بنفسها: تفرَّغ قائمتها ويطبَّق منح الهوية المطابق؛ وإذا ظهر فشل بسبب نطاق مفقود بعد اتصال ناجح فالحل إعادة التحميل كي يقرن المتصفح هوية جهازه. وتعلن ترويسة النطاقات النطاقات عند وجودها، ولا تعلن أيًّا منها إذا كانت موجودة لكن فارغة، وتعود إلى مجموعة المشغّل الافتراضية عند غيابها، بينما تعود مسارات المكونات الإضافية التي تستخدم مصادقة gateway إلى write فقط.

TLS، والرموز المختلطة، والتدقيق

  • أنهِ TLS في موضع واحد واضبط ترويسة النقل الصارم هناك: عند الخادم الوسيط في عمليات النشر المكشوفة على الإنترنت، مع gateway على loopback خلفه، أو على gateway نفسه مع تفعيل TLS وترويسة أمان النقل الصارم عندما يقدّم HTTPS بنفسه؛ ابدأ بمدة صلاحية (max age) قصيرة، ولا ترفعها إلا بعد أن تطمئن، ولا تضف علامة النطاقات الفرعية إلا عندما يكون كل نطاق فرعي جاهزًا، واستغن عن هذه الترويسة في التطوير المقتصر على loopback.
  • عند بدء التشغيل ترفض مصادقة الخادم الوسيط الموثوق إذا كان هناك رمز مشترك مهيأ أيضًا، لأن الرمز سيسمح للمستدعين من المضيف نفسه بالمصادقة عبر مسار مختلف عن الهوية التي تحقق منها الخادم الوسيط؛ أزل الرمز أو غيّر الوضع، وتذكّر أن ترويسات الهوية القادمة من loopback تظل تفشل بالرفض (fail closed)، وأن الرجوع إلى الرمز غير مدعوم عن قصد.
  • يصنّف تدقيق الأمان هذا الوضع حرجًا بحكم التصميم، ويفحص غياب قائمة الخوادم الوسيطة الموثوقة، وغياب ترويسة المستخدم، وخلو قائمة السماح للمستخدمين، وتفعيل خيار loopback الصريح، وتفعيل الموافقة التلقائية على الأجهزة؛ وتضيف قائمة التحقق أن يكون الخادم الوسيط المسار الوحيد، وأن تكون القائمة الموثوقة في حدها الأدنى، وأن يعيد الخادم الوسيط كتابة ترويسات forwarded ويعيد بناء سلسلة forwarded-for، وأن تكون الأصول المسموح بها محددة صراحة لواجهة التحكم التي لا تقتصر على loopback، وأن يبقى أي رجوع إلى كلمة المرور المحلية خاصًا خلف جدار الحماية.

للاطلاع على نموذج النطاقات الذي تغذيه هذه المنح راجع نطاقات المشغّل في OpenClaw، وللبديل الأبسط في الوصول المقتصر على tailnet راجع OpenClaw على Tailscale.

قراءة رموز الرفض

يربط قسم استكشاف الأخطاء كل رفض بسببه: المصدر غير الموثوق يعني أن الطلب لم يأت من عنوان خادم وسيط مدرج، وهو عنوان يتغير عند إعادة تشغيل الحاويات؛ ومصدر loopback يعني خادمًا وسيطًا على المضيف نفسه من دون خيار التمكين الصريح المقصود؛ ومصدر الواجهة المحلية يعني أن عملية على مضيف gateway ترسل ترويسات الهوية مباشرة أو أن الخادم الوسيط يشارك مساحة أسماء الشبكة الخاصة بالمضيف؛ والمستخدم المفقود يعني أن الترويسة غائبة أو أن اسمها خاطئ؛ والمستخدم غير المسموح له يعني أن الحساب مصادق عليه لكنه ليس في قائمة السماح، وتنص الوثائق على عدم إزالة قائمة السماح كحل التفافي؛ والأصل غير المسموح به يعني أن أصل المتصفح لم يجتز فحص واجهة التحكم. أما الرسالة التي تفيد بأن مصادقة الخادم الوسيط مطلوبة فتعني هوية مرفوضة، لا انقطاعًا في الشبكة، والحل هو تسجيل الدخول عند الخادم الوسيط بدلًا من إرسال الترويسات من المتصفح. ويتم الانتقال من المصادقة بالرمز في ست خطوات: هيئ الخادم الوسيط، واختبره بشكل مستقل، وحدّث إعدادات gateway، وأعد التشغيل، واختبر WebSocket من واجهة التحكم، ثم شغّل التدقيق. وللمقارنة مع أنماط الوصول عن بعد الأخرى راجع الوصول عن بعد في OpenClaw، ولتدفق الأجهزة الذي تحل محله الموافقة التلقائية راجع الإقران في OpenClaw.

على Diali

على Diali يتم الوصول إلى gateway كل عميل عبر مدخل المنصة (ingress)، مع إعدادات وقت تشغيل تولَّد من لوحة التحكم وتستبدل مع كل إصدار، لذا فهذا الوضع ليس شيئًا يضطر العميل إلى تجميعه يدويًا. للتعرف على المساعد المستضاف راجع OpenClaw المستضاف على Diali، وللحدود المحيطة بكل محرك راجع الأمان في Diali.

  • لا تثق بالترويسة إلا إذا جاءت من عناوين الخادم الوسيط المدرجة.
  • مصادر loopback والمصادر المطابقة لواجهات المضيف نفسه تفشل بالرفض.
  • ترويسة النطاقات تضيّق؛ ومنح الهوية تضيف، للجلسة فقط.
ابدأ الآن

كفاك قراءة، ابنِ وكيلك الخاص

جهز وكيلًا، واختر قناة، واجعله يعمل داخل التطبيق المفتوح لديك دائمًا.