Tag Archive Access Control List

Byphunsanit

ACL: Access Control List

ในโลกของความปลอดภัยทางไซเบอร์ (Cybersecurity) และการบริหารจัดการระบบ คำว่า ACL หรือ Access Control List เป็นพื้นฐานที่สำคัญที่สุดอย่างหนึ่ง เปรียบเสมือน “รายชื่อแขก VIP” หน้าประตูผับ หรือ “ป้อมยาม” หน้าหมู่บ้าน ที่ทำหน้าที่คัดกรองว่า ใคร (Who) มีสิทธิ์ทำ อะไร (What) กับ สิ่งไหน (Where) บ้าง


ACL คืออะไร? (Concept)

Access Control List (ACL) คือ รายการของกฎ (Rules) หรือสิทธิ์ (Permissions) ที่ถูกผูกติดอยู่กับวัตถุ (Object) บางอย่าง เช่น ไฟล์, โฟลเดอร์, หรืออินเทอร์เฟซของเราเตอร์ เพื่อบอกระบบว่าผู้ใช้งานหรือกระบวนการ (Process) ใด ได้รับอนุญาตหรือถูกปฏิเสธไม่ให้เข้าถึง

องค์ประกอบหลักของ ACL มักประกอบด้วย

  1. Subject (ผู้กระทำ): User ID, Group ID, หรือ IP Address
  2. Object (สิ่งที่ถูกกระทำ): ไฟล์, โฟลเดอร์, หรือ Network Packet
  3. Operation (การกระทำ): Read (อ่าน), Write (เขียน), Execute (รัน), Deny (ปฏิเสธ)

หลักการทำงานของ ACL (The Logic)

ACL ถูกใช้งานหลักๆ ใน 3 บริบท คือ ระบบไฟล์ (File System), ระบบเครือข่าย (Network) และในโปรแกรม (Program) จะคล้ายกันคือการตรวจสอบแบบ Top-Down (จากบนลงล่าง) ดังนี้

  1. Sequential Check: ระบบจะอ่านกฎบรรทัดแรกสุดก่อน
  2. First Match Wins: เมื่อเจอกฎที่ “ตรง” กับเงื่อนไข (Match) ระบบจะทำตามคำสั่งนั้นทันที (อนุญาตหรือบล็อก) และ หยุด ตรวจสอบกฎบรรทัดถัดไป
  3. Implicit Deny (กฎที่มองไม่เห็น): หากตรวจสอบจนจบทุกบรรทัดแล้วไม่ตรงกับกฎข้อไหนเลย ระบบส่วนใหญ่จะมีกฎล่องหนอยู่บรรทัดสุดท้ายว่า “Deny All” (ไม่อนุญาตทั้งหมด) เพื่อความปลอดภัยสูงสุด

ตัวอย่างการใช้ ACL

  • Filesystem ACLs (ในระบบปฏิบัติการ)
    เป็น ACL ที่กำหนดสิทธิ์การเข้าถึงไฟล์และโฟลเดอร์ นอกเหนือจากสิทธิ์พื้นฐาน (Owner/Group/Others) ที่เราคุ้นเคย
    • ตัวอย่าง (Windows/NTFS): เวลาคลิกขวาที่ไฟล์ > Properties > Security รายชื่อ Users ที่เห็นพร้อมติ๊กถูกว่า Read/Write นั่นคือ ACL ครับ
    • ตัวอย่าง (Linux): ปกติเราใช้ chmod กำหนดสิทธิ์แบบกว้างๆ แต่ถ้าเราต้องการให้ User A อ่านไฟล์ได้คนเดียว โดยที่ User B ในกลุ่มเดียวกันทำไม่ได้ เราต้องใช้ ACL เข้ามาช่วย (คำสั่ง setfacl)
  • Networking ACLs (ในระบบเครือข่าย)
    เป็น ACL ที่อยู่บน Router, Firewall หรือ Switch เพื่อกรอง Traffic ที่วิ่งผ่าน
    • หน้าที่: อนุญาต (Allow) หรือ ปฏิเสธ (Deny) ข้อมูลที่วิ่งเข้า-ออก โดยดูจาก Source IP, Destination IP, และ Port
    • การใช้งาน: เช่น การบล็อกไม่ให้แผนกบัญชีเข้า Facebook หรือ การอนุญาตให้เฉพาะ IP ของออฟฟิศ (VPN) เข้าถึง Server ฐานข้อมูลได้
  • program
    • ให้ user “Admin” เข้าใช้เมนู “Add User” ได้ user เดียวเท่านั้น

