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.questions |
การแสดงรายการ อ่าน ตอบ และแก้ไขคำถามแบบโต้ตอบ |
operator.talk.secrets |
การอ่านการกำหนดค่าการสนทนาโดยรวมข้อมูลลับด้วย |
ขอบเขต operator.* ในอนาคตที่ไม่รู้จักต้องตรงกันทุกประการ เว้นแต่ผู้เรียก
จะมี operator.admin อยู่แล้ว
ขอบเขตของเมธอดเป็นเพียงด่านแรก
RPC แต่ละรายการของ Gateway มีขอบเขตเมธอดตามหลักสิทธิ์ขั้นต่ำ ซึ่งใช้ตัดสินว่า คำขอจะไปถึงตัวจัดการหรือไม่ เมธอดที่คำนึงถึงพารามิเตอร์จะหาขอบเขตดังกล่าวก่อน ส่งต่อ เพื่อให้ความล้มเหลวในการให้สิทธิ์มีการตอบกลับแบบมีโครงสร้างมาตรฐานเพียงรูปแบบเดียว:
agentต้องใช้operator.writeสำหรับรอบการทำงานทั่วไป และใช้operator.adminสำหรับ คำสั่งวงจรชีวิตเซสชัน/newหรือ/resetnode.invokeต้องใช้operator.writeสำหรับคำสั่งส่งต่อทั่วไป และ ใช้operator.adminสำหรับbrowser.proxy,fs.listDirและterminal.uploadtalk.configต้องใช้operator.read; ส่วนincludeSecrets: trueต้องใช้operator.talk.secretsเพิ่มเติมด้วย
จากนั้นตัวจัดการบางรายการจะใช้การตรวจสอบที่เข้มงวดยิ่งขึ้นตามสิ่งที่ กำลังได้รับการอนุมัติหรือแก้ไข:
device.pair.approveเข้าถึงได้ด้วยoperator.pairingแต่การอนุมัติ อุปกรณ์ของผู้ปฏิบัติงานสามารถออกหรือคงไว้ได้เฉพาะขอบเขตที่ผู้เรียกมีอยู่แล้วเท่านั้นnode.pair.approveเข้าถึงได้ด้วยoperator.pairingจากนั้นจะหา ขอบเขตการอนุมัติเพิ่มเติมจากรายการคำสั่งที่ Node ซึ่งรอดำเนินการประกาศไว้chat.sendเป็นเมธอดที่มีขอบเขตการเขียน แต่คำสั่งแชต/config setและ/config unsetต้องใช้operator.adminเพิ่มเติมจากนั้น โดยไม่ขึ้นกับขอบเขตการส่งแชตของผู้เรียก
วิธีนี้ช่วยให้ผู้ปฏิบัติงานที่มีขอบเขตต่ำกว่าสามารถดำเนินการจับคู่ที่มีความเสี่ยงต่ำได้ โดยไม่ทำให้การอนุมัติการจับคู่ทั้งหมดจำกัดไว้เฉพาะผู้ดูแลระบบ
RPC ที่แก้ไขเซสชันจะได้รับอนุญาตตามขอบเขตผู้ปฏิบัติงานที่เจรจาไว้
โดยไม่ขึ้นกับ client.id หรือ client.mode ของไคลเอนต์ที่เชื่อมต่อ อัตลักษณ์ของไคลเอนต์
ยังคงส่งผลต่อนโยบายการเชื่อมต่อและการยืนยันตัวตนของอุปกรณ์ได้ แต่จะไม่
ให้หรือถอนอำนาจในการแก้ไขเซสชัน
การอนุมัติการจับคู่อุปกรณ์
ระเบียนการจับคู่อุปกรณ์เป็นแหล่งข้อมูลถาวรของบทบาทและขอบเขตที่ได้รับอนุมัติ อุปกรณ์ที่จับคู่แล้วจะไม่ได้รับสิทธิ์เข้าถึงที่กว้างขึ้นโดยอัตโนมัติ การเชื่อมต่อใหม่ ที่ขอบทบาทหรือขอบเขตที่กว้างขึ้นจะสร้างคำขออัปเกรดใหม่ที่รอดำเนินการ
การอนุมัติคำขอของอุปกรณ์:
- คำขอที่ไม่มีบทบาทผู้ปฏิบัติงานไม่จำเป็นต้องได้รับการอนุมัติขอบเขตผู้ปฏิบัติงาน
- คำขอบทบาทอุปกรณ์ที่ไม่ใช่ผู้ปฏิบัติงาน (เช่น
node) ต้องใช้operator.adminแม้ว่าdevice.pair.approveเองจะต้องใช้เพียงoperator.pairing - คำขอ
operator.read,operator.write,operator.approvals,operator.questions,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, browser.proxy, fs.listDir หรือ system.execApprovals.get/set |
operator.pairing + operator.admin |
การอนุมัติการประกาศของ Node ไม่ได้เปิดใช้งานคำสั่งที่มีด่านรายการอนุญาต
ขณะรันแยกต่างหาก ตัวอย่างเช่น การอนุมัติ Node ที่ประกาศ
computer.act ต้องใช้การจับคู่ร่วมกับขอบเขตการเขียน แต่เป็นเพียงการบันทึกพื้นผิวดังกล่าว
ผู้ดูแลระบบหรือเจ้าของยังคงต้องเปิดใช้งาน computer.act ขณะที่ยังเปิดใช้งานอยู่
การเรียกผ่าน node.invoke ต้องใช้ขอบเขตการเขียน แต่ไม่ต้องใช้ขอบเขตผู้ดูแลระบบ
สำหรับแต่ละการดำเนินการ
การจับคู่ Node สร้างอัตลักษณ์และความเชื่อถือ แต่ไม่ได้ใช้แทน
นโยบายการอนุมัติการดำเนินการ system.run ของ Node เอง
การยืนยันตัวตนด้วยข้อมูลลับร่วมกัน
การยืนยันตัวตนด้วยโทเค็น/รหัสผ่าน Gateway ที่ใช้ร่วมกันจะถือเป็นสิทธิ์เข้าถึงของผู้ปฏิบัติงาน
ที่เชื่อถือได้สำหรับ Gateway นั้น พื้นผิว HTTP ที่เข้ากันได้กับ OpenAI, /tools/invoke และ
ปลายทางประวัติเซสชัน HTTP จะคืนค่าชุดขอบเขตผู้ปฏิบัติงานเริ่มต้นทั้งหมดสำหรับ
การยืนยันตัวตนแบบ bearer ด้วยข้อมูลลับร่วมกัน แม้ว่าผู้เรียกจะส่งขอบเขตที่ประกาศไว้ให้แคบกว่าก็ตาม
โหมดที่มีข้อมูลระบุตัวตน เช่น การยืนยันตัวตนด้วยพร็อกซีที่เชื่อถือได้ หรือ none สำหรับทางเข้าส่วนตัว
ยังคงสามารถใช้ขอบเขตที่ประกาศไว้อย่างชัดเจนได้ ใช้ Gateway แยกกันเพื่อแบ่ง
ขอบเขตความเชื่อถืออย่างแท้จริง