RBAC (Role-Based Access Control) คือโมเดลควบคุมสิทธิ์โดยอิงจาก “บทบาท (Role)” แทนที่จะอิงจากตัวผู้ใช้โดยตรง
User → Role → Permission → Resource/Action
| องค์ประกอบ | อธิบาย |
|---|---|
| User | ผู้ใช้งานระบบ |
| Role | ตำแหน่ง/บทบาท เช่น Admin, HR, Employee |
| Permission | สิทธิ์ เช่น read:employee, edit:salary, approve:leave |
| Resource | สิ่งที่เข้าถึง เช่น Employee, Document, Report |
ตัวอย่างโมเดล RBAC (Base Table)
users ← รายชื่อผู้ใช้
roles ← บทบาท
permissions ← สิทธิ์การกระทำ
user_roles ← เชื่อม user ↔ role (many-to-many)
role_permissions ← เชื่อม role ↔ permission (many-to-many)
🧰 ตัวอย่าง Role
| Role | Description |
|---|---|
ADMIN | จัดการระบบทั้งหมด |
HR_MANAGER | ดูและแก้ไขข้อมูลพนักงาน |
EMPLOYEE | ดูโปรไฟล์ตัวเอง, ยื่นลา |
🔐 ตัวอย่าง Permission
| Resource | Action | Permission ID |
|---|---|---|
| employee | read | read:employee |
| employee | edit | edit:employee |
| leave_form | approve | approve:leave |
🛠 Best Practices ในการออกแบบ RBAC
| หัวข้อ | แนะนำ |
|---|---|
| ✅ แยก Role กับ Permission ชัดเจน | หลีกเลี่ยง hardcode |
| ✅ รองรับ multiple roles per user | เช่น user เป็นทั้ง HR + Approver |
| ✅ ใช้ Naming Convention ที่ชัด | เช่น read:employee, approve:leave |
| ✅ พิจารณาสร้าง “Role Template” | สำหรับ config ผ่าน UI |
| ✅ Audit Logging | เมื่อมีการเปลี่ยนสิทธิ์ ต้อง log |

ใส่ความเห็น