ACL (Access Control List) และ RBAC (Role-Based Access Control)

Byphunsanit

ACL (Access Control List) และ RBAC (Role-Based Access Control)

การเปรียบเทียบระหว่าง ACL (Access Control List) และ RBAC (Role-Based Access Control) คือการเปรียบเทียบระหว่าง “ความละเอียดเฉพาะจุด” กับ “ความง่ายในการจัดการภาพรวม” ครับ เพื่อให้เห็นภาพชัดเจนที่สุด


เปรียบเทียบด้วยสถานการณ์จำลอง (Analogy)

ACL เหมือน “Guest List งานแต่งงาน”

  1. ที่หน้าประตูงาน (Resource) จะมีรายชื่อคนถืออยู่
  2. รปภ. ต้องเช็คชื่อทีละคน: “นาย A เข้าได้”, “นาย B ห้ามเข้า”, “นางสาว C เข้าได้

ปัญหา: ถ้ามีงานแต่ง 10 ห้อง และนาย A ต้องเข้าได้ทุกห้อง คุณต้องไปเขียนชื่อนาย A ใส่กระดาษหน้าห้องทั้ง 10 ใบ

RBAC เหมือน “บัตรพนักงานห้อยคอ”:

  1. เราไม่ได้เช็คชื่อ แต่เช็ค “สีของสายคล้องคอ” (Role)
  2. กฎบอกว่า: “สายสีแดง เข้าห้อง Server ได้”, “สายสีเขียว เข้าได้แค่โรงอาหาร”

ข้อดี: ถ้านาย A ย้ายแผนก แค่เปลี่ยนสายคล้องคอจากเขียวเป็นแดง เขาจะเข้าห้อง Server ได้ทันทีโดยไม่ต้องไปแก้กลอนประตู


ตารางเปรียบเทียบเชิงเทคนิค (Comparison Matrix)

ACL (Access Control List)RBAC (Role-Based Access Control)
จุดโฟกัส (Focus)Object-Centric (ยึดติดกับวัตถุ/ไฟล์)Subject-Centric (ยึดติดกับคน/บทบาท)
วิธีการทำงานสิทธิ์ถูกฝังอยู่ที่ตัวไฟล์/โฟลเดอร์ (รายการแปะหน้าไฟล์)สิทธิ์ถูกรวมไว้ใน “บทบาท” แล้วเอาบทบาทไปสวมให้คน
ความละเอียด (Granularity)สูงมาก (กำหนดได้ถึงระดับ User รายคน ต่อ 1 ไฟล์)ปานกลาง-สูง (กำหนดตามกลุ่มหน้าที่)
การดูแลรักษา (Maintenance)ยาก เมื่อคนเยอะ (ต้องแก้ทีละไฟล์)ง่าย (แก้ที่ Role ทีเดียว มีผลกับทุกคนใน Role นั้น)
ความปลอดภัยเสี่ยงต่อ Human Error (ลืมลบสิทธิ์คนเก่า)ปลอดภัยกว่า (ใช้หลัก Least Privilege ได้ง่าย)
การใช้งานหลักFile System (NTFS, Linux), Network FirewallEnterprise Application (ERP, HR), Active Directory

เจาะลึกความแตกต่าง (Key Differences)

มุมมองการจัดการ (Management Perspective)

  • ACL: คุณต้องเดินไปที่ “สิ่งของ” (เช่น โฟลเดอร์ Secret_Data) แล้วถามว่า “มีใครบ้างที่เข้ามายุ่งกับแกได้?”
  • RBAC: คุณเดินไปที่ “คน” (เช่น นายสมชาย) แล้วถามว่า “คุณมีหน้าที่อะไร? อ๋อ เป็น Manager งั้นเอากุญแจดอกนี้ไป”

เมื่อมีการเปลี่ยนแปลง (Scalability)

  • สถานการณ์: บริษัทเปลี่ยนนโยบาย “ห้ามฝ่ายบัญชีเข้าถึง Facebook”
    • ACL: (Firewall): คุณต้องไปแก้กฎที่ Router ทุกตัว หรือแก้สิทธิ์ที่คอมพิวเตอร์ทุกคน
    • ถRBAC: คุณแค่ไปที่ Role “Accountant” แล้วลบสิทธิ์ “Access Social Network” ออก ทีเดียวจบ พนักงานบัญชี 100 คนมีผลทันที

ความยืดหยุ่น (Flexibility)

