Роли
Клиенты Gateway WebSocket подключаются с одной ролью:operator: клиенты плоскости управления, такие как CLI, Control UI, автоматизация и доверенные вспомогательные процессы.node: хосты возможностей, такие как macOS, iOS, Android или узлы без графического интерфейса, которые предоставляют команды черезnode.invoke.
operator. Методы, инициированные узлом,
требуют роль 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 есть область доступа метода по принципу минимальных привилегий. Эта область доступа метода определяет, может ли запрос попасть в обработчик. Затем некоторые обработчики применяют более строгие проверки во время подтверждения на основе конкретного объекта, который подтверждается или изменяется. Примеры: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, но применяется тот же словарь уровней подтверждения.
node.pair.approve использует список команд ожидающего запроса, чтобы вывести дополнительные
требуемые области доступа:
- Запрос без команд:
operator.pairing - Не-exec команды узла:
operator.pairing+operator.write system.run,system.run.prepareилиsystem.which:operator.pairing+operator.admin
system.run узла.
Аутентификация с общим секретом
Аутентификация с общим токеном/паролем Gateway рассматривается как доверенный операторский доступ для этого Gateway. HTTP-поверхности, совместимые с OpenAI,/tools/invoke и HTTP-эндпоинты
истории сеансов восстанавливают обычный полный набор областей доступа оператора по умолчанию для
bearer-аутентификации с общим секретом, даже если вызывающий клиент отправляет более узкие объявленные области доступа.
Режимы с идентичностью, такие как аутентификация через доверенный прокси или none для частного ingress,
по-прежнему могут учитывать явно объявленные области доступа. Используйте отдельные Gateway для реального
разделения границ доверия.