Gateway

نطاقات المشغّل

تحدد نطاقات المشغّل ما يمكن لعميل Gateway فعله بعد المصادقة. وهي آلية حماية لمستوى التحكم داخل نطاق مشغّل Gateway واحد موثوق، وليست عزلاً عدائياً متعدد المستأجرين. ولتحقيق فصل قوي بين الأشخاص أو الفرق أو الأجهزة، شغّل Gateways منفصلة تحت مستخدمي نظام تشغيل أو مضيفين منفصلين.

ذو صلة: الأمان، بروتوكول Gateway، إقران Gateway، CLI للأجهزة.

الأدوار

يتصل كل عميل WebSocket في Gateway بدور واحد:

  • operator: عملاء مستوى التحكم مثل CLI وواجهة التحكم والأتمتة وعمليات المساعدة الموثوقة.
  • node: مضيفو القدرات (macOS وiOS وAndroid والأنظمة بلا واجهة رسومية) الذين يتيحون الأوامر عبر node.invoke.

تتطلب أساليب RPC الخاصة بالمشغّل الدور operator؛ وتتطلب الأساليب الصادرة من Node الدور node.

مستويات النطاق

النطاق المعنى
operator.read الحالة والقوائم والفهرس والسجلات وقراءة الجلسات وغيرها من الاستدعاءات غير المعدِّلة للقراءة فقط.
operator.write إجراءات المشغّل المعدِّلة: إرسال الرسائل واستدعاء الأدوات وتحديث إعدادات التحدث/الصوت وترحيل أوامر Node. ويستوفي أيضاً operator.read.
operator.admin وصول إداري. يستوفي كل نطاقات operator.*. وهو مطلوب لتعديل الإعدادات والتحديثات والخطافات الأصلية ومساحات الأسماء المحجوزة والموافقات عالية المخاطر.
operator.pairing إدارة إقران الأجهزة وعُقد Node: العرض والموافقة والرفض والإزالة والتدوير والإبطال.
operator.approvals واجهات API للموافقة على التنفيذ والـ Plugin.
operator.talk.secrets قراءة إعدادات التحدث مع تضمين الأسرار.

تتطلب نطاقات operator.* المستقبلية غير المعروفة تطابقاً تاماً، ما لم يكن المستدعي يحمل بالفعل operator.admin.

نطاق الأسلوب هو البوابة الأولى فقط

لكل استدعاء RPC في Gateway نطاق أسلوب بأقل امتياز يحدد ما إذا كان الطلب سيصل إلى معالجه. ثم تطبق بعض المعالجات فحوصاً أكثر صرامة بناءً على الشيء المحدد الذي تجري الموافقة عليه أو تعديله:

  • يمكن الوصول إلى device.pair.approve باستخدام operator.pairing، لكن الموافقة على جهاز مشغّل لا يمكنها إصدار نطاقات أو الاحتفاظ إلا بالنطاقات التي يحملها المستدعي بالفعل.
  • يمكن الوصول إلى node.pair.approve باستخدام operator.pairing، ثم يشتق نطاقات موافقة إضافية من قائمة الأوامر المعلنة لعقدة Node المعلّقة.
  • chat.send أسلوب ذو نطاق كتابة، لكن أمري الدردشة /config set و/config unset يتطلبان operator.admin بالإضافة إلى ذلك، بصرف النظر عن نطاق إرسال الدردشة لدى المستدعي.

يتيح ذلك للمشغّلين ذوي النطاقات الأدنى تنفيذ إجراءات إقران منخفضة المخاطر دون اشتراط صلاحيات إدارية لكل موافقات الإقران.

موافقات إقران الأجهزة

سجلات إقران الأجهزة هي المصدر الدائم للأدوار والنطاقات المعتمدة. لا يحصل جهاز مقترن بالفعل على وصول أوسع ضمنياً: فإعادة الاتصال التي تطلب دوراً أو نطاقات أوسع تنشئ طلب ترقية معلّقاً جديداً.

