PlusMagi's Blog By Pitt Phunsanit Programming ACL (Access Control List)และ RBAC (Role-Based Access Control )

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 นั่นเองครับ

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

ป้ายกำกับ:, , ,