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

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

Здесь:

Классы объектов и схемы

Структура записей (какие атрибуты обязательны и допустимы) определяется схемой (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 →