LDAP
LDAP (Lightweight Directory Access Protocol, «облегчённый протокол доступа к каталогам») — это открытый, независимый от платформы сетевой протокол прикладного уровня, предназначенный для доступа к службам каталогов (directory services) и управления ими. Протокол основан на модели клиент-сервер и определяет способ хранения, поиска, чтения, записи, изменения и удаления информации в иерархической структуре каталога. LDAP является упрощённой версией более сложного протокола X.500 (DAP — Directory Access Protocol), адаптированной для работы поверх стека протоколов TCP/IP.
История
Разработка LDAP была начата в начале 1990-х годов в Мичиганском университете. Основной целью являлось создание облегчённой альтернативы протоколу DAP из рекомендации X.500, который требовал значительных вычислительных ресурсов и был сложен в реализации. Первая версия протокола (LDAPv1) была опубликована в 1993 году, однако широкого распространения не получила. Версия LDAPv2, выпущенная в 1995 году, стала более популярной и была описана в документе RFC 1777. Современная и наиболее распространённая версия — LDAPv3 — была стандартизирована в 1997 году (RFC 2251, позднее заменён на RFC 4511). Версия v3 добавила поддержку механизмов аутентификации SASL, расширений, контроля ссылок (referrals) и улучшенную модель безопасности. В 2006 году все спецификации LDAPv3 были переработаны и опубликованы в виде серии RFC (серия 4510–4519).
Архитектура и модель данных
LDAP использует модель клиент-сервер. Сервер LDAP (или каталог LDAP) хранит данные в виде иерархической древовидной структуры, называемой DIT (Directory Information Tree — дерево информации каталога). Каждый узел дерева называется записью (entry). Запись состоит из набора атрибутов (attributes), каждый из которых имеет тип (определяющий допустимые значения) и одно или несколько значений.
Иерархия и имена
Каждая запись в DIT имеет уникальное отличительное имя (Distinguished Name, DN), которое однозначно определяет её положение в дереве. DN состоит из последовательности относительных отличительных имён (Relative Distinguished Name, RDN), разделённых запятыми. RDN — это один или несколько атрибутов, которые однозначно идентифицируют запись среди её «соседей» на одном уровне.
Пример DN: cn=Иван Петров,ou=Сотрудники,dc=example,dc=com
Здесь:
cn(common name) — общее имя;ou(organizational unit) — организационная единица;dc(domain component) — компонент домена.
Классы объектов и схемы
Структура записей (какие атрибуты обязательны и допустимы) определяется схемой (schema) каталога. Схема включает в себя определения классов объектов (objectClass) и типов атрибутов. Каждая запись должна содержать атрибут objectClass, который указывает, к какому классу (или классам) она относится. Классы могут быть структурными (определяют тип записи, например, person, organizationalUnit), вспомогательными (добавляют дополнительные атрибуты) или абстрактными (служат для наследования). Схема LDAP является расширяемой — администратор может определять собственные классы и атрибуты.
Атрибуты
Атрибуты в LDAP имеют имя (например, sn для фамилии, mail для адреса электронной почты) и могут содержать одно или несколько значений (мультизначные атрибуты). Типы атрибутов определяют синтаксис значений (строка, целое число, двоичные данные) и правила сравнения (например, регистронезависимое сравнение для имён).
Операции протокола
LDAP определяет набор основных операций, которые клиент может выполнять над каталогом:
- Bind — установка сессии и аутентификация клиента (может быть анонимной, простой — с паролем, или через SASL).
- Unbind — завершение сессии.
- Search — поиск записей по заданным критериям (фильтр, база поиска, область поиска). Фильтры LDAP имеют собственный синтаксис (например,
(&(objectClass=person)(sn=Петров))). - Compare — проверка, содержит ли запись определённое значение атрибута.
- Add — добавление новой записи.
- Delete — удаление записи.
- Modify — изменение атрибутов существующей записи (добавление, удаление, замена значений).
- Modify DN — переименование или перемещение записи в дереве.
- Extended Operations — расширенные операции, определённые в LDAPv3 (например, Start TLS для шифрования соединения).
Применение
LDAP является ключевым протоколом для централизованного управления идентификацией и доступом (IAM). Основные области применения:
Аутентификация и авторизация
LDAP-каталоги часто используются как единый источник данных о пользователях для аутентификации (проверки пароля) и авторизации (определения прав доступа). Многие операционные системы (Linux, Windows Server через Active Directory), приложения (почтовые серверы, веб-серверы, системы управления контентом) и сервисы могут быть настроены на проверку учётных данных через LDAP.
Корпоративные справочники
LDAP позволяет создавать иерархические справочники сотрудников, контактов, подразделений, групп и ресурсов (принтеры, компьютеры). Такие справочники могут быть доступны для поиска и просмотра всем сотрудникам организации.
Управление конфигурацией сети
В некоторых системах (например, в OpenLDAP или Active Directory) LDAP используется для хранения конфигурационных данных сетевых устройств, политик безопасности и групповых политик.
Единый вход (SSO)
LDAP часто служит бэкендом для систем единого входа (Single Sign-On). После прохождения аутентификации в LDAP пользователь получает доступ к нескольким приложениям без повторного ввода пароля.
Реализации
Существует множество реализаций LDAP-серверов и клиентов. Наиболее известные:
- OpenLDAP — свободная, кроссплатформенная реализация сервера LDAPv3. Является одной из самых популярных в Unix-подобных системах.
- Microsoft Active Directory (AD) — служба каталогов для Windows Server, которая использует LDAP как один из основных протоколов доступа. AD расширяет базовую схему LDAP и интегрируется с DNS, Kerberos и другими технологиями Microsoft.
- 389 Directory Server (ранее Fedora Directory Server, Red Hat Directory Server) — свободная реализация от Red Hat, основанная на коде Netscape Directory Server.
- Apache Directory Server (ApacheDS) — реализация на Java, встраиваемая в приложения.
- IBM Security Directory Server — коммерческая реализация от IBM.
- Oracle Internet Directory — реализация от Oracle.
Клиентами LDAP могут быть как специализированные утилиты (например, ldapsearch, ldapadd из пакета OpenLDAP), так и графические интерфейсы (например, Apache Directory Studio, Softerra LDAP Browser).
Безопасность
LDAPv3 предусматривает несколько механизмов защиты:
- Простая аутентификация — передача DN и пароля в открытом виде (не рекомендуется без шифрования).
- SASL (Simple Authentication and Security Layer) — поддержка различных механизмов аутентификации, таких как DIGEST-MD5, GSSAPI (Kerberos), EXTERNAL (сертификаты TLS).
- TLS/SSL — шифрование всего трафика между клиентом и сервером (LDAPS на порту 636 или StartTLS на стандартном порту 389).
- ACL (Access Control Lists) — списки управления доступом, позволяющие задавать права на чтение, запись, поиск для отдельных записей и атрибутов.
Критика и ограничения
- Производительность при больших объёмах — LDAP не оптимизирован для хранения и быстрой выборки очень больших объёмов данных (миллиарды записей). Для таких задач могут применяться специализированные базы данных.
- Сложность настройки — правильная настройка схемы, ACL и репликации требует высокой квалификации администратора.
- Ограниченная модель данных — LDAP не поддерживает сложные реляционные связи, транзакции и SQL-подобные запросы.
- Устаревание — с ростом популярности REST API и JSON-ориентированных протоколов (например, SCIM для управления идентификацией), LDAP в некоторых сценариях считается менее современным решением, хотя продолжает широко использоваться в корпоративной инфраструктуре.
Источники
- RFC 4511 — Lightweight Directory Access Protocol (LDAP): The Protocol
- RFC 4512 — LDAP: Directory Information Models
- RFC 4513 — LDAP: Authentication Methods and Security Mechanisms
- RFC 4514 — LDAP: String Representation of Distinguished Names
- RFC 4515 — LDAP: String Representation of Search Filters
- RFC 4519 — LDAP: Schema for User Applications
- W. Yeong, T. Howes, S. Kille. RFC 1777 — Lightweight Directory Access Protocol (1995)
- OpenLDAP Project Documentation
- Microsoft Active Directory Technical Reference
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →