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های جداگانه استفاده کنید.