Role
Każdy klient WebSocket Gateway łączy się z jedną rolą:operator: klienci płaszczyzny sterowania, tacy jak CLI, interfejs Control UI, automatyzacja i zaufane procesy pomocnicze.node: hosty funkcji (macOS, iOS, Android, bez interfejsu graficznego), które udostępniają polecenia za pośrednictwemnode.invoke.
operator; metody inicjowane przez węzeł
wymagają roli node.
Poziomy zakresów
Nieznane przyszłe zakresy
operator.* wymagają dokładnego dopasowania, chyba że wywołujący
ma już zakres operator.admin.
Zakres metody jest tylko pierwszą bramą
Każde wywołanie RPC Gateway ma zakres metody zgodny z zasadą najmniejszych uprawnień, który decyduje, czy żądanie dotrze do jego procedury obsługi. Niektóre procedury obsługi stosują następnie bardziej rygorystyczne kontrole zależne od konkretnego elementu podlegającego zatwierdzeniu lub modyfikacji:device.pair.approvejest dostępne z zakresemoperator.pairing, ale zatwierdzenie urządzenia operatora może nadać lub zachować tylko zakresy, które wywołujący już ma.node.pair.approvejest dostępne z zakresemoperator.pairing, a następnie wyprowadza dodatkowe zakresy zatwierdzania z zadeklarowanej listy poleceń oczekującego węzła.chat.sendjest metodą wymagającą zakresu zapisu, ale polecenia czatu/config seti/config unsetwymagają dodatkowo zakresuoperator.admin, niezależnie od zakresu wywołującego uprawniającego do wysyłania wiadomości na czacie.
Zatwierdzanie parowania urządzeń
Rekordy parowania urządzeń są trwałym źródłem zatwierdzonych ról i zakresów. Już sparowane urządzenie nie uzyskuje po cichu szerszego dostępu: ponowne połączenie, które żąda szerszej roli lub szerszych zakresów, tworzy nowe oczekujące żądanie rozszerzenia uprawnień. Zatwierdzanie żądania urządzenia:- Żądanie bez roli operatora nie wymaga zatwierdzenia zakresu operatora.
- Żądanie roli urządzenia innej niż operator (na przykład
node) wymagaoperator.admin, mimo że samodevice.pair.approvewymaga tylkooperator.pairing. - Żądanie zakresu
operator.read,operator.write,operator.approvals,operator.pairingluboperator.talk.secretswymaga, aby wywołujący już miał ten zakres luboperator.admin. - Żądanie zakresu
operator.adminwymagaoperator.admin. - Żądanie naprawy bez jawnie określonych zakresów może odziedziczyć zakresy istniejącego tokenu
operatora; jeśli ten token ma zakres administracyjny, zatwierdzenie nadal wymaga
operator.admin.
operator.pairing.
W przypadku sesji tokenów sparowanych urządzeń zarządzanie jest ograniczone do własnego urządzenia, chyba że wywołujący
ma zakres operator.admin: wywołujący bez uprawnień administratora widzi tylko własne wpisy parowania i
może zatwierdzać, odrzucać, rotować, unieważniać lub usuwać tylko wpis własnego urządzenia.
Zatwierdzanie parowania węzłów
Starsze metodynode.pair.* korzystają z oddzielnego magazynu parowania węzłów należącego do Gateway.
Węzły WS korzystają zamiast tego z parowania urządzeń (role: node), ale obowiązuje to samo
nazewnictwo zatwierdzeń. Zobacz Parowanie Gateway, aby dowiedzieć się, jak oba
magazyny są ze sobą powiązane.
node.pair.approve wyprowadza dodatkowe wymagane zakresy z listy
poleceń oczekującego żądania:
Zatwierdzenie deklaracji węzła nie włącza poleceń objętych oddzielną
listą dozwolonych operacji środowiska wykonawczego. Na przykład zatwierdzenie węzła deklarującego
computer.act wymaga parowania i zakresu zapisu, ale tylko rejestruje tę funkcję.
Administrator lub właściciel nadal musi uzbroić computer.act. Dopóki pozostaje ona
uzbrojona, jej wywoływanie za pośrednictwem metody node.invoke wymagającej zakresu zapisu nie
wymaga zakresu administracyjnego dla każdego działania.
Parowanie węzła ustanawia tożsamość i zaufanie; nie zastępuje własnych zasad
zatwierdzania wykonywania system.run danego węzła.
Uwierzytelnianie współdzielonym sekretem
Uwierzytelnianie współdzielonym tokenem/hasłem Gateway jest traktowane jako zaufany dostęp operatora do tego Gateway. Interfejsy HTTP zgodne z OpenAI,/tools/invoke oraz punkty końcowe HTTP
historii sesji przywracają pełny domyślny zestaw zakresów operatora dla
uwierzytelniania nośnikiem współdzielonego sekretu, nawet jeśli wywołujący przesyła węższe zadeklarowane zakresy.
Tryby przekazujące tożsamość, takie jak uwierzytelnianie za pomocą zaufanego serwera proxy lub none przez prywatny punkt wejścia,
mogą nadal respektować jawnie zadeklarowane zakresy. Aby zapewnić rzeczywistą separację
granic zaufania, należy używać oddzielnych instancji Gateway.