Ruoli
Ogni client WebSocket del Gateway si connette con un ruolo:operator: client del piano di controllo quali CLI, interfaccia di controllo, automazione e processi ausiliari attendibili.node: host di funzionalità (macOS, iOS, Android, headless) che espongono comandi tramitenode.invoke.
operator; i metodi originati dai nodi
richiedono il ruolo node.
Livelli degli ambiti
Gli ambiti
operator.* futuri e sconosciuti richiedono una corrispondenza esatta, a meno che il chiamante
non disponga già di operator.admin.
L’ambito del metodo è solo il primo controllo
Ogni RPC del Gateway dispone di un ambito del metodo basato sul privilegio minimo, che determina se una richiesta raggiunge il relativo gestore. Alcuni gestori applicano quindi controlli più rigorosi in base all’elemento concreto da approvare o modificare:device.pair.approveè accessibile conoperator.pairing, ma l’approvazione di un dispositivo dell’operatore può generare o mantenere solo gli ambiti già posseduti dal chiamante.node.pair.approveè accessibile conoperator.pairing, quindi ricava ulteriori ambiti di approvazione dall’elenco di comandi dichiarato dal nodo in sospeso.chat.sendè un metodo con ambito di scrittura, ma i comandi di chat/config sete/config unsetrichiedono inoltreoperator.admin, indipendentemente dall’ambito del chiamante per l’invio di messaggi di chat.
Approvazioni delle associazioni dei dispositivi
I record di associazione dei dispositivi sono la fonte persistente dei ruoli e degli ambiti approvati. Un dispositivo già associato non ottiene implicitamente un accesso più ampio: una riconnessione che richiede un ruolo o ambiti più ampi crea una nuova richiesta di elevazione in sospeso. Quando si approva una richiesta di un dispositivo:- Una richiesta priva del ruolo di operatore non necessita dell’approvazione dell’ambito dell’operatore.
- Una richiesta per un ruolo del dispositivo diverso dall’operatore (ad esempio
node) richiedeoperator.admin, anche sedevice.pair.approvenecessita soltanto dioperator.pairing. - Una richiesta per
operator.read,operator.write,operator.approvals,operator.pairingooperator.talk.secretsrichiede che il chiamante disponga già di tale ambito oppure dioperator.admin. - Una richiesta per
operator.adminrichiedeoperator.admin. - Una richiesta di riparazione priva di ambiti espliciti può ereditare gli ambiti del token
dell’operatore esistente; se tale token dispone dell’ambito amministrativo, l’approvazione richiede comunque
operator.admin.
operator.pairing.
Per le sessioni basate su token di dispositivi associati, la gestione è limitata al proprio dispositivo, a meno che il chiamante
non disponga di operator.admin: un chiamante non amministrativo vede solo le proprie voci di associazione e
può approvare, rifiutare, ruotare, revocare o rimuovere esclusivamente la voce del proprio dispositivo.
Approvazioni delle associazioni dei nodi
I metodi legacynode.pair.* usano un archivio separato delle associazioni dei nodi, gestito dal Gateway.
I nodi WS usano invece l’associazione dei dispositivi (role: node), ma si applica la stessa
terminologia di approvazione. Consultare Associazione del Gateway per informazioni sulla relazione tra i due
archivi.
node.pair.approve ricava gli ulteriori ambiti richiesti dall’elenco di comandi della richiesta
in sospeso:
L’approvazione della dichiarazione di un nodo non abilita i comandi soggetti a un controllo separato
tramite elenco consentito durante l’esecuzione. Ad esempio, l’approvazione di un nodo che dichiara
computer.act richiede l’associazione e l’ambito di scrittura, ma registra soltanto la funzionalità.
Un amministratore o un proprietario deve comunque abilitare computer.act. Finché rimane
abilitato, la sua invocazione tramite il metodo node.invoke con ambito di scrittura non
richiede l’ambito amministrativo per ogni azione.
L’associazione dei nodi stabilisce identità e attendibilità; non sostituisce i criteri di approvazione
dell’esecuzione system.run propri di un nodo.
Autenticazione con segreto condiviso
L’autenticazione tramite token/password condivisi del Gateway viene considerata un accesso attendibile dell’operatore per quel Gateway. Le interfacce HTTP compatibili con OpenAI,/tools/invoke e gli endpoint HTTP
della cronologia delle sessioni ripristinano l’intero insieme predefinito degli ambiti dell’operatore per
l’autenticazione bearer con segreto condiviso, anche se un chiamante invia ambiti dichiarati più ristretti.
Le modalità associate a un’identità, come l’autenticazione tramite proxy attendibile o none con ingresso privato,
possono comunque rispettare gli ambiti dichiarati esplicitamente. Usare Gateway separati per una reale separazione
dei confini di attendibilità.