Gateway

دامنه‌های اپراتور

دامنه‌های اپراتور تعیین می‌کنند که یک کلاینت Gateway پس از احراز هویت چه کارهایی می‌تواند انجام دهد. آن‌ها یک سازوکار حفاظتیِ صفحهٔ کنترل درون یک دامنهٔ اپراتوریِ مورد اعتماد Gateway هستند، نه جداسازی خصمانهٔ چندمستاجری. برای جداسازی قوی میان افراد، تیم‌ها یا ماشین‌ها، Gatewayهای جداگانه را تحت کاربران سیستم‌عامل یا میزبان‌های جداگانه اجرا کنید.

مرتبط: امنیت، پروتکل 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 است استفاده می‌کنند. Nodeهای WS در عوض از جفت‌سازی دستگاه (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 هویت و اعتماد را برقرار می‌کند؛ اما جایگزین سیاست تأیید اجرای system.run خود Node نمی‌شود.

احراز هویت با راز مشترک

احراز هویت با توکن/گذرواژهٔ مشترک Gateway برای همان Gateway به‌عنوان دسترسی اپراتوری مورد اعتماد در نظر گرفته می‌شود. سطوح HTTP سازگار با OpenAI،‏ /tools/invoke و نقاط پایانی HTTP تاریخچهٔ نشست، مجموعهٔ کامل و پیش‌فرض دامنه‌های اپراتور را برای احراز هویت حاملِ راز مشترک بازیابی می‌کنند، حتی اگر فراخواننده دامنه‌های اعلام‌شدهٔ محدودتری ارسال کند.

حالت‌های دارای هویت، مانند احراز هویت پراکسی مورد اعتماد یا none در ورودی خصوصی، همچنان می‌توانند دامنه‌های صریح اعلام‌شده را رعایت کنند. برای جداسازی واقعی مرز اعتماد، از Gatewayهای جداگانه استفاده کنید.

Was this useful?
On this page

On this page