Roles
Cada cliente WebSocket de Gateway se conecta con un rol:operator: clientes del plano de control como CLI, Control UI, automatización y procesos auxiliares de confianza.node: hosts de capacidades (macOS, iOS, Android, sin interfaz) que exponen comandos mediantenode.invoke.
operator; los métodos originados en node
requieren el rol node.
Niveles de alcance
| Alcance | Significado |
|---|---|
operator.read | Estado de solo lectura, listas, catálogo, registros, lecturas de sesión y otras llamadas no mutantes. |
operator.write | Acciones de operador mutantes: enviar mensajes, invocar herramientas, actualizar ajustes de habla/voz, retransmisión de comandos de node. También satisface operator.read. |
operator.admin | Acceso administrativo. Satisface todos los alcances operator.*. Requerido para mutación de configuración, actualizaciones, hooks nativos, espacios de nombres reservados y aprobaciones de alto riesgo. |
operator.pairing | Gestión de emparejamiento de dispositivos y nodes: listar, aprobar, rechazar, eliminar, rotar, revocar. |
operator.approvals | APIs de aprobación de exec y plugins. |
operator.talk.secrets | Leer la configuración de Talk con secretos incluidos. |
operator.* futuros desconocidos requieren una coincidencia exacta salvo que el llamador
ya tenga operator.admin.
El alcance del método es solo la primera barrera
Cada RPC de Gateway tiene un alcance de método de privilegio mínimo que decide si una solicitud llega a su manejador. Algunos manejadores aplican después comprobaciones más estrictas según el elemento concreto que se aprueba o muta:device.pair.approvees accesible conoperator.pairing, pero aprobar un dispositivo de operador solo puede emitir o preservar alcances que el llamador ya tiene.node.pair.approvees accesible conoperator.pairing, y luego deriva alcances de aprobación adicionales de la lista de comandos declarada del node pendiente.chat.sendes un método con alcance de escritura, pero los comandos de chat/config sety/config unsetrequierenoperator.adminademás de eso, independientemente del alcance de envío de chat del llamador.
Aprobaciones de emparejamiento de dispositivos
Los registros de emparejamiento de dispositivos son la fuente duradera de roles y alcances aprobados. Un dispositivo ya emparejado no obtiene acceso más amplio de forma silenciosa: una reconexión que pide un rol más amplio o alcances más amplios crea una nueva solicitud de actualización pendiente. Aprobar una solicitud de dispositivo:- Una solicitud sin rol de operador no necesita aprobación de alcance de operador.
- Una solicitud para un rol de dispositivo que no sea operador (por ejemplo
node) requiereoperator.admin, aunquedevice.pair.approveen sí solo necesitaoperator.pairing. - Una solicitud para
operator.read,operator.write,operator.approvals,operator.pairinguoperator.talk.secretsrequiere que el llamador ya tenga ese alcance, ooperator.admin. - Una solicitud para
operator.adminrequiereoperator.admin. - Una solicitud de reparación sin alcances explícitos puede heredar los alcances del token
de operador existente; si ese token tiene alcance de administrador, la aprobación sigue requiriendo
operator.admin.
operator.pairing de otro modo.
Para sesiones de token de dispositivo emparejado, la gestión queda limitada al propio dispositivo salvo que el llamador
tenga operator.admin: un llamador no administrador solo ve sus propias entradas de emparejamiento, y
solo puede aprobar, rechazar, rotar, revocar o eliminar la entrada de su propio dispositivo.
Aprobaciones de emparejamiento de Node
Los métodos heredadosnode.pair.* usan un almacén de emparejamiento de nodes separado, propiedad de Gateway.
Los nodes WS usan emparejamiento de dispositivos (role: node) en su lugar, pero se aplica el mismo
vocabulario de aprobación. Consulta emparejamiento de Gateway para ver cómo se relacionan los dos
almacenes.
node.pair.approve deriva alcances requeridos adicionales de la lista de comandos de la
solicitud pendiente:
| Comandos declarados | Alcances requeridos |
|---|---|
| ninguno | operator.pairing |
| comandos de node que no sean exec | operator.pairing + operator.write |
system.run, system.run.prepare o system.which | operator.pairing + operator.admin |
system.run de un node.
Autenticación de secreto compartido
La autenticación con token/contraseña compartidos de gateway se trata como acceso de operador de confianza para ese Gateway. Las superficies HTTP compatibles con OpenAI,/tools/invoke y los endpoints HTTP
de historial de sesión restauran el conjunto completo predeterminado de alcances de operador para la
autenticación bearer de secreto compartido, incluso si un llamador envía alcances declarados más estrechos.
Los modos con identidad, como la autenticación de proxy de confianza o none de ingreso privado,
aún pueden respetar alcances declarados explícitos. Usa Gateways separados para una separación real de
límites de confianza.