Gateway
Escopos do operador
Os escopos do operador controlam o que um cliente do Gateway pode fazer depois de se autenticar. Eles são uma proteção do plano de controle dentro de um único domínio de operador confiável do Gateway, e não um isolamento contra multilocação hostil. Para uma separação robusta entre pessoas, equipes ou máquinas, execute Gateways separados sob usuários do SO ou hosts distintos.
Relacionado: Segurança, Protocolo do Gateway, Emparelhamento do Gateway, CLI de dispositivos.
Funções
Cada cliente WebSocket do Gateway se conecta com uma função:
operator: clientes do plano de controle, como CLI, interface de controle, automação e processos auxiliares confiáveis.node: hosts de recursos (macOS, iOS, Android, sem interface gráfica) que expõem comandos por meio denode.invoke.
Os métodos RPC do operador exigem a função operator; métodos originados por nós
exigem a função node.
Níveis de escopo
| Escopo | Significado |
|---|---|
operator.read |
Status somente leitura, listas, catálogo, logs, leituras de sessão e outras chamadas que não fazem alterações. |
operator.write |
Ações de operador que fazem alterações: envio de mensagens, invocação de ferramentas, atualização das configurações de conversa/voz e retransmissão de comandos de nós. Também satisfaz operator.read. |
operator.admin |
Acesso administrativo. Satisfaz todos os escopos operator.*. Necessário para alterar configurações, fazer atualizações, usar hooks nativos e namespaces reservados e conceder aprovações de alto risco. |
operator.pairing |
Gerenciamento de emparelhamento de dispositivos e nós: listar, aprovar, rejeitar, remover, rotacionar e revogar. |
operator.approvals |
APIs de aprovação de execução e plugins. |
operator.talk.secrets |
Leitura da configuração de conversa com inclusão de segredos. |
Escopos operator.* futuros e desconhecidos exigem uma correspondência exata, a menos que o chamador
já tenha operator.admin.
O escopo do método é apenas a primeira barreira
Cada RPC do Gateway tem um escopo de método de privilégio mínimo que decide se uma solicitação chega ao manipulador. Alguns manipuladores aplicam verificações mais rigorosas com base no item concreto que está sendo aprovado ou alterado:
device.pair.approvepode ser acessado comoperator.pairing, mas a aprovação de um dispositivo de operador só pode emitir ou preservar escopos que o chamador já tenha.node.pair.approvepode ser acessado comoperator.pairinge, em seguida, deriva escopos de aprovação adicionais da lista de comandos declarada pelo nó pendente.chat.sendé um método com escopo de gravação, mas os comandos de chat/config sete/config unsetexigem adicionalmenteoperator.admin, independentemente do escopo de envio de chat do chamador.
Isso permite que operadores com escopos menores realizem ações de emparelhamento de baixo risco sem tornar todas as aprovações de emparelhamento exclusivas para administradores.
Aprovações de emparelhamento de dispositivos
Os registros de emparelhamento de dispositivos são a fonte persistente das funções e dos escopos aprovados. Um dispositivo já emparelhado não obtém acesso mais amplo silenciosamente: uma reconexão que solicita uma função ou escopos mais amplos cria uma nova solicitação pendente de ampliação de acesso.
Ao aprovar uma solicitação de dispositivo:
- Uma solicitação sem função de operador não precisa de aprovação de escopo de operador.
- Uma solicitação de uma função de dispositivo que não seja de operador (por exemplo,
node) exigeoperator.admin, embora o própriodevice.pair.approveexija apenasoperator.pairing. - Uma solicitação de
operator.read,operator.write,operator.approvals,operator.pairingouoperator.talk.secretsexige que o chamador já tenha esse escopo ouoperator.admin. - Uma solicitação de
operator.adminexigeoperator.admin. - Uma solicitação de reparo sem escopos explícitos pode herdar os escopos do token
de operador existente; se esse token tiver escopo de administrador, a aprovação ainda exigirá
operator.admin.
Sessões não administrativas com segredo compartilhado e proxy confiável só podem aprovar
solicitações de dispositivos de operador dentro dos próprios escopos de operador declarados; a aprovação
de funções que não sejam de operador é exclusiva para administradores, mesmo quando essas sessões possam usar
operator.pairing em outras situações.
Para sessões com token de dispositivo emparelhado, o gerenciamento fica restrito ao próprio dispositivo, a menos que o chamador
tenha operator.admin: um chamador que não seja administrador vê apenas as próprias entradas de emparelhamento e
só pode aprovar, rejeitar, rotacionar, revogar ou remover a entrada do próprio dispositivo.
Aprovações de emparelhamento de nós
Os métodos legados node.pair.* usam um armazenamento separado de emparelhamento de nós pertencente ao Gateway.
Os nós WS usam o emparelhamento de dispositivos (role: node), mas o mesmo vocabulário de aprovação
se aplica. Consulte Emparelhamento do Gateway para saber como os dois
armazenamentos se relacionam.
node.pair.approve deriva escopos obrigatórios adicionais da lista
de comandos da solicitação pendente:
| Comandos declarados | Escopos obrigatórios |
|---|---|
| nenhum | operator.pairing |
| comandos comuns de nós | operator.pairing + operator.write |
system.run, system.run.prepare, system.which, browser.proxy, fs.listDir ou system.execApprovals.get/set |
operator.pairing + operator.admin |
A aprovação de uma declaração de nó não habilita comandos que tenham uma barreira separada
de lista de permissões em tempo de execução. Por exemplo, aprovar um nó que declara
computer.act exige emparelhamento e escopo de gravação, mas apenas registra a superfície.
Um administrador ou proprietário ainda precisa ativar computer.act. Enquanto permanecer
ativado, invocá-lo por meio do método com escopo de gravação node.invoke não
exige escopo de administrador para cada ação.
O emparelhamento de nós estabelece identidade e confiança; ele não substitui a própria política de aprovação
de execução system.run de um nó.
Autenticação por segredo compartilhado
A autenticação por token/senha compartilhada do Gateway é tratada como acesso de operador confiável para
esse Gateway. As superfícies HTTP compatíveis com OpenAI, /tools/invoke e os endpoints HTTP
de histórico de sessões restauram o conjunto completo de escopos padrão do operador para
autenticação bearer por segredo compartilhado, mesmo que um chamador envie escopos declarados mais restritos.
Modos que incluem identidade, como autenticação por proxy confiável ou none de ingresso privado,
ainda podem respeitar escopos declarados explicitamente. Use Gateways separados para uma separação real
dos limites de confiança.