LDAP là gì? LDAP hoạt động như thế nào?

2142
17-06-2020
LDAP là gì? LDAP hoạt động như thế nào?

Còn khá nhiều người hiện nay vẫn chưa thật sự hiểu rõ được khái niệm về LDAP là gì? Nhờ có LDAP giúp cho những người quản trị máy chủ hội nghị dễ dàng quản lý những tài khoản điểm cầu. Cùng Bizfly Cloud tìm hiểu và làm rõ những thông tin chi tiết hơn về LDAP ngay tại bài viết dưới đây nhé.

LDAP là gì?

LDAP, viết tắt của Lightweight Directory Access Protocol, là giao thức ứng dụng truy cập cấu trúc thư mục, được phát triển trên tiêu chuẩn X500. Giao thức này được thiết kế dựa trên TCP/IP, đồng thời cũng là chuẩn cho Directory Service chạy trên nền tảng OSI.

LDAP sử dụng gói tin overhead thấp, được xác định dựa trên lớp TCP của danh sách giao thức TCP/IP. Còn X500 là hạng nặng, do thuộc lớp giao thức ứng dụng và chứa nhiều header của các layer tầng thấp hơn.

LDAP là giao thức nên không hỗ trợ xử lý như database. Tuy nhiên, nó vẫn cần một nơi để lưu trữ backend và xử lý dữ liệu. LDAP lưu trữ dữ liệu thông qua các bản ghi có chứa tập các thuộc tính.

Mỗi bản ghi có một mã định danh duy nhất (Distinguished Name - DN). Đây là bit duy nhất của mỗi mục, có chức năng như đường dẫn đến một tệp trên hệ thống tệp của người dùng. Mỗi thuộc tính trong bản ghi gồm có một tên và một loại, và một hoặc nhiều giá trị.

LDAP hoạt động như thế nào? 

LDAP hoạt động theo mô hình client-server. Một hoặc nhiều LDAP server chứa thông tin về cây thư mục (Directory Information Tree – DIT). Client kết nối đến server và gửi yêu cầu. Server phản hồi bằng thông tin trên chính nó hoặc trỏ tới LDAP server khác để client lấy thông tin. 

 Trình tự khi có kết nối với LDAP:

  • Connect (kết nối với LDAP): client mở kết nối tới LDAP server
  • Bind (kiểu kết nối): nặc danh hoặc đăng nhập xác thực): client gửi thông tin xác thực
  • Search (tìm kiếm): client gửi yêu cầu tìm kiếm
  • Interpret search (xử lý tìm kiếm): server thực hiện xử lý tìm kiếm
  • Result (kết quả): server trả lại kết quả cho client
  • Unbind: client gửi yêu cầu đóng kết nối tới server
  • Close connection (đóng kết nối): đóng kết nối từ server

Các loại mô hình LDAP phổ biến

LDAP được chia thành 4 mô hình chính như sau:

  • LDAP information: Xác định cấu trúc, đặc điểm của các thông tin trong thư mục
  • LDAP naming: Xác định cách tham chiếu và tổ chức thông tin
  • LDAP functional: Định nghĩa cách truy cập, cập nhật thông tin trong thư mục
  • LDAP security: Định nghĩa cách bảo vệ các thông tin trong thư mục khỏi những truy cập không được phép

Mô hình chức năng của LDAP

Mô hình chức năng của LDAP được sử dụng để mô tả các thao tác trên thư mục. Mô hình chức năng của LDAP bao gồm một tập các thao tác, được chia thành 3 nhóm: Thao tác thẩm tra (Interrogation), Thao tác cập nhật (Update) và Thao tác xác thực và điều khiển (Authentication and Control).

Với version 3 giao thức LDAP, còn có thao tác LDAP extended cho phép mở rộng giao thức LDAP trong tương lai.

Thao tác thẩm tra (LDAP Interrogation)

Thao tác thẩm tra cho phép client tìm kiếm trên thư mục, và nhận lại thông tin từ thư mục. Với thao tác tìm kiếm (LDAP search operation), yêu cầu 8 tham số như sau:

Tham số thứ 1: Đối tượng cơ sở để thực hiện các thao tác tìm kiếm trên đó, là DN chỉ đến đỉnh của cây mà chúng ta muốn tìm.

Tham số thứ 2: Phạm vi tìm kiếm

Có 3 phạm vi tìm kiếm như sau:

  • Phạm vi “base”: tìm kiếm ngay tại đối tượng cơ sở
LDAP là gì? LDAP hoạt động như thế nào? - Ảnh 1

  • Phạm vi “onelevel”: tìm kiếm tại entry cấp dưới của đối tượng cơ sở
LDAP là gì? LDAP hoạt động như thế nào? - Ảnh 2

  • Phạm vi “subtree”: thực hiện tìm kiếm trên cây, với đối tượng cơ sở là đỉnh
