LDAP (Lightweight Directory Access Protocol)

LDAP (Lightweight Directory Access Protocol)

   LDAP (นิยมอ่านว่า "แอล-แด็บ") เป็น Protocol ที่พัฒนามาจาก Protocol X.500 ซึ่งใช้ในการเข้าถึง และ Update ข้อมูลของ Directory ซึ่ง Directory ในทาง Computer ที่จริงก็อาจเรียกได้ว่าเป็น Database แบบพิเศษ หรือ Data Repository ที่บรรจุรายละเอียดของ Object ต่างๆ เช่น Users, Application, Files, Printer และอื่นๆ รวมทั้ง Security Information ของ Object เหล่านี้ด้วย โดยข้อแตกต่างของ Directory กับ Database ปกติ ได้แก่

  1. Operation: ใน Directory จะเน้นที่การ Access ข้อมูล หรือ อ่านข้อมูลมากกว่า Update หรือ เขียนข้อมูล ในขณะที่ Database ทั่วไปจะเน้นการ Update มากกว่า
  2. Transaction: ใน Database จะรองรับการทำ Transaction หรือการ Update ข้อมูลสองจุดที่ต้องสอดคล้องกัน แบบ All-or-nothing เช่น การโอนเงินจากบัญชีหนึ่ง ไปอีกบัญชีหนึ่ง ที่ต้องการความสมบูรณ์ทั้ง 2 ฝั่ง หรือไม่ก็ไม่ต้องทำเลย ในขณะที่ Directory ที่เน้นการอ่านอย่างเดียว อาจจะไม่ต้องการความสอดคล้องกันของข้อมูลมากนัก เช่น เมื่อมีการย้ายที่อยู่ระหว่างคน 2 คน ก็ต้องมีการปรับเปลี่ยนเบอร์ติดต่อของ 2 คนนั้น ซึ่งตรงนี้อาจจะไม่จำเป็นต้องทำทันที อย่างไรก็ตาม Feature นี้อาจจะมีการผนวกเข้ากับ LDAP Product ใหม่ๆ ในอนาคตก็ได้
  3. Data Accuracy: Directory อาจจะมีข้อจำกัดในการจัดเก็บข้อมูลที่ไม่สมบูรณ์ เช่น มีแต่ชื่อ ไม่มีที่อยู่ แต่อย่างไรก็ตาม เราสามารถ Configure คุณสมบัติเหล่านี้ได้ในบาง Directory Service
  4. Query: Directory ไม่ Support Query String (SQL, Structured Query Language)

   อย่างไรก็ตามถึงแม้ Directory จะมีคุณสมบัติด้อยกว่า Database หลายประการ แต่เนื่องจาก Protocol ที่ใช้ในการเข้าถึง Directory เช่น LDAP มีความเร็วในการเข้าถึงข้อมูลสูง และก็ทำให้ Application ที่ทำงานบน Protocol เหล่านี้สามารถเข้าถึงข้อมูลอย่างรวดเร็ว ทำให้ระบบ Directory เป็นที่ยอมรับ และนำมาใช้งานทั่วไป

   นอกจากประโยชน์ในการค้นหาข้อมูลได้อย่างรวดเร็วแล้ว Directory ยังเป็นโครงสร้างข้อมูลที่แสดงให้ User เห็นข้อมูลทั้งหมดได้จากมุมมองเดียว (Single Logical View) แม้ว่าแท้จริงแล้ว ข้อมูลเหล่านั้นอาจถูกเก็บแยกกันอยู่อย่างกระจัดกระจายตาม Host ต่างๆ บน Distributed System ซึ่งข้อดีต่างๆ เหล่านี้ ทำให้มีการพัฒนา Application ที่ใช้ Directory Service ออกมามากมาย และ LDAP ก็คือหนึ่งในมาตรฐานที่ใช้จัดการ การรับส่งข้อมูลระหว่าง Application Server ที่เก็บ Directory เหล่านี้ กับ Client Application ที่เป็นฝ่ายเรียกดูข้อมูลจาก Directory

   อีกหนึ่งสาเหตุที่จำเป็นต้องมีมาตรฐานในการเข้าถึงข้อมูลใน Directory นั้นก็เพื่อให้การพัฒนา Application ที่ใช้ติดต่อกับ Directory Server นั้นมีความยืดหยุ่นขึ้น โดย Developer สามารถเรียกใช้ API (Application Programming Interface) เพื่อติดต่อกับ Directory Service ได้ โดยไม่ต้องทราบวิธีการเข้าถึงโดยละเอียด เช่น โครงสร้างของ Directory หรือ ชนิดของข้อมูล (Data Type) ภายใน หรือไม่จำเป็นต้องปรับแก้ Application ใหม่หากมีความต้องการ Data Type ใหม่ๆ เป็นต้น

   นอกเหนือจากที่กล่าวมาข้างต้นแล้ว การมีมาตรฐานเดียวกัน ทำให้ผู้ผลิต Application และ Network Device ที่รองรับการใช้งาน Directory Service มีระเบียบวิธีที่ชัดเจนเป็นกลาง ทำให้การติดต่อระหว่าง Application จากต่างผู้ผลิต หรือ ต่าง Platform นั้นเป็นไปได้อย่างรวดเร็ว ถูกต้อง และปลอดภัย โดยไม่ต้องทราบข้อมูลที่ใช้ในการติดต่อ เช่น Platform ที่ใช้, Host Name หรือ IP address เช่นเดียวกับการที่เราต้องมี TCI/IP, HTTP, FTP, RPC หรือ ORB เป็นมาตรฐานที่ใช้อยู่ทั่วโลก

   LDAP เป็นมาตรฐานที่ได้รับการยอมรับอย่างกว้างขวาง และมี Application Vendor อยู่หลายราย อาทิ OpenLDAP, IBM, Oracle, Microsoft ซึ่ง Product ที่ได้รับความนิยมก็ได้แก่ Slapd ของ University of Michigan และ Openldap, Directory Server ของ Netscape, Active Directory (AD) ของ Microsoft, Novell Directory Services (NDS) ของ Novell, Sun Directory Services (SDS) ของ Sun และ Internet Directory Server (IDS) ของ Lucent

   LDAP ได้รับการออกแบบมาให้อยู่บน TCP/IP Layer ที่มีเพียง 4 Layer ทำให้มีความต้องการ Resource น้อยกว่า DAP ของมาตรฐาน X.500 อย่างไรก็ตาม หากมีความต้องการติดต่อกันระหว่าง LDAP Client กับ X.500 Server จำเป็นจะต้องมีการติดต่อผ่าน Gateway ที่เรียกว่า LDAP Server

   LDAP Server จะต้องมีความเข้าใจทั้ง TCP/IP และ OSI Model ในขณะที่ตัว LDAP Client ไม่จำเป็นต้องทำความเข้าใจกับ OSI Layer และไม่ต้องประมวลผลตาม DAP ที่มีความซับซ้อน และ Overhead สูง

   สำหรับระบบที่ไม่มีการใช้ X.500 ก็สามารถมีเพียง LDAP Client กับ LDAP Server ซึ่งเรียกว่า LDAP stand-alone server

   LDAP Directory มีการจัดโครงสร้างแบบลำดับชั้น (Hierarchical) โดยข้อมูลจะถูกบรรจุอยู่ใน Entries ซึ่งแต่ละ Entry จะประกอบด้วย Attribute ในรูปของ = โดย Type จะถูกกำหนดไว้ด้วย Object Identifier (OID) ส่วน Value ก็จะมี Syntax ที่ระบุไว้ชัดเจน




   Entry จะถูกจัดไว้เป็นลำดับชั้นด้วย Distinguished Name (DN) โดย Entry ใดๆ ที่อยู่ใต้ Entry อื่น จะมี DN ของ Entry อื่นเป็น Suffix (ข้อความที่ตามหลัง) Entry นั้น

   Schema ของ Directory จะระบุ DN และระบุว่า แต่ละ Entry จะประกอบไปด้วย Attribute ใดบ้าง โดยกำหนด Schema จะกำหนดข้อมูลเหล่านี้ไว้ใน Object Class ซึ่งได้แก่ List ของ Mandatory กับ Optional Attribute, วิธีการเปรียบเทียบ Attribute, ชนิดและขนาดของข้อมูลที่อนุญาต ซึ่งทุกๆ Entry จะต้องเชื่อโยงไว้กับ Object Class หนึ่ง Class รายละเอียดเพิ่มเติมของ Schema File มีอยู่ในหัวข้อ LDAP Schema

   Attribute ส่วนใหญ่จะมีการใช้ตัวอักษรย่อระบุ Type ซึ่งได้แก่ uid = User id, cn = Common Name, sn = Surname, l = Location, ou = Organizational Unit, o = Organization, dc = Domain Component, st = State, c = Country, etc.


