Gateway
ขอบเขตของผู้ปฏิบัติการ
ขอบเขตของ operator กำหนดว่าไคลเอนต์ Gateway ทำอะไรได้บ้างหลังจากยืนยันตัวตนแล้ว ขอบเขตเหล่านี้เป็นราวกันตกของระนาบควบคุมภายในโดเมนผู้ปฏิบัติการ Gateway ที่เชื่อถือได้หนึ่งโดเมน ไม่ใช่การแยกแบบหลายผู้เช่าที่ต้านทานผู้ไม่ประสงค์ดี หากคุณต้องการการแยกที่เข้มแข็งระหว่าง บุคคล ทีม หรือเครื่อง ให้รัน Gateway แยกกันภายใต้ผู้ใช้ OS หรือ โฮสต์ที่แยกกัน
ที่เกี่ยวข้อง: ความปลอดภัย, โปรโตคอล Gateway, การจับคู่ Gateway, CLI สำหรับอุปกรณ์.
บทบาท
ไคลเอนต์ WebSocket ของ Gateway เชื่อมต่อด้วยหนึ่งบทบาท:
operator: ไคลเอนต์ระนาบควบคุม เช่น CLI, Control UI, ระบบอัตโนมัติ และ โพรเซสตัวช่วยที่เชื่อถือได้node: โฮสต์ความสามารถ เช่น macOS, iOS, Android หรือโหนดแบบไม่มีส่วนติดต่อผู้ใช้ที่ เปิดคำสั่งผ่านnode.invoke
เมธอด RPC ของ operator ต้องใช้บทบาท operator เมธอดที่มีต้นทางจาก Node
ต้องใช้บทบาท node
ระดับขอบเขต
| ขอบเขต | ความหมาย |
|---|---|
operator.read |
สถานะ รายการ แค็ตตาล็อก บันทึก การอ่านเซสชัน และการเรียกระนาบควบคุมอื่นๆ ที่ไม่เปลี่ยนแปลงข้อมูลแบบอ่านอย่างเดียว |
operator.write |
การกระทำของ operator ที่เปลี่ยนแปลงข้อมูลตามปกติ เช่น การส่งข้อความ การเรียกใช้เครื่องมือ การอัปเดตการตั้งค่าการพูดคุย/เสียง และการส่งต่อคำสั่งของ Node รวมถึงผ่านเงื่อนไข operator.read ด้วย |
operator.admin |
การเข้าถึงระนาบควบคุมเชิงดูแลระบบ ผ่านเงื่อนไขทุกขอบเขต operator.* จำเป็นสำหรับการเปลี่ยนแปลง config, การอัปเดต, native hooks, namespace ที่สงวนไว้และอ่อนไหว และการอนุมัติที่มีความเสี่ยงสูง |
operator.pairing |
การจัดการการจับคู่อุปกรณ์และ Node รวมถึงการแสดงรายการ การอนุมัติ การปฏิเสธ การลบ การหมุนเวียน และการเพิกถอนระเบียนการจับคู่หรือโทเคนอุปกรณ์ |
operator.approvals |
API การอนุมัติ exec และ Plugin |
operator.talk.secrets |
การอ่านการกำหนดค่า Talk โดยรวม secrets |
ขอบเขต operator.* ที่ไม่รู้จักในอนาคตต้องตรงกันทุกประการ เว้นแต่ผู้เรียกจะมี
operator.admin
ขอบเขตของเมธอดเป็นเพียงด่านแรก
RPC แต่ละรายการของ Gateway มีขอบเขตเมธอดแบบสิทธิ์น้อยที่สุด ขอบเขตเมธอดนั้นตัดสินว่า คำขอจะไปถึง handler ได้หรือไม่ จากนั้น handler บางรายการจะใช้การตรวจสอบที่เข้มงวดยิ่งขึ้น ในเวลาที่อนุมัติ โดยอิงจากสิ่งที่กำลังถูกอนุมัติหรือเปลี่ยนแปลงจริง
ตัวอย่าง:
device.pair.approveเข้าถึงได้ด้วยoperator.pairingแต่การอนุมัติ อุปกรณ์ operator สามารถ mint หรือคงไว้เฉพาะขอบเขตที่ผู้เรียกมีอยู่แล้วเท่านั้นnode.pair.approveเข้าถึงได้ด้วยoperator.pairingจากนั้นอนุมาน ขอบเขตการอนุมัติเพิ่มเติมจากรายการคำสั่ง Node ที่รอดำเนินการchat.sendโดยปกติเป็นเมธอดในขอบเขตเขียน แต่/config setและ/config unsetแบบถาวรต้องใช้operator.adminที่ระดับคำสั่ง
สิ่งนี้ทำให้ operator ที่มีขอบเขตต่ำกว่าสามารถทำการจับคู่ที่มีความเสี่ยงต่ำได้โดยไม่ต้องทำให้ การอนุมัติการจับคู่ทั้งหมดเป็นเฉพาะผู้ดูแลระบบเท่านั้น
การอนุมัติการจับคู่อุปกรณ์
ระเบียนการจับคู่อุปกรณ์เป็นแหล่งข้อมูลถาวรของบทบาทและขอบเขตที่ได้รับอนุมัติ อุปกรณ์ที่จับคู่แล้วจะไม่ได้รับการเข้าถึงที่กว้างขึ้นอย่างเงียบๆ: การเชื่อมต่อซ้ำที่ขอ บทบาทที่กว้างขึ้นหรือขอบเขตที่กว้างขึ้นจะสร้างคำขออัปเกรดใหม่ที่รอดำเนินการ
เมื่ออนุมัติคำขออุปกรณ์:
- คำขอที่ไม่มีบทบาท operator ไม่จำเป็นต้องมีการอนุมัติขอบเขตโทเคนของ operator
- คำขอสำหรับ
operator.read,operator.write,operator.approvals,operator.pairingหรือoperator.talk.secretsต้องให้ผู้เรียกถือ ขอบเขตเหล่านั้น หรือoperator.admin - คำขอสำหรับ
operator.adminต้องใช้operator.admin - คำขอซ่อมแซมที่ไม่มีขอบเขตชัดเจนสามารถสืบทอดขอบเขตโทเคน operator
ที่มีอยู่ได้ หากโทเคนที่มีอยู่นั้นมีขอบเขต admin การอนุมัติยังคงต้องใช้
operator.admin
สำหรับเซสชันโทเคนอุปกรณ์ที่จับคู่แล้ว การจัดการจะจำกัดอยู่กับตัวเอง เว้นแต่ผู้เรียก
จะมี operator.admin ด้วย: ผู้เรียกที่ไม่ใช่ admin จะเห็นเฉพาะรายการการจับคู่ของตนเอง
สามารถอนุมัติหรือปฏิเสธได้เฉพาะคำขอที่รอดำเนินการของตนเอง และสามารถหมุนเวียน เพิกถอน หรือ
ลบได้เฉพาะรายการอุปกรณ์ของตนเอง
การอนุมัติการจับคู่ Node
node.pair.* แบบเดิมใช้คลังการจับคู่ Node ที่ Gateway เป็นเจ้าของแยกต่างหาก โหนด WS
ใช้การจับคู่อุปกรณ์ด้วย role: node แต่คำศัพท์ระดับการอนุมัติเดียวกัน
ยังคงใช้ได้
node.pair.approve ใช้รายการคำสั่งของคำขอที่รอดำเนินการเพื่ออนุมาน
ขอบเขตเพิ่มเติมที่จำเป็น:
- คำขอที่ไม่มีคำสั่ง:
operator.pairing - คำสั่ง Node ที่ไม่ใช่ exec:
operator.pairing+operator.write system.run,system.run.prepareหรือsystem.which:operator.pairing+operator.admin
การจับคู่ Node สร้างตัวตนและความเชื่อถือ ไม่ได้แทนที่นโยบายการอนุมัติ exec
system.run ของ Node เอง
การยืนยันตัวตนด้วย shared-secret
การยืนยันตัวตนด้วยโทเคน/รหัสผ่าน Gateway แบบ shared gateway ถือเป็นการเข้าถึง operator ที่เชื่อถือได้สำหรับ
Gateway นั้น พื้นผิว HTTP ที่เข้ากันได้กับ OpenAI และ /tools/invoke จะคืนค่า
ชุดขอบเขตเริ่มต้นของ operator แบบเต็มตามปกติสำหรับการยืนยันตัวตน shared-secret bearer แม้ว่าผู้เรียก
จะส่งขอบเขตที่ประกาศไว้แคบกว่าก็ตาม
โหมดที่มีตัวตน เช่น การยืนยันตัวตนผ่านพร็อกซีที่เชื่อถือได้ หรือ private-ingress none
ยังสามารถเคารพขอบเขตที่ประกาศไว้อย่างชัดเจนได้ ใช้ Gateway แยกกันสำหรับการแยก
ขอบเขตความเชื่อถือจริง