Site icon PlusMagi's Blog By Pitt Phunsanit

RBAC: (Role-Based Access Control) จัดการสิทธิ์แบบมือโปร ลดความปวดหัวของ Admin

หากคุณเคยเป็น Admin ที่ต้องคอยมานั่ง Add User ทีละคนใส่ใน ACL ของทุกโฟลเดอร์ หรือต้องคอยแก้สิทธิ์ให้พนักงานทีละคนเมื่อมีการเลื่อนตำแหน่ง คุณจะพบว่ามันคือนรกของการจัดการ RBAC หรือ Role-Based Access Control ถูกคิดค้นมาเพื่อแก้ปัญหานี้ โดยเปลี่ยนวิธีการมอง “สิทธิ์” ใหม่ ให้ผูกกับ “บทบาทหน้าที่” แทนตัวบุคคล


ปัญหาของระบบเดิม (ทำไม ACL ถึงไม่พอ?)

ในระบบแบบเก่า (Discretionary Access Control หรือ ACL แบบพื้นฐาน) เรามักจะมอบสิทธิ์แบบ:

“นาย A สามารถอ่านไฟล์บัญชีได้”

สมมติวันหนึ่งนาย A ลาออก และนาย B มาแทน คุณต้องไปไล่ลบสิทธิ์นาย A ออกจากทุกที่ แล้วใส่นาย B เข้าไปแทน ถ้ามีไฟล์เป็นร้อยเป็นพันไฟล์ ความผิดพลาดจะเกิดขึ้นง่ายมาก (Human Error)

“นาย C, D สามารถอ่านไฟล์บัญชีได้ เหมือน B”

ถ้าคนที่มาเพิ่มในแผนกเดียวกัน ทำงาน เหมือนนาย B แปลว่าต้องไล่เพิ่มสิทธิ์ให้ C, D เหมือนกับ B จึงจะสามารถทำงานได้เหมือน B ที่นี้ถ้าแผนกนี้ เพิ่มเป็น 30 คน ก็ …


หลักการทำงานของ RBAC (The Concept)

RBAC แก้ปัญหาด้วยการเพิ่ม “ตัวกลาง” ที่เรียกว่า Role (บทบาท) เข้ามา

ผลลัพธ์:


ตัวอย่างการใช้งานจริง (Use Case)

ลองนึกภาพระบบหลังบ้านของบริษัท E-commerce

Role (บทบาท)Permissions (สิทธิ์ที่ทำได้)
Customer Supportดูข้อมูลลูกค้า, ดูประวัติคำสั่งซื้อ (ห้ามลบ, ห้ามแก้ราคา)
Inventory Staffแก้ไขจำนวนสินค้าในสต็อก, เพิ่มสินค้าใหม่ (ห้ามดูข้อมูลบัตรเครดิตลูกค้า)
Super Adminทำได้ทุกอย่าง (Full Access)

สถานการณ์: พนักงานชื่อ “สมชาย” เดิมอยู่ฝ่าย Support ย้ายไปคุมสต็อกสินค้า


ข้อดีและข้อเสียของ RBAC

ข้อดี (Pros)

  1. ลดความซ้ำซ้อน: ไม่ต้องกำหนดสิทธิ์ซ้ำๆ ให้กับ User ทุกคน
  2. ความปลอดภัยสูงขึ้น: ใช้หลักการ Least Privilege ได้ง่าย (ให้สิทธิ์เท่าที่ Role นั้นจำเป็นต้องใช้)
  3. Onboarding เร็ว: พนักงานใหม่มา แค่ Assign Role ก็เริ่มงานได้เลย

ข้อเสีย/ความท้าทาย (Cons)

  1. Role Explosion: หากออกแบบไม่ดี อาจเกิด Role งอกขึ้นมาเยอะเกินไป เช่น Manager_Level1, Manager_IT, Manager_HR_Copy จน Admin งงเอง
  2. ความยืดหยุ่นน้อยกว่าในกรณีพิเศษ: ถ้าอยากให้ User คนหนึ่งทำอะไรพิเศษนอกเหนือจาก Role ปกติ อาจต้องสร้าง Role ใหม่ขึ้นมาเฉพาะเพื่อเขาคนเดียว

บทสรุป: เริ่มต้นออกแบบ RBAC อย่างไร?

หากคุณกำลังจะทำระบบ RBAC (ไม่ว่าจะ Config ใน Cloud หรือเขียนโปรแกรมเอง) ให้เริ่มจาก 3 ขั้นตอนนี้:

  1. List Resources: ในระบบเรามีอะไรบ้าง? (เช่น รายงานการเงิน, ข้อมูลลูกค้า, ปุ่มลบ User)
  2. Define Roles: ในองค์กรมีตำแหน่งอะไรบ้าง? (Admin, Editor, Viewer)
  3. Matrix Mapping: ตีตารางจับคู่เลยว่า Role ไหน ทำอะไรกับ Resource ไหนได้บ้าง

คำแนะนำ: อย่าเริ่มจากสร้าง Role ให้เยอะที่สุด แต่ให้เริ่มจาก “Role พื้นฐาน” ก่อน แล้วค่อยๆ เพิ่มเมื่อจำเป็น เพื่อป้องกันปัญหา Role เฟ้อครับ


อ่านเพิ่มเติม

Exit mobile version