ข้อดีและข้อจำกัดของ ACL

ข้อดีข้อจำกัด
Performance ดี: ทำงานได้เร็วกว่าการใช้ Firewall แบบ Deep Packet Inspection (DPI)Stateless: ACL ส่วนใหญ่ (โดยเฉพาะบน Router) จะไม่จำสถานะการเชื่อมต่อ (Stateless) ทำให้กรองการโจมตีซับซ้อนไม่ได้
ยืดหยุ่น: ปรับแต่งได้ตามความต้องการขององค์กรจัดการยาก: หากมีกฎเยอะเกินไป จะดูแลลำบากและแก้ไขผิดพลาดได้ง่าย
Security Layer: เป็นด่านแรกในการกรอง Traffic ที่ไม่ต้องการทิ้งไปก่อนเข้า ServerIP Spoofing: แฮกเกอร์สามารถปลอม IP เพื่อหลอก ACL ได้ (ถ้าไม่มีมาตรการอื่นรองรับ)
จำเป็นต้องระบุ Subject (ผู้กระทำ), Object (สิ่งที่ถูกกระทำ), Operation (การกระทำ) จำนวนมาก เช่น
– ถ้าแผนก บัญชีมีอยู่ 30 คน Subject (ผู้กระทำ)
– สามารถเข้า folder บัญชีรายวัน Object (สิ่งที่ถูกกระทำ)
– ไปอ่านและเขียน Operation (การกระทำ)

การบันทึกข้อมูลจะเท่ากับ
Subject (ผู้กระทำ) x Subject (ผู้กระทำ) x Operation (การกระทำ) หรือ
30 (คน) x 1 (folder) x 2 (อ่าน + เขียน ) = 60 rows

บทสรุป: Best Practices ในการทำ ACL

เพื่อให้การใช้งาน ACL มีประสิทธิภาพสูงสุด ควรจำกฎทองดังนี้

  1. Specific to General: วางกฎที่ “เฉพาะเจาะจง” ไว้บนสุด และกฎที่ “กว้าง” (General) ไว้ล่างสุด
  2. Order Matters (ลำดับสำคัญมาก): ระบบจะอ่าน ACL จาก บนลงล่าง (Top-Down) และจะหยุดทันทีที่เจอกฎที่ตรง (Match)
    • ผิด: Deny All ไว้บรรทัดแรก -> ไม่มีใครเข้าได้เลย
    • ถูก: Allow เฉพาะที่ต้องการก่อน -> แล้วค่อย Deny All ปิดท้าย
  3. Document Rules: ควรเขียน Comment กำกับเสมอว่ากฎบรรทัดนี้มีไว้เพื่ออะไร (เช่น “Allow HR Access to Payroll Server”)
  4. Log Denied Traffic: ควรเปิด Log สำหรับ Traffic ที่ถูกปฏิเสธ เพื่อใช้ตรวจสอบการโจมตีหรือการตั้งค่าผิดพลาด
  5. Implicit Deny (ปฏิเสธโดยปริยาย): จำไว้เสมอว่า “ถ้าไม่อนุญาต แปลว่าไม่อนุญาต”
  6. Principle of Least Privilege: ให้สิทธิ์เท่าที่จำเป็นเท่านั้น อย่าให้สิทธิ์ Full Control หรือ Any Any หากไม่จำเป็น เพื่อลดความเสียหายหาก User นั้นถูกแฮก

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