Открыть сервис

Протокол LDAP

LDAP (англ. Lightweight Directory Access Protocol — «облегчённый протокол доступа к каталогам») — это открытый сетевой протокол прикладного уровня (модель OSI), предназначенный для доступа к службе каталогов (directory service) и управления ею. LDAP позволяет клиентским приложениям выполнять операции поиска, чтения, записи и модификации записей в централизованном или распределённом иерархическом хранилище информации — каталоге. Протокол является упрощённой и оптимизированной версией более сложного и менее распространённого протокола DAP (Directory Access Protocol), входящего в стандарт X.500. LDAP нашёл широкое применение в корпоративных информационных системах, системах аутентификации, электронной почте, управлении конфигурациями сетевых устройств и других областях, где требуется централизованное хранение и быстрый поиск данных о пользователях, ресурсах и объектах инфраструктуры.

История

Разработка LDAP была начата в 1993 году в Мичиганском университете (США) группой исследователей под руководством Тима Хоуза (Tim Howes). Первоначальной целью проекта было создание лёгкого и практически реализуемого протокола, который обеспечивал бы доступ к каталогам X.500 через стек протоколов TCP/IP, значительно более распространённый в сетях того времени, чем OSI-протоколы, требовавшиеся для DAP. Первая версия протокола, LDAPv1, была реализована в 1993 году. Она предоставляла базовые операции поиска и чтения записей, но не поддерживала модификацию и аутентификацию. В 1995 году вышла версия LDAPv2. Она добавила операции записи и модификации, а также механизмы аутентификации, включая поддержку простого пароля и протокола Kerberos. LDAPv2 был задокументирован в RFC 1777.

Основной этап стандартизации LDAP начался в 1997 году с выходом версии LDAPv3. Этот стандарт, закреплённый в серии документов RFC (прежде всего RFC 2251 — сейчас RFC 4511, а также RFC 4510—4519), стал основой для всех современных реализаций. LDAPv3 ввёл ключевые улучшения: поддержку расширений, механизм управления сертификатами TLS/SSL (LDAPS), более гибкие схемы данных, универсальную модель аутентификации (SASL — Simple Authentication and Security Layer) и возможность использования различных методов шифрования и целостности. Стандарт LDAPv3 оказался достаточно модульным и расширяемым, что позволило адаптировать его для самых разных задач и систем.

Архитектура и основные понятия

Структура каталога

Каталог LDAP представляет собой иерархическую древовидную структуру — DIT (Directory Information Tree). Каждый элемент дерева называется записью (entry). Запись идентифицируется уникальным DN (Distinguished Name — отличиетельное имя) — цепочкой относительных отличательных имён (RDN, Relative Distinguished Name), поднимающихся от записи к корню дерева. Например, запись пользователя может иметь DN: cn=Иван Иванов, ou=IT, dc=company, dc=com. Здесь cn=Иван Иванов — RDN данной записи, ou=IT — отдел, dc=company, dc=com — домены верхнего уровня (в LDAP обычно используется представление DNS-имени в виде последовательности dc-компонентов).

В каждой записи хранятся атрибуты — пары «имя-значение». Имена атрибутов и их типы (синтаксисы) определяются схемой (schema). Схема задаёт, какие атрибуты могут быть у записей определённых объектов, их типы (строка, целое число, бинарные данные, дата/время, DN и т.д.) и правила сравнения. Наиболее распространённые атрибуты в каталогах пользователей: cn (Common Name — полное имя), sn (Surname — фамилия), uid (User ID — логин), mail (электронная почта), telephoneNumber (номер телефона), password (пароль, обычно в виде хэша). Тип объекта записи указывается в специальном атрибуте objectClass. Например, объектный класс inetOrgPerson описывает стандартный набор атрибутов для учётной записи пользователя в интернет-среде.

Клиент-серверная модель