عند الموافقة على طلب جهاز:

  • لا يحتاج الطلب الذي لا يتضمن دور مشغّل إلى موافقة على نطاق المشغّل.
  • يتطلب طلب دور جهاز غير مشغّل (مثل node) النطاق operator.admin، رغم أن device.pair.approve نفسه لا يحتاج إلا إلى operator.pairing.
  • يتطلب طلب operator.read أو operator.write أو operator.approvals أو operator.pairing أو operator.talk.secrets أن يكون المستدعي حاملاً لذلك النطاق بالفعل، أو لـ operator.admin.
  • يتطلب طلب operator.admin النطاق operator.admin.
  • يمكن لطلب إصلاح لا يتضمن نطاقات صريحة أن يرث نطاقات رمز المشغّل الحالي؛ وإذا كان ذلك الرمز ذا نطاق إداري، فستظل الموافقة تتطلب operator.admin.

لا يمكن لجلسات السر المشترك غير الإدارية وجلسات الوكيل الموثوق إلا الموافقة على طلبات أجهزة المشغّل ضمن نطاقات المشغّل المعلنة الخاصة بها؛ أما الموافقة على الأدوار غير المشغّلة فهي إدارية فقط، حتى عندما تستطيع تلك الجلسات استخدام operator.pairing بخلاف ذلك.

بالنسبة إلى جلسات رموز الأجهزة المقترنة، تقتصر الإدارة على الذات ما لم يكن المستدعي يحمل operator.admin: لا يرى المستدعي غير الإداري إلا إدخالات الإقران الخاصة به، ولا يمكنه الموافقة أو الرفض أو التدوير أو الإبطال أو الإزالة إلا لإدخال جهازه.

موافقات إقران Node

تستخدم أساليب node.pair.* القديمة مخزن إقران Node منفصلاً تملكه Gateway. أما عُقد WS فتستخدم إقران الأجهزة (role: node) بدلاً منه، لكن مفردات الموافقة نفسها تنطبق. راجع إقران Gateway لمعرفة العلاقة بين المخزنين.

يشتق node.pair.approve نطاقات مطلوبة إضافية من قائمة أوامر الطلب المعلّق:

الأوامر المعلنة النطاقات المطلوبة
لا شيء operator.pairing
أوامر Node العادية operator.pairing + operator.write
system.run أو system.run.prepare أو system.which أو browser.proxy أو fs.listDir أو system.execApprovals.get/set operator.pairing + operator.admin

لا تؤدي الموافقة على إعلان Node إلى تمكين الأوامر التي لها بوابة قائمة سماح منفصلة وقت التشغيل. على سبيل المثال، تتطلب الموافقة على Node تعلن computer.act الإقران ونطاق الكتابة، لكنها لا تسجل سوى السطح. ويجب على مسؤول أو مالك أن يفعّل computer.act مع ذلك. وما دامت مفعّلة، فإن استدعاءها عبر الأسلوب node.invoke ذي نطاق الكتابة لا يتطلب نطاقاً إدارياً لكل إجراء.

يؤسس إقران Node الهوية والثقة؛ لكنه لا يحل محل سياسة موافقة التنفيذ system.run الخاصة بـ Node.

مصادقة السر المشترك

تُعامل مصادقة رمز/كلمة مرور Gateway المشتركة بوصفها وصول مشغّل موثوقاً إلى Gateway تلك. وتستعيد أسطح HTTP المتوافقة مع OpenAI و/tools/invoke ونقاط نهاية سجل الجلسات عبر HTTP مجموعة نطاقات المشغّل الافتراضية الكاملة لمصادقة حامل السر المشترك، حتى إذا أرسل المستدعي نطاقات معلنة أضيق.

لا يزال بإمكان الأوضاع الحاملة للهوية، مثل مصادقة الوكيل الموثوق أو none للدخول الخاص، احترام النطاقات المعلنة الصريحة. استخدم Gateways منفصلة لتحقيق فصل فعلي لحدود الثقة.

Was this useful?
On this page

On this page