Gateway

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

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

مرتبط: امنیت، پروتکل Gateway، جفت‌سازی Gateway، CLI دستگاه‌ها.

نقش‌ها

کلاینت‌های WebSocket مربوط به Gateway با یک نقش متصل می‌شوند:

  • operator: کلاینت‌های سطح کنترل مانند CLI، Control UI، اتوماسیون، و فرایندهای کمکی قابل اعتماد.
  • node: میزبان‌های قابلیت مانند macOS، iOS، Android، یا نودهای بدون رابط که فرمان‌ها را از طریق node.invoke ارائه می‌کنند.

متدهای RPC عملگر به نقش operator نیاز دارند. متدهایی که از Node منشأ می‌گیرند به نقش node نیاز دارند.

سطوح حوزه

حوزه معنی
operator.read وضعیت فقط‌خواندنی، فهرست‌ها، کاتالوگ، لاگ‌ها، خواندن‌های نشست، و دیگر فراخوانی‌های سطح کنترل که تغییری ایجاد نمی‌کنند.
operator.write اقدام‌های عادیِ تغییردهندهٔ عملگر مانند ارسال پیام‌ها، فراخوانی ابزارها، به‌روزرسانی تنظیمات گفتار/صدا، و رلهٔ فرمان نود. همچنین operator.read را نیز برآورده می‌کند.
operator.admin دسترسی مدیریتی سطح کنترل. هر حوزهٔ operator.* را برآورده می‌کند. برای تغییر پیکربندی، به‌روزرسانی‌ها، هوک‌های بومی، فضاهای نام رزروشدهٔ حساس، و تأییدهای پرریسک لازم است.
operator.pairing مدیریت جفت‌سازی دستگاه و نود، شامل فهرست‌کردن، تأیید، رد، حذف، چرخش، و ابطال رکوردهای جفت‌سازی یا توکن‌های دستگاه.
operator.approvals APIهای تأیید Exec و Plugin.
operator.talk.secrets خواندن پیکربندی Talk همراه با اسرار.

حوزه‌های ناشناختهٔ آینده از نوع operator.* به تطابق دقیق نیاز دارند، مگر اینکه فراخواننده operator.admin داشته باشد.

حوزهٔ متد فقط دروازهٔ اول است

هر RPC مربوط به Gateway یک حوزهٔ متد با کمترین امتیاز دارد. آن حوزهٔ متد تعیین می‌کند که آیا درخواست می‌تواند به handler برسد یا نه. سپس برخی handlerها بر اساس چیز مشخصی که تأیید یا تغییر داده می‌شود، بررسی‌های سخت‌گیرانه‌تری را در زمان تأیید اعمال می‌کنند.

نمونه‌ها:

  • device.pair.approve با operator.pairing قابل دسترسی است، اما تأیید یک دستگاه عملگر فقط می‌تواند حوزه‌هایی را ایجاد یا حفظ کند که فراخواننده از قبل دارد.
  • node.pair.approve با operator.pairing قابل دسترسی است، سپس حوزه‌های تأیید اضافی را از فهرست فرمان‌های نودِ در انتظار استخراج می‌کند.
  • 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.* قدیمی از یک مخزن جفت‌سازی نود جداگانه که مالک آن Gateway است استفاده می‌کند. نودهای WS از جفت‌سازی دستگاه با role: node استفاده می‌کنند، اما همان واژگان سطح تأیید اعمال می‌شود.

node.pair.approve از فهرست فرمان‌های درخواست در انتظار برای استخراج حوزه‌های الزامی اضافی استفاده می‌کند:

  • درخواست بدون فرمان: operator.pairing
  • فرمان‌های نود غیر Exec: operator.pairing + operator.write
  • system.run، system.run.prepare، یا system.which: operator.pairing + operator.admin

جفت‌سازی Node هویت و اعتماد را برقرار می‌کند. این جایگزین سیاست تأیید exec مربوط به system.run خود نود نمی‌شود.

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

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

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

Was this useful?
On this page

On this page