LDAP là gì? LDAP hoạt động như thế nào? - Ảnh 3

Tham số thứ 3 (derefAliases): giúp server xác định aliases có bị bỏ qua hay không trong quá trình tìm kiếm

derefAliases có thể nhận được 4 giá trị sau:

  • "nerverDerefAliases": thực hiện tìm kiếm, không bỏ qua aliases trong quá trình tìm kiếm và áp dụng cho đối tượng cơ sở
  • "derefInsearching": bỏ qua aliases trong các entry cấp dưới, không quan tâm đến thuộc tính của đối tượng cơ sở
  • "derefFindingBaseObject": bỏ qua aliases của đối tượng cơ sở, không quan tâm đến thuộc tính của các entry thấp hơn
  • "derefAlways": bỏ qua cả hai nếu tìm kiếm được đối tượng cơ sở hoặc entry cấp thấp là entry aliases

Tham số thứ 4: giúp server xác định có tối đa bao nhiêu entry kết quả được trả về

Tham số thứ 5: quy định thời gian tìm kiếm tối đa

Tham số thứ 6: attrOnly (tham số kiểu bool). Nếu được thiết lập “true”, server sẽ chỉ gửi các kiểu thuộc tính của entry cho Client (không gửi giá trị của thuộc tính).

Tham số thứ 7: bộ lọc tìm kiếm (search filter). Đây là biểu thức mô tả các loại entry được lọc ra.

Tham số thứ 8: danh sách các thuộc tính được lọc ra với mỗi entry

Thao tác cập nhật (Update)

Có 4 thao tác cập nhật, bao gồm Add, Delete, Rename (Modify DN) và Modify.

Add: tạo ra entry mới với tên DN và danh sách các thuộc tính truyền vào. Khi thao tác Add cần thoả mãn các điều kiện sau:

  • Tồn tại Entry cha của entry mới
  • Chưa tồn tại entry nào có cùng tên DN với entry mới trên thư mục

Delete: Với thao tác Delete, chỉ cần truyền tên entry cần xóa vào và thực hiện thao tác. Khi thực hiện Delete cần thoả mãn các điều kiện sau:

  • Entry tồn tại
  • Entry bị xóa không có entry con ở bên trong

Rename: Đổi tên hay di chuyển các entry trong thư mục

Update: Cập nhật tham số DN và tập hợp các thay đổi. Khi thực hiện Update, cần thoả mãn các điều kiện sau:

  • Tồn tại Entry với DN
  • Tất cả thuộc tính thay đổi thành công
  • Các thao tác cập nhật là các thao tác được cho phép

Thao tác xác thực và điều khiển (Authentication and control)  

Thao tác xác thực

  • Bind: cho phép Client tự xác định chính nó với thư mục, giúp cung cấp xác thực chứng thực
  • Unbind: cho phép huỷ phân đoạn làm việc hiện hành

Thao tác điều khiển

  • Abandon: chỉ ra các thao tác mà kết quả Client không quan tâm đến nữa

Các thao tác mở rộng

LDAP extended operations

Trong tương lai nếu cần thêm thao tác mới, thao tác mở rộng LDAP sẽ giúp định nghĩa và trở thành chuẩn mà không cần phải xây dựng lại các thành phần cốt lõi của LDAP.

LDAP control

Đây là những phần của thông tin kèm theo cùng với các thao tác LDAP, cho phép thay đổi hành vi thao tác trên cùng một đối tượng.

Simple Authentication and Security Layer (SASL)

Đây là mô hình hỗ trợ nhiều phương thức xác thực. Bằng cách sử dụng mô hình SASL để chứng thực, LDAP có thể thích nghi với các phương thức xác thực khác dễ dàng hơn.

Ngoài ra, SASL cũng hỗ trợ một mô hình cho client và server kết nối trên hệ thống bảo mật ở các tầng thấp, đảm bảo độ an toàn cao.

Các backend, object và thuộc tính của LDAP

LDAP server daemon  được gọi là Slapd. Slapd hỗ trợ nhiều cơ sở dữ liệu backend khác nhau mà bạn có thể sử dụng.

Chúng bao gồm BDB (transactional database backend với hiệu suất cao); LDBM (lightweight DBM); SHELL (backend interface cho các tập lệnh shell và PASSWD, backend interface đơn giản cho tệp passwd).

BDB sử dụng tối ưu với Sleepycat Berkeley DB 4, còn LDBM sử dụng tối ưu với Berkeley DB hoặc GDBM.

BDB phù hợp cho truy cập cơ sở dữ liệu đọc/ghi đa người dùng, kết hợp các hoạt động đọc và ghi. BDB được sử dụng trong các ứng dụng có yêu cầu:

Giao dịch, bao gồm việc thực hiện nhiều thay đổi đối với cơ sở dữ liệu và khôi phục các thay đổi không được cam kết khi cần thiết.

Khả năng phục hồi sau sự cố hệ thống và lỗi phần cứng mà không mất bất kỳ giao dịch đã cam kết nào.

Trong tài liệu này, giả sử rằng bạn chọn cơ sở dữ liệu BDB.

Để nhập và xuất thông tin thư mục giữa các máy chủ thư mục dựa trên LDAP hoặc để mô tả một tập hợp các thay đổi sẽ được áp dụng cho một thư mục, định dạng tệp được gọi là LDIF (viết tắt của LDAP Data Interchange Format) sẽ được sử dụng. Tệp LDIF lưu trữ thông tin theo hướng phân cấp đối tượng của các mục nhập. Gói phần mềm LDAP đi kèm với một tiện ích để chuyển đổi các tệp LDIF sang định dạng BDB

Một tệp LDIF phổ biến trông như thế này:

dn: o=TUDelft, c=NL

o: TUDelft

objectclass: organization

dn: cn=Luiz Malere, o=TUDelft, c=NL

cn: Luiz Malere

sn: Malere

mail: malere@yahoo.com

objectclass: person

Như bạn có thể thấy mỗi entry được xác định duy nhất bởi một tên phân biệt hoặc DN. DN bao gồm tên của entry cộng với đường dẫn tên cho phép truy ngược lại entry ở đầu phân cấp thư mục (giống như một cái cây).

Trong LDAP, một object class xác định tập hợp các thuộc tính có thể được sử dụng để xác định entry. Tiêu chuẩn LDAP cung cấp các loại object class cơ bản sau đây:

  • Các nhóm trong thư mục
  • Các Locations chẳng hạn như tên quốc gia và mô tả
  • Các organizations trong thư mục
  • People trong thư mục

Một entry có thể thuộc về nhiều hơn một object class. Ví dụ, entry cho một người được xác định bởi person object class, nhưng cũng có thể được xác định bởi các thuộc tính trong inetOrgPerson, groupOfNames và các organization object class. Cấu trúc object class của máy chủ (còn gọi là lược đồ) xác định tổng danh sách các thuộc tính bắt buộc và được phép cho một entry cụ thể.

Dữ liệu thư mục được biểu diễn dưới dạng cặp giá trị thuộc tính. Bất kỳ thông tin cụ thể nào cũng đều được liên kết với một thuộc tính mô tả.

Chẳng hạn, thuộc tính commonName hoặc cn, được sử dụng để lưu trữ tên người. Một người có tên Jonas Salk có thể được đại diện trong thư mục như

cn: Jonas Salk

Mỗi người được nhập trong thư mục được xác định bởi tập hợp các thuộc tính trong person object class. Các thuộc tính khác được sử dụng để xác định mục này có thể bao gồm:

givenname: Jonas

surname: Salk

mail: jonass@airius.com

Các thuộc tính bắt buộc bao gồm các thuộc tính phải có trong các mục sử dụng object class. Tất cả các mục đều yêu cầu có thuộc tính objectClass, liệt kê các object class mà entry thuộc về.

Các thuộc tính được phép bao gồm các thuộc tính có thể có trong các entry sử dụng object class. Ví dụ, trong person object class, các thuộc tính cn và sn sẽ được yêu cầu. Các thuộc tính mô tả, phoneNumber, seeAlso và userpassword được cho phép nhưng không bắt buộc.

Mỗi thuộc tính có một định nghĩa cú pháp tương ứng. Ví dụ, định nghĩa cú pháp mô tả loại thông tin được cung cấp bởi thuộc tính:

  • bin: binary
  • ces: trường hợp chuỗi chính xác
  • cis: trường hợp bỏ qua chuỗi 
  • tel: chuỗi số điện thoại 
  • dn: tên phân biệt

Lưu ý: Thông thường các định nghĩa thuộc tính và object class nằm tại các schema file

Lưu trữ thông tin của LDAP

LDIF (LDAP Data Interchange Format) là một chuẩn định dang file text lưu trữ thông tin cấu hình LDAP và nội dung thư mục. File LDIF thường dùng để import dữ liệu mới vào trong directory hoặc thay đổi dữ liệu đã có. Dữ liệu trong file LDIF phải tuân theo quy luật có trong schema của LDAP.

Schema là loại dữ liệu được định nghĩa từ trước. Mọi thành phần được thêm vào hoặc thay đổi trong directory của bạn sẽ được kiểm tra lại trong schema để đảm bảo chính xác.

Bizfly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.

Bizfly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của Bizfly Cloud có thể truy cập tại đây.

DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud

TAGS: LDAP
SHARE