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 إدارة إقران الأجهزة وNodes: السرد والموافقة والرفض والإزالة والتدوير والإبطال.
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 Nodes فتستخدم إقران الأجهزة (role: node) بدلاً من ذلك، لكن مفردات الموافقة نفسها تنطبق. راجع إقران Gateway لمعرفة كيفية ارتباط المخزنين.

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

الأوامر المعلنة النطاقات المطلوبة
لا شيء operator.pairing
أوامر Node غير التنفيذية operator.pairing + operator.write
system.run أو system.run.prepare أو system.which operator.pairing + operator.admin

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

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

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

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

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

Was this useful?
On this page

On this page