🛡️
ระบบสิทธิ์และ Role (RBAC)
ควบคุมว่าใครเข้าถึงอะไรได้ ระบบ RBAC สำหรับเว็บและแอป พร้อมตัวอย่างจริง
🔄 โฟลการทำงาน RBAC
📋 ขั้นตอนการทำงาน RBAC
1
👤ผู้ใช้
ส่ง HTTP request ไปยัง Endpoint ที่ Protected (เช่น GET /api/orders)
2
🔐Auth Middleware
ดึง JWT จาก Authorization header → ตรวจสอบ Signature → Decode payload
3
🎫Auth Middleware
ดึง user_id + role จาก JWT payload → แนบเข้า Request context
4
🛡️Permission Guard
เช็ค: Role นี้มีสิทธิ์เข้าถึง Resource + Action นี้ไหม?
5
🗄️Permission Guard
ค้นหา Role → สิทธิ์ใน DB/config (Cache ใน Redis เพื่อความเร็ว)
6
⚖️Permission Guard
ถ้า ALLOWED → ส่งต่อ Request ไป Controller ถ้า DENIED → คืน 403 Forbidden
7
🔒Controller
Filter ระดับข้อมูลเพิ่มเติม: WHERE owner_id = user.id (Row-level security)
8
🗄️Database
คืนเฉพาะข้อมูลที่ได้รับอนุญาต (ไม่คืนข้อมูลทั้งหมดโดยไม่กรอง)
9
✅Response
ส่ง Response ที่กรองแล้ว → Frontend ซ่อน UI ตาม Role ด้วย
📋 ตัวอย่าง Permission Matrix
| Role | products | orders | users | reports | settings |
|---|---|---|---|---|---|
| Super Admin | CRUD | CRUD | CRUD | CRUD | CRUD |
| Store Manager | CRUD | CRUD | อ่าน | อ่าน | อ่าน |
| พนักงาน | อ่าน/แก้ไข | อ่าน/แก้ไข | — | — | — |
| ลูกค้า | อ่าน | ของตัวเอง | — | — | โปรไฟล์ตัวเอง |
🧠 แนวคิดสำคัญในระบบสิทธิ์
🏷️
RBAC
Role-Based Access Control กำหนดสิทธิ์ให้ Role กำหนด Role ให้ User ง่าย Scale ได้ ตรวจสอบง่าย
🎯
ABAC
Attribute-Based Access Control ละเอียดกว่า RBAC ควบคุมตาม เวลา สถานที่ แผนก คุณสมบัติของ Resource
🔒
Row-Level Security
กรองข้อมูลระดับ Database ลูกค้าเห็นแค่ Order ของตัวเองแม้จะเรียก API เดียวกัน
📋
Permission Matrix
ตารางแมป Role → Resource → Action (CRUD) ตรวจสอบและอัปเดตได้ง่ายว่าใครทำอะไรได้
⚖️
Least Privilege
ให้สิทธิ์ผู้ใช้เท่าที่จำเป็นสำหรับงานของตัวเอง ลดความเสี่ยงจากข้อมูลรั่วไหล
📜
Audit Logging
บันทึกทุกการกระทำที่สำคัญ: ใครทำอะไร เมื่อไหร่ จากที่ไหน จำเป็นสำหรับ Compliance
ต้องการระบบสิทธิ์ที่ปลอดภัย? 🛡️
เราออกแบบระบบ RBAC พร้อม Role hierarchy, Row-level security และ Audit logging
← กลับหน้าเรียนติดต่อเรา