ACL ชนะเรื่องข้อยกเว้น: ถ้าคุณต้องการให้ “นาย ก. เข้าไฟล์นี้ได้เป็นกรณีพิเศษแค่คนเดียวในโลก” การใช้ ACL จะง่ายและตรงไปตรงมากว่า (ถ้าใช้ RBAC คุณอาจต้องสร้าง Role ใหม่เพื่อนาย ก. คนเดียว ซึ่งตลก)


แล้วควรใช้อันไหน? (Decision Guide)

เลือกใช้ ACL เมื่อ

  1. Low Level Security: กรอง Packet ใน Network (Router/Switch)
  2. Specific Exceptions: ต้องการกำหนดสิทธิ์ให้ไฟล์/โฟลเดอร์เฉพาะเจาะจงที่ User ทั่วไปเป็นเจ้าของ
  3. Small Scale: ระบบเล็กๆ มี User ไม่กี่คน

เลือกใช้ RBAC เมื่อ

  1. Organization Scale: มีพนักงานหลายคน มีการเข้า-ออก-ย้ายตำแหน่งบ่อย
  2. Application Development: ทำระบบ Login หลังบ้าน, ระบบ HR, ระบบ Inventory
  3. Complex System: ระบบ Cloud (AWS IAM, Azure) หรือ Kubernetes
  4. มี user เป็นกลุ่ม ๆ จำนวนมาก

ในโลกความจริง: “เรามักใช้ผสมกัน (Hybrid)”

ระบบปฏิบัติการ Windows หรือ Linux ที่เราใช้กันอยู่ จริงๆ แล้วใช้ Hybrid Approach ครับ

ตัวอย่าง: ใน Windows NTFS

  • ตัวระบบไฟล์ใช้ ACL (รายการแปะหน้าโฟลเดอร์)
  • แต่ในรายการ ACL นั้น เรามักจะไม่ใส่ชื่อ User (Mr.A) ตรงๆ แต่เราจะใส่ Security Group (ซึ่งทำหน้าที่เหมือน Role ใน RBAC) ลงไปแทน
  • เช่น: ใน ACL ของโฟลเดอร์ Finance จะเขียนว่า Allow: Group Accountants

การเปรียบเทียบระหว่าง ACL (Access Control List) และ RBAC (Role-Based Access Control) คือการเปรียบเทียบระหว่าง “ความละเอียดเฉพาะจุด” กับ “ความง่ายในการจัดการภาพรวม” ครับ

เพื่อให้เห็นภาพชัดเจนที่สุด ผมขอเริ่มด้วยการเปรียบเทียบแบบเห็นภาพง่ายๆ ก่อนเข้าสู่ตารางเทคนิคครับ


1. เปรียบเทียบด้วยสถานการณ์จำลอง (Analogy)

  • ACL เหมือน “Guest List งานแต่งงาน”:
    • ที่หน้าประตูงาน (Resource) จะมีรายชื่อคนถืออยู่
    • รปภ. ต้องเช็คชื่อทีละคน: “นาย A เข้าได้”, “นาย B ห้ามเข้า”, “นางสาว C เข้าได้”
    • ปัญหา: ถ้ามีงานแต่ง 10 ห้อง และนาย A ต้องเข้าได้ทุกห้อง คุณต้องไปเขียนชื่อนาย A ใส่กระดาษหน้าห้องทั้ง 10 ใบ
  • RBAC เหมือน “บัตรพนักงานห้อยคอ”:
    • เราไม่ได้เช็คชื่อ แต่เช็ค “สีของสายคล้องคอ” (Role)
    • กฎบอกว่า: “สายสีแดง เข้าห้อง Server ได้”, “สายสีเขียว เข้าได้แค่โรงอาหาร”
    • ข้อดี: ถ้านาย A ย้ายแผนก แค่เปลี่ยนสายคล้องคอจากเขียวเป็นแดง เขาจะเข้าห้อง Server ได้ทันทีโดยไม่ต้องไปแก้กลอนประตู

2. ตารางเปรียบเทียบเชิงเทคนิค (Comparison Matrix)

