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