Gateway
Cakupan operator
Cakupan operator menentukan apa yang boleh dilakukan klien Gateway setelah terautentikasi. Cakupan ini adalah pagar pembatas bidang kontrol di dalam satu domain operator Gateway tepercaya, bukan isolasi multi-penyewa yang bermusuhan. Jika Anda membutuhkan pemisahan kuat antara orang, tim, atau mesin, jalankan Gateway terpisah di bawah pengguna OS atau host yang berbeda.
Terkait: Keamanan, protokol Gateway, pemasangan Gateway, CLI Perangkat.
Peran
Klien WebSocket Gateway terhubung dengan satu peran:
operator: klien bidang kontrol seperti CLI, UI Kontrol, automasi, dan proses pembantu tepercaya.node: host kapabilitas seperti macOS, iOS, Android, atau Node tanpa antarmuka yang mengekspos perintah melaluinode.invoke.
Metode RPC operator memerlukan peran operator. Metode yang berasal dari Node
memerlukan peran node.
Tingkat cakupan
| Cakupan | Arti |
|---|---|
operator.read |
Status baca-saja, daftar, katalog, log, pembacaan sesi, dan panggilan bidang kontrol lain yang tidak mengubah data. |
operator.write |
Tindakan operator pengubah data normal seperti mengirim pesan, memanggil alat, memperbarui pengaturan bicara/suara, dan relai perintah Node. Juga memenuhi operator.read. |
operator.admin |
Akses administratif bidang kontrol. Memenuhi setiap cakupan operator.*. Diperlukan untuk mutasi konfigurasi, pembaruan, hook native, namespace sensitif yang dicadangkan, dan persetujuan berisiko tinggi. |
operator.pairing |
Pengelolaan pemasangan perangkat dan Node, termasuk mencantumkan, menyetujui, menolak, menghapus, merotasi, dan mencabut catatan pemasangan atau token perangkat. |
operator.approvals |
API persetujuan exec dan Plugin. |
operator.talk.secrets |
Membaca konfigurasi Talk dengan rahasia yang disertakan. |
Cakupan operator.* mendatang yang tidak dikenal memerlukan kecocokan tepat kecuali pemanggil memiliki
operator.admin.
Cakupan metode hanyalah gerbang pertama
Setiap RPC Gateway memiliki cakupan metode dengan hak istimewa minimum. Cakupan metode itu menentukan apakah permintaan dapat mencapai handler. Beberapa handler kemudian menerapkan pemeriksaan yang lebih ketat pada waktu persetujuan berdasarkan hal konkret yang disetujui atau dimutasi.
Contoh:
device.pair.approvedapat dijangkau denganoperator.pairing, tetapi menyetujui perangkat operator hanya dapat mencetak atau mempertahankan cakupan yang sudah dimiliki pemanggil.node.pair.approvedapat dijangkau denganoperator.pairing, lalu menurunkan cakupan persetujuan tambahan dari daftar perintah Node yang tertunda.chat.sendbiasanya merupakan metode bercakupan tulis, tetapi/config setdan/config unsetpersisten memerlukanoperator.adminpada tingkat perintah.
Ini memungkinkan operator bercakupan lebih rendah melakukan tindakan pemasangan berisiko rendah tanpa membuat semua persetujuan pemasangan hanya untuk admin.
Persetujuan pemasangan perangkat
Catatan pemasangan perangkat adalah sumber tahan lama untuk peran dan cakupan yang disetujui. Perangkat yang sudah dipasangkan tidak mendapatkan akses lebih luas secara diam-diam: koneksi ulang yang meminta peran lebih luas atau cakupan lebih luas akan membuat permintaan peningkatan baru yang tertunda.
Saat menyetujui permintaan perangkat:
- Permintaan tanpa peran operator tidak memerlukan persetujuan cakupan token operator.
- Permintaan untuk
operator.read,operator.write,operator.approvals,operator.pairing, atauoperator.talk.secretsmengharuskan pemanggil memiliki cakupan tersebut, atauoperator.admin. - Permintaan untuk
operator.adminmemerlukanoperator.admin. - Permintaan perbaikan tanpa cakupan eksplisit dapat mewarisi cakupan token operator
yang ada. Jika token yang ada tersebut bercakupan admin, persetujuan tetap memerlukan
operator.admin.
Untuk sesi token perangkat yang dipasangkan, pengelolaan bercakupan mandiri kecuali pemanggil
juga memiliki operator.admin: pemanggil non-admin hanya melihat entri pemasangannya sendiri,
hanya dapat menyetujui atau menolak permintaan tertunda miliknya sendiri, dan hanya dapat merotasi, mencabut, atau
menghapus entri perangkatnya sendiri.
Persetujuan pemasangan Node
node.pair.* legacy menggunakan penyimpanan pemasangan Node terpisah yang dimiliki Gateway. Node WS
menggunakan pemasangan perangkat dengan role: node, tetapi kosakata tingkat persetujuan yang sama
berlaku.
node.pair.approve menggunakan daftar perintah permintaan tertunda untuk menurunkan cakupan
tambahan yang diperlukan:
- Permintaan tanpa perintah:
operator.pairing - Perintah Node non-exec:
operator.pairing+operator.write system.run,system.run.prepare, atausystem.which:operator.pairing+operator.admin
Pemasangan Node menetapkan identitas dan kepercayaan. Ini tidak menggantikan kebijakan
persetujuan exec system.run milik Node sendiri.
Autentikasi rahasia bersama
Autentikasi token/kata sandi gateway bersama diperlakukan sebagai akses operator tepercaya untuk
Gateway tersebut. Permukaan HTTP yang kompatibel dengan OpenAI dan /tools/invoke memulihkan
kumpulan cakupan default operator penuh yang normal untuk autentikasi bearer rahasia bersama, meskipun
pemanggil mengirim cakupan deklaratif yang lebih sempit.
Mode yang membawa identitas, seperti autentikasi proksi tepercaya atau none ingress privat,
tetap dapat menghormati cakupan deklaratif eksplisit. Gunakan Gateway terpisah untuk pemisahan
batas kepercayaan yang nyata.