角色
每个 Gateway 网关 WebSocket 客户端都会以一个角色连接:operator:控制平面客户端,例如 CLI、Control UI、自动化,以及 受信任的辅助进程。node:能力主机(macOS、iOS、Android、无头环境),通过node.invoke暴露命令。
operator 角色;节点发起的方法
需要 node 角色。
权限范围级别
| 权限范围 | 含义 |
|---|---|
operator.read | 只读状态、列表、目录、日志、会话读取,以及其他非变更调用。 |
operator.write | 会变更状态的操作员操作:发送消息、调用工具、更新 Talk/语音设置、节点命令中继。也满足 operator.read。 |
operator.admin | 管理访问权限。满足每个 operator.* 权限范围。配置变更、更新、原生钩子、保留命名空间和高风险审批需要此权限。 |
operator.pairing | 设备和节点配对管理:列出、批准、拒绝、移除、轮换、撤销。 |
operator.approvals | Exec 和插件审批 API。 |
operator.talk.secrets | 读取包含密钥的 Talk 配置。 |
operator.* 权限范围需要精确匹配,除非调用方
已经持有 operator.admin。
方法权限范围只是第一道门槛
每个 Gateway 网关 RPC 都有一个最小权限方法范围,用于决定 请求是否到达其处理程序。随后,一些处理程序会根据 被批准或变更的具体对象应用更严格的检查: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 pairing。
node.pair.approve 会从待处理请求的
命令列表推导出额外所需的权限范围:
| 声明的命令 | 所需权限范围 |
|---|---|
| 无 | operator.pairing |
| 非 exec 节点命令 | operator.pairing + operator.write |
system.run、system.run.prepare 或 system.which | operator.pairing + operator.admin |
system.run exec 审批策略。
共享密钥身份验证
共享网关令牌/密码身份验证会被视为该 Gateway 网关的受信任操作员访问。 OpenAI 兼容 HTTP 表面、/tools/invoke 和 HTTP
会话历史端点会为共享密钥 bearer 身份验证恢复完整的默认操作员权限范围集合,
即使调用方发送了更窄的声明权限范围。
带身份的模式,例如受信任代理身份验证或私有入口 none,
仍然可以遵循显式声明的权限范围。若要实现真正的信任
边界隔离,请使用单独的 Gateway 网关。