หน้าที่การทำงานของ Directory Server ใน LDAP

   Directory Server ในโปรโตคอล LDAP นี้จะมีระบบการทำงานที่เป็นการบริหารงานจากส่วนกลาง ในส่วนกลางนี้จะมีการแบ่งหน้าที่การทำงานอกเป็นส่วนๆ (เปรียบเทียบได้กับสมุดหน้าเหลืองที่มีการเก็บข้อมูลไว้เป็นหมวดหมู่) เมื่อผู้ใช้ (Client หลายๆ เครื่อง) ต้องการเข้ามาใช้งานในส่วนที่ต้องการ LDAP Server ก็จะกระจายข้อมูลไปให้ Client ได้อย่างรวดเร็ว เมื่อ Client ต้องการค้นหาข้อมูลก็สามารถทำได้อย่างสะดวกรวดเร็วได้เช่นกัน จะเห็นได้ว่า Directory จะทำงานคล้ายกับฐานข้อมูลที่มีการจำกัดชนิดของข้อมูลที่จะทำการเก็บลงใน Directory ข้อมูลที่จะทำการเก็บลงจะต้องมีการตรวจสอบความถูกต้องด้วย แต่ความจริงแล้ว Directory มีความแตกต่างจากฐานข้อมูลตรงที่ Directory จะมีการใช้งานอย่างไม่จำกัดเตรียมรับกับสถานการณ์ที่ Client เข้ามาใช้งานมากๆ เครื่อง Server ที่ให้การบริการอยู่ก็สามารถรองรับการทำงานได้ จะเห็นได้ว่าในปัจจุบันนี้ในองค์กรต่างๆ ได้มีการนำ Directory Server มาใช้กันอย่างแพร่หลาย เพราะสามารถควบคุมการเข้าใช้งานในระบบต่าง ๆ ในการเข้าถึงข้อมูลของ Server รวมถึงการรักษาความปลอดภัย แต่ Directory Server จะเหมาะกับงานที่มีการอ่านมากกว่าการบันทึกข้อมูล Directory จึงออกแบบมาให้สามารถรองรับการทำงานจาก Client ได้หลายๆ แพลทฟอร์ม ได้พร้อมๆ กัน


ขั้นตอนการทำงานของ LDAP

   LDAP จะทำงานแบบ Client/Server โดยทาง Client จะมีการลงโปรแกรมไว้ เมื่อต้องการข้อมูลจาก Server ก็จะทำการส่ง Request โดยจะผ่านโปรโตคอล TCP/IP เมื่อทาง Server ได้รับ Request แล้ว จะทำการประมวลผลตามที่ Client ต้องการ และส่ง Result กลับไปให้ Client LDAP ไม่เพียงแค่ทำงานแบบ Client/Server เท่านั้น ยังสามรถทำงานแบบ Messages-Oriented ได้อีก โดยที่ Message-Oriented หมายถึง การติดต่อสื่อสารระหว่าง Client-Server ที่จะมีการส่ง Messages เป็น Request ไปยัง Server และเมื่อ Server ได้รับก็จะส่ง Result กลับมาในรูปของ Message ไปให้ Client เราจะเรียกการส่งแบบนี้ว่า "Series Ldap Message"

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

สัญลักษณ์ Flowchart

WINS คืออะไร ทำงานอย่างไร และต่างจาก DNS อย่างไร

RTO & RPO คืออะไร