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

Byphunsanit

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 (บทบาท) เข้ามา

  • Permission: เรากำหนดก่อนว่าทำอะไรได้บ้าง (เช่น Read, Write, Delete, Approve)
  • Role: เราเอากระเป๋ามาใบหนึ่ง เขียนหน้ากระเป๋าว่า “Accounts” แล้วเอา Permission ที่จำเป็นใส่ลงไปในกระเป๋านั้น
  • User: เมื่อมีพนักงานใหม่เข้ามา เราแค่ยื่นกระเป๋า “Accounts” ให้เขาถือ

ผลลัพธ์:

  • นาย C เป็น Accounts -> นาย C ได้สิทธิ์ทั้งหมดในกระเป๋า Account
  • ถ้านาย A ย้ายแผนก -> ก็แค่ดึงกระเป๋า Accounts คืน แล้วยื่นกระเป๋า “Sale” ให้แทน (จบในคลิกเดียว)

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

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

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

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

  • ถ้าไม่มี RBAC: Admin ต้องไปไล่ติ๊กถูกสิทธิ์ Support ออกทีละอัน แล้วไปไล่ติ๊กสิทธิ์ Inventory เข้าใหม่
  • ถ้าใช้ RBAC: Admin แค่เปลี่ยน Role ของสมชายจาก Group: Support ไปเป็น Group: Inventory จบงานทันที

ข้อดีและข้อเสียของ 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 เฟ้อครับ


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

About the author

phunsanit administrator