Gateway
Області дії операторів
Області дії оператора визначають, що клієнт Gateway може робити після автентифікації. Вони є захисним механізмом площини керування в межах одного довіреного домену оператора Gateway, а не ізоляцією від ворожих орендарів у багатоорендному середовищі. Для надійного розмежування між людьми, командами або машинами запускайте окремі Gateway від імені окремих користувачів ОС або на окремих хостах.
Пов’язані матеріали: Безпека, Протокол Gateway, Сполучення Gateway, CLI пристроїв.
Ролі
Кожен клієнт WebSocket Gateway підключається з однією роллю:
operator: клієнти площини керування, як-от CLI, інтерфейс керування, автоматизація та довірені допоміжні процеси.node: хости можливостей (macOS, iOS, Android, без графічного інтерфейсу), які надають команди черезnode.invoke.
Методи RPC оператора потребують ролі operator; методи, ініційовані вузлом,
потребують ролі node.
Рівні областей дії
| Область дії | Значення |
|---|---|
operator.read |
Доступ лише для читання до стану, списків, каталогу, журналів, читання сеансів та інших викликів, які не вносять змін. |
operator.write |
Дії оператора, що вносять зміни: надсилання повідомлень, виклик інструментів, оновлення налаштувань розмови/голосу, ретрансляція команд вузла. Також задовольняє operator.read. |
operator.admin |
Адміністративний доступ. Задовольняє кожну область дії operator.*. Потрібен для зміни конфігурації, оновлень, нативних хуків, зарезервованих просторів імен і схвалень із високим ризиком. |
operator.pairing |
Керування сполученням пристроїв і вузлів: перегляд списку, схвалення, відхилення, видалення, ротація, відкликання. |
operator.approvals |
API схвалення виконання команд і плагінів. |
operator.talk.secrets |
Читання конфігурації розмови разом із секретами. |
Невідомі майбутні області дії operator.* потребують точного збігу, якщо викликач
ще не має operator.admin.
Область дії методу — лише перший бар’єр
Кожен RPC Gateway має область дії методу з мінімально необхідними привілеями, яка визначає, чи потрапить запит до його обробника. Потім деякі обробники застосовують суворіші перевірки залежно від конкретного об’єкта, який схвалюють або змінюють:
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.pair.* використовують окреме сховище сполучень вузлів, яким володіє Gateway.
Натомість вузли WS використовують сполучення пристроїв (role: node), але до них застосовується та сама
термінологія схвалення. Відомості про зв’язок між двома сховищами див. у розділі Сполучення Gateway.
node.pair.approve визначає додаткові необхідні області дії зі списку
команд у запиті, який очікує схвалення:
| Оголошені команди | Необхідні області дії |
|---|---|
| немає | operator.pairing |
| звичайні команди вузла | operator.pairing + operator.write |
system.run, system.run.prepare, system.which, browser.proxy, fs.listDir або system.execApprovals.get/set |
operator.pairing + operator.admin |
Схвалення декларації вузла не вмикає команди, для яких існує окремий
дозвільний список середовища виконання. Наприклад, схвалення вузла, що оголошує
computer.act, потребує сполучення та області дії для запису, але лише реєструє цю можливість.
Адміністратор або власник усе одно має активувати computer.act. Поки ця можливість
активна, її виклик через метод node.invoke з областю дії для запису не
потребує адміністративної області дії для кожної операції.
Сполучення вузла встановлює ідентичність і довіру; воно не замінює власну
політику схвалення виконання команд system.run вузла.
Автентифікація за спільним секретом
Автентифікація за допомогою спільного токена/пароля Gateway вважається довіреним операторським доступом до
цього Gateway. HTTP-інтерфейси, сумісні з OpenAI, /tools/invoke та HTTP-кінцеві точки
історії сеансів відновлюють повний стандартний набір областей дії оператора для
автентифікації носія за спільним секретом, навіть якщо викликач надсилає вужчі оголошені області дії.
Режими з ідентифікацією, як-от автентифікація через довірений проксі або приватний вхідний none,
можуть і надалі враховувати явно оголошені області дії. Для справжнього розмежування меж довіри
використовуйте окремі Gateway.