หัวข้อเปรียบเทียบACL (Access Control List)RBAC (Role-Based Access Control)
จุดโฟกัส (Focus)Object-Centric (ยึดติดกับวัตถุ/ไฟล์)Subject-Centric (ยึดติดกับคน/บทบาท)
วิธีการทำงานสิทธิ์ถูกฝังอยู่ที่ตัวไฟล์/โฟลเดอร์ (รายการแปะหน้าไฟล์)สิทธิ์ถูกรวมไว้ใน “บทบาท” แล้วเอาบทบาทไปสวมให้คน
ความละเอียด (Granularity)สูงมาก (กำหนดได้ถึงระดับ User รายคน ต่อ 1 ไฟล์)ปานกลาง-สูง (กำหนดตามกลุ่มหน้าที่)
การดูแลรักษา (Maintenance)ยาก เมื่อคนเยอะ (ต้องแก้ทีละไฟล์)ง่าย (แก้ที่ Role ทีเดียว มีผลกับทุกคนใน Role นั้น)
ความปลอดภัยเสี่ยงต่อ Human Error (ลืมลบสิทธิ์คนเก่า)ปลอดภัยกว่า (ใช้หลัก Least Privilege ได้ง่าย)
การใช้งานหลักFile System (NTFS, Linux), Network FirewallEnterprise Application (ERP, HR), Active Directory

3. เจาะลึกความแตกต่าง (Key Differences)

A. มุมมองการจัดการ (Management Perspective)

  • ACL: คุณต้องเดินไปที่ “สิ่งของ” (เช่น โฟลเดอร์ Secret_Data) แล้วถามว่า “มีใครบ้างที่เข้ามายุ่งกับแกได้?”
  • RBAC: คุณเดินไปที่ “คน” (เช่น นายสมชาย) แล้วถามว่า “คุณมีหน้าที่อะไร? อ๋อ เป็น Manager งั้นเอากุญแจดอกนี้ไป”

B. เมื่อมีการเปลี่ยนแปลง (Scalability)

นี่คือจุดตายของ ACL ครับ

  • สถานการณ์: บริษัทเปลี่ยนนโยบาย “ห้ามฝ่ายบัญชีเข้าถึง Facebook”
  • ถ้าใช้ ACL (Firewall): คุณต้องไปแก้กฎที่ Router ทุกตัว หรือแก้สิทธิ์ที่คอมพิวเตอร์ทุกคน
  • ถ้าใช้ RBAC: คุณแค่ไปที่ Role “Accountant” แล้วลบสิทธิ์ “Access Social Network” ออก ทีเดียวจบ พนักงานบัญชี 100 คนมีผลทันที

C. ความยืดหยุ่น (Flexibility)

  • ACL ชนะเรื่องข้อยกเว้น: ถ้าคุณต้องการให้ “นาย ก. เข้าไฟล์นี้ได้เป็นกรณีพิเศษแค่คนเดียวในโลก” การใช้ ACL จะง่ายและตรงไปตรงมากว่า (ถ้าใช้ RBAC คุณอาจต้องสร้าง Role ใหม่เพื่อนาย ก. คนเดียว ซึ่งตลก)

4. แล้วควรใช้อันไหน? (Decision Guide)

เลือกใช้ ACL เมื่อ:

  1. Low Level Security: กรอง Packet ใน Network (Router/Switch)
  2. Specific Exceptions: ต้องการกำหนดสิทธิ์ให้ไฟล์/โฟลเดอร์เฉพาะเจาะจงที่ User ทั่วไปเป็นเจ้าของ
  3. Small Scale: ระบบเล็กๆ มี User ไม่กี่คน

เลือกใช้ RBAC เมื่อ:

  1. Organization Scale: มีพนักงานหลายคน มีการเข้า-ออก-ย้ายตำแหน่งบ่อย
  2. Application Development: ทำระบบ Login หลังบ้าน, ระบบ HR, ระบบ Inventory
  3. Complex System: ระบบ Cloud (AWS IAM, Azure) หรือ Kubernetes

5. ในโลกความจริง: “เรามักใช้ผสมกัน (Hybrid)”

ระบบปฏิบัติการ Windows หรือ Linux ที่เราใช้กันอยู่ จริงๆ แล้วใช้ Hybrid Approach ครับ

  • ตัวอย่าง: ใน Windows NTFS
    • ตัวระบบไฟล์ใช้ ACL (รายการแปะหน้าโฟลเดอร์)
    • แต่ในรายการ ACL นั้น เรามักจะไม่ใส่ชื่อ User (Mr.A) ตรงๆ แต่เราจะใส่ Security Group (ซึ่งทำหน้าที่เหมือน Role ใน RBAC) ลงไปแทน
    • เช่น: ใน ACL ของโฟลเดอร์ Finance จะเขียนว่า Allow: Group Accountants

สรุป

  • ACL คือกลไกพื้นฐาน (The Mechanism)
  • RBAC คือนโยบายการบริหารจัดการ (The Strategy)
  • การใช้ Group ใน ACL คือวิธีแปลง ACL ให้มีความสามารถคล้าย RBAC นั่นเองครับ

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

About the author

phunsanit administrator