On this page
Permission แบบละเอียด
อ้างอิง Source of Truth: core-api/docs/contracts/klynx-phibek-permission-administration.md
หลักคิดก่อนตั้งสิทธิ์
สิทธิ์ Klynx มีหลายชั้นและต้องผ่านทุกชั้นที่เกี่ยวข้อง:
- ผู้ใช้ login สำเร็จและเลือก Active Organization ถูกต้อง
- License เปิด feature นั้นให้กับองค์กร
- Menu Permission ทำให้เห็น/เข้าเมนู
- Resource Permission จำกัดกล้อง, Resource Group, KControl หรือ Edge ที่เห็น
- Backend ตรวจสิทธิ์ซ้ำแม้ผู้ใช้พิมพ์ URL โดยตรง
การซ่อนเมนูไม่ใช่ security boundary และการเห็นเมนูไม่ได้แปลว่าจะเห็นอุปกรณ์ทุกตัว
หน้า Menu Permission

- รายการ Permission Profile
- ชื่อ สถานะ และคำอธิบาย Profile
- เลือก OU และกำหนดขอบเขตสมาชิก
- เลือกเมนูที่อนุญาต
- ตรวจ preview แล้วบันทึก
ความหมายของค่า
| ค่า | ความหมาย | แนวทาง |
|---|---|---|
| ชื่อ Profile | ชื่อสำหรับผู้ดูแล ไม่ใช่ชื่อ role ใน Keycloak | ตั้งตามทีม+ขอบเขต เช่น Operator ชั้น 2 — Menu |
| สถานะ | เปิด/ปิด contribution ของ profile นี้ | ปิดเพื่อหยุดชั่วคราว; ตรวจ profile อื่นด้วย |
| Org Unit | กลุ่มผู้รับสิทธิ์ | เลือก OU ที่เล็กที่สุดตาม least privilege |
| รวมหน่วยงานย่อย | ขยายจาก OU ที่เลือกลงไปยังลูกทั้งหมด | เปิดเมื่อโครงสร้างลูกควรรับสิทธิ์เหมือนกันจริง |
| สมาชิกทั้งหมด | ทุก member ที่อยู่ใน OU scope | เหมาะกับ policy ระดับทีม |
| เลือกสมาชิก | whitelist เฉพาะสมาชิกใน OU นั้น | ใช้เมื่อคนใน OU ทำหน้าที่ต่างกัน |
| ยกเว้นสมาชิก | blacklist สมาชิกบางราย | ใช้เป็นข้อยกเว้น ไม่ควรแทนการออกแบบ OU |
| ตัดสิทธิ์ OU บรรพบุรุษ | ป้องกันสิทธิ์ inherited จาก OU ชั้นบนทั้งก้อน | ตรวจ preview ทุกครั้งเพราะผลกระทบกว้าง |
| เมนู | capability ที่ปรากฏใน navigation/effectiveAccess | เปิดเฉพาะเมนูที่จำเป็นกับงาน |
หน้า Resource Permission

- รายการ Resource Profile
- Subject: OU และสมาชิก
- Resource Group และ child scope
- อุปกรณ์ direct grant และ relation
- Preview ผลสุทธิและบันทึก
| ค่า | ความหมาย | ผลที่ต้องตรวจ |
|---|---|---|
| Resource Group | กลุ่มอุปกรณ์หลักที่ grant | กล้อง/อุปกรณ์ต้องเป็นสมาชิก RG นั้นจริง |
| รวม Resource Group ย่อย | รวมอุปกรณ์ใน descendant RG | ระวังเพิ่มอุปกรณ์ใหม่ในอนาคตแล้วติดสิทธิ์อัตโนมัติ |
| Device scope = all | รวมอุปกรณ์ที่ resolver นับว่าอยู่ในขอบเขตกลุ่ม พร้อม direct grant ที่รองรับ | เหมาะกับทีมดูแลพื้นที่ทั้งกลุ่ม |
| Device scope = selected | จำกัดอุปกรณ์ตามรายการที่เลือก/องค์ประกอบของกลุ่ม | ใช้เมื่อสิทธิ์ต้องละเอียดระดับเครื่อง |
| Camera/KControl/Edge | direct resource grant | ไม่แทน Menu Permission ของหน้าที่ใช้ resource นั้น |
| Relation | วิธีที่ทำกับ resource เช่น view/edit/delete ตาม UI ที่เปิดให้เลือก | ให้ relation ต่ำสุดที่ทำงานได้ |
| Preview | ผลรวม include/exclude ก่อน save | ใช้ตรวจความผิดพลาด แต่ต้อง smoke ด้วย member จริงอีกครั้ง |
ตัวอย่าง Least Privilege
ต้องการให้ operator-a ดูกล้องชั้น 2 และใช้ Video Wall แต่ห้ามแก้กล้อง:
- Menu Profile: OU
ชั้น 2, เลือกเฉพาะoperator-a, เปิดMapและVideo Wall - Resource Profile: OU เดียวกัน/สมาชิกเดียวกัน, RG
กล้องชั้น 2, relationview - ไม่เปิดเมนู Device Settings และไม่ให้ relation edit/delete
- login เป็น
operator-a: ตรวจ sidebar, รายการกล้อง, Video Wall และลอง URL หน้าแก้ไขโดยตรงว่าถูก deny
วิธีถอนสิทธิ์อย่างปลอดภัย
- ค้นทุก active profile ที่อาจ grant ผู้ใช้หรือ resource เดียวกัน
- เอาสมาชิก/resource ออกจากทุก profile ที่เกี่ยวข้อง หรือปิด profile เมื่อทั้ง profile ไม่ใช้แล้ว
- บันทึกและ refresh; โดยทั่วไปมีผลรอบ access refresh ถัดไป โดยมี cache backstop ประมาณ 30 วินาที
- ทดสอบด้วย session ของ member ทั้งเมนู, direct URL, list และ stream
- ถ้ายังเห็นข้อมูล ให้ตรวจ profile อื่นก่อนสรุปว่า cache ผิด
เช็กลิสต์ก่อนส่งมอบ
- เลือก Active Organization ถูกต้อง
- License เปิด feature
- Menu Profile active และ subject ถูกคน
- Resource Profile active และ scope ถูกกลุ่ม/เครื่อง
- Preview ไม่มีสมาชิกหรืออุปกรณ์เกิน
- บัญชี member จริงเห็นเฉพาะเมนูและ resource ที่ตั้งใจ
- URL/stream ที่อยู่นอก scope ตอบ deny
- ไม่มี token, password หรือข้อมูลลับในชื่อ/คำอธิบาย profile