LDAP работает по модели «клиент-сервер». LDAP-сервер (или Directory System Agent — DSA) хранит данные каталога, обрабатывает запросы клиентов и управляет доступом. Сервер может быть одним узлом, кластером или распределённой системой, где данные могут реплицироваться между несколькими серверами для повышения отказоустойчивости и производительности. Клиентские приложения (например, почтовый клиент, система аутентификации веб-приложения, утилита командной строки ldapsearch) устанавливают TCP-соединение с сервером, обычно на порт 389 (LDAP без шифрования) или 636 (LDAPS — LDAP через TLS/SSL). Соединение может быть установлено и через StartTLS — расширение LDAPv3, которое позволяет шифровать передаваемые данные поверх обычного 389 порта.

Операции протокола

LDAPv3 определяет набор базовых операций, которые клиент может выполнять над данными каталога:

Все операции отправляются клиентом в виде структурированного протокольного сообщения по протоколу BER (Basic Encoding Rules), который сериализует данные в бинарный формат.

Применение

LDAP широко используется в корпоративных сетях по всему миру. Основные области применения:

Аутентификация и авторизация

Системы единого входа (Single Sign-On, SSO) часто строятся на основе LDAP. При входе пользователя в корпоративную среду его логин и пароль проверяются централизованным LDAP-сервером. Это позволяет использовать одну пару «учётная запись — пароль» для доступа к сотням приложений: веб-порталам, почтовым системам, VPN, файловым серверам, СУБД и т.д. LDAP может служить источником данных для протокола Kerberos, где LDAP хранит ключи пользователей, а Kerberos обеспечивает билетную аутентификацию.

Служба каталогов Microsoft Active Directory

Active Directory (AD) — самая распространённая коммерческая реализация LDAP-каталога в мире. AD базируется на LDAPv3, используя его как протокол доступа к объектам домена (пользователи, группы, компьютеры, политики). Однако AD также добавляет собственные расширения (атрибуты, классы объектов, механизмы репликации, поддержку Kerberos и DNS). Active Directory отвечает за централизованное управление пользователями и политиками в среде Windows. В Linux-средах для аутентификации через AD часто используется библиотека SSSD (System Security Services Daemon) или Winbind.

Альтернативы Active Directory в Linux

В Unix-подобных средах распространены свободные реализации LDAP-серверов: OpenLDAP (наиболее популярная), 389 Directory Server (преемник Fedora Directory Server), ApacheDS. OpenLDAP является кроссплатформенным и высокопроизводительным, он используется в крупных компаниях, университетах и государственных организациях для хранения учётных записей, контактных данных, сетевых конфигураций. Также LDAP поддерживается всеми основными дистрибутивами Linux.

Адресные книги и почтовые системы

Множество почтовых клиентов (Outlook, Thunderbird, Evolution) могут обращаться к LDAP-серверу для динамического поиска адресов электронной почты, телефонных номеров, должностей и другой контактной информации сотрудников. Например, компании могут вести общий LDAP-каталог контактов, к которому обращаются все почтовые клиенты, что автоматически обновляет адресную книгу при изменении данных.

Управление конфигурациями и сетевыми устройствами

LDAP может применяться для централизованного хранения конфигураций маршрутизаторов, коммутаторов, точек доступа, принтеров и другого сетевого оборудования. Каждое устройство может хранить в каталоге LDAP свою учётную запись, настройки интерфейсов, пароли SNMP, аутентификацию для доступа по SSH/Telnet. Такие решения, как FreeRADIUS, также активно используют LDAP для хранения профилей пользователей VPN и Wi-Fi.

Реализации

Наиболее известные реализации LDAP-серверов:

Критика и ограничения

Несмотря на широкое распространение, LDAP имеет ряд ограничений и подвергается критике.

Тем не менее, LDAP остаётся одним из ключевых протоколов для централизованного хранения и доступа к данным идентификации и инфраструктуры в корпоративных сетах. Его гибкость, открытость и стандартизованность обеспечивают долгосрочную актуальность, несмотря на появление более современных API (например, REST-интерфейсов, GraphQL, протокола SCIM) в веб-приложениях.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →