Бортовой журнал
Бортовой журнал

Рассказываем, как работает LDAP, какие задачи он решает и чем отличается от Active Directory.

Что такое LDAP 

LDAP (Lightweight Directory Access Protocol) — это открытый протокол, который создан для быстрого доступа и управления информацией в централизованных каталогах — директориях. Его главное назначение — облегчить работу с данными, которые используются для идентификации и управления доступом внутри организаций.

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

LDAP не ограничивается какой-то одной программой или платформой. Это протокол, то есть стандарт, по которому обмениваются данными различные системы. Благодаря независимости от производителей, LDAP поддерживается множеством программных решений — включая Microsoft Active Directory, OpenLDAP и другие.

Каталоги, которые построены на базе LDAP, позволяют структурировать данные по иерархии, что ускоряет поиск информации и делает управление пользователями более прозрачным. Несмотря на то, что сам протокол был стандартизирован еще в начале 2000-х годов, он остается одним из ключевых инструментов для управления учетными данными в современных IT-инфраструктурах.

Для чего нужен протокол LDAP 

Задача LDAP — обеспечить быстрый и удобный доступ к этой информации. Протокол не привязан к конкретной реализации каталогов, а служит своеобразным языком, с помощью которого пользователи и приложения могут находить нужные данные и управлять ими.

LDAP особенно ценен для корпоративных сетей, потому что позволяет:

  • централизовать хранение учетных данных и ресурсов;
  • реализовать единую систему аутентификации пользователей;
  • упростить управление доступом к ресурсам (например, к принтерам или файловым хранилищам);
  • использовать один и тот же протокол с разными программными продуктами и решениями.

История возникновения и развития LDAP

Протокол был создан в 1993 году Тимом Хоузом и его коллегами из Университета Мичигана. Его разработка стала ответом на неудобства и ограничения, которые были связаны с использованием существовавших тогда протоколов семейства X.500, в частности DAP (Directory Access Protocol). 

В те годы протоколы X.500 отличались сложностью, большим объемом потребляемого трафика и высокими требованиями к ресурсам оборудования. Из-за этого подключение к корпоративным каталогам зачастую было доступно только крупным серверам и мейнфреймам, а для обычных персональных компьютеров такие решения были практически недоступны.

LDAP был задуман как облегченная альтернатива — протокол, который позволил бы осуществлять аутентификацию и авторизацию пользователей без избыточных расходов трафика и ресурсов. Благодаря меньшей нагрузке на сеть и конечные устройства, LDAP быстро нашел признание и вскоре стал фактическим стандартом для каталогов и централизованных систем аутентификации в интернете.

В конце 1990-х годов появилась 3 версия LDAP, которая была принята в качестве интернет-стандарта для работы с каталогами. LDAPv3 и сегодня остается самой распространенной версией протокола.

Дальнейшее развитие LDAP связано с появлением OpenLDAP. В 1998 году Курт Зейленга выпустил OpenLDAP 1.0 — первую полностью открытую реализацию клиентских и серверных приложений на основе LDAPv3. В этот проект были добавлены новые функции безопасности, расширена поддержка платформ и исправлены ошибки. OpenLDAP быстро завоевал популярность в IT-среде благодаря возможности доработки и кастомизации под нужды конкретной организации. С 1999 года проектом активно занимаются Говард Чу и команда Symas.

В том же 1999 году компания Microsoft представила Active Directory — корпоративный каталог, который основывается на LDAP и Kerberos, но содержит ряд проприетарных расширений. Из-за этого организации стали более зависимыми от экосистемы Microsoft.

С тех пор LDAP оказал огромное влияние на развитие каталогов и систем управления доступом. Благодаря своей простоте, гибкости и совместимости с различными платформами, он по-прежнему остается важнейшим элементом современной IT-инфраструктуры.

Принцип работы LDAP

LDAP хранит данные в централизованном каталоге, к которому обращаются различные приложения и системы. Единый источник данных для учетных записей, паролей, электронной почты и других атрибутов позволяет компаниям реализовать удобный SSO-вход и эффективное управление доступом. 

Пользователь или приложение работает с LDAP через специальный клиент — Directory User Agent (DUA), который связывается с сервером (Directory System Agent, DSA) по протоколу LDAP.

Структура LDAP

Когда вы используете LDAP, многие его компоненты скрыты за понятным графическим интерфейсом. Однако если разобраться в них чуть глубже, можно гораздо проще настраивать систему и решать возникающие проблемы. 

На какие элементы LDAP-протокола стоит обратить внимание:

Дерево каталогов 

Дерево каталогов (Directory Information Tree, DIT) — это основной элемент LDAP, который организует все данные в виде древовидной структуры. У такой структуры есть:

Корень — верхний уровень, от которого строится вся иерархия. 

Например:

dc=company,dc=ru

Ветви — промежуточные уровни. К ним могут относиться подразделения компании, отделы, группы ресурсов и так далее. Например:

ou= employees,dc= company,dc= ru

Листья — отдельные объекты без подчиненных элементов — пользователи, устройства, принтеры. 

Например:

cn=Иван Иванов,ou= employees,dc=company,dc=ru

С помощью DIT LDAP позволяет наглядно и логично структурировать информацию компании, облегчая ее поиск и управление доступом.

Записи 

Запись — это объект, который описывает конкретного пользователя, устройство или ресурс. Каждая запись хранит определенные атрибуты, аналогично тому, как контакт в телефонной книге содержит номер телефона, имя и адрес электронной почты.

Записи идентифицируются с помощью Distinguished Name (DN). DN уникален для каждой записи и показывает ее точное местоположение внутри дерева каталогов.

Пример DN для сотрудника Петра Иванова:

cn=Петр Иванов,ou=IT,ou= employees,dc=company,dc=ru

Атрибуты 

Атрибуты — это конкретные данные, которые хранятся внутри записи. Они состоят из пары «тип=значение». Например:

mail=ivanov@company.ru

Типичные атрибуты пользователя включают:

  • полное имя;
  • электронную почту;
  • телефон;
  • пароль;
  • должность.

Перечень доступных атрибутов задается через ObjectClass, который определяет, какие именно атрибуты должны присутствовать в каждой записи.

Схемы 

Схема в LDAP — это своего рода инструкция, которая описывает, как должен быть устроен каталог:

  • какие типы атрибутов существуют;
  • какие атрибуты обязательны;
  • какие правила должны соблюдаться при вводе данных (например, формат электронной почты или пароля).

LDAPv3 содержит стандартную схему, но компании могут создавать свои схемы для кастомизации под конкретные задачи.

DN и RDN 

Distinguished Name (DN) — это уникальный путь к записи в LDAP-дереве, который определяет точное местоположение объекта. DN состоит из набора сегментов (RDN), записанных через запятую.

Например:

cn=Мария Кузнецова,ou=employees,dc=company,dc=ru

Здесь DN указывает, что запись о Марии Кузнецовой находится в подразделении сотрудников компании.

Relative Distinguished Name (RDN) — это отдельные части DN, которые описывают конкретный атрибут на каждом уровне иерархии:

  • cn=Мария Кузнецова — имя сотрудника;
  • ou=employees — подразделение сотрудников;
  • dc=company — доменное имя организации;
  • dc=ru — национальный домен.

На примере простой структуры схема выглядит так:

dc=company,dc=ru

├── ou=employees

│   ├── cn=Мария Кузнецова

│   └── cn=Алексей Смирнов

└── ou=groups

    ├── cn=admins

    └── cn=developers

Как работает LDAP

Хотя большинство сотрудников даже не подозревают, что используют LDAP, этот протокол обеспечивает авторизацию, поиск информации и подключение к корпоративным сервисам десятки или сотни раз в день. Для полноценной работы с ним стоит разобраться, что происходит за кулисами при каждом таком взаимодействии.

Стандартный сценарий работы с LDAP состоит из нескольких этапов:

Шаг 1. Установка соединения

Клиент (например, корпоративное приложение или система аутентификации) устанавливает соединение с сервером LDAP по стандартному порту — как правило, TCP 389 или 636 для защищенных соединений.

Шаг 2. Аутентификация

Перед выполнением запросов сервер требует идентифицировать клиента, чтобы понять, какие действия ему разрешены.

Существуют два варианта аутентификации:

  • Simple Bind — простая проверка логина и пароля;
  • SASL Bind — аутентификация через дополнительный сервис безопасности, например, Kerberos. Он актуален для компаний с высокими требованиями к безопасности.

Если аутентификация не требуется (например, для публичных данных), сервер может разрешить анонимный доступ.

Шаг 3. Отправка запроса

После успешного входа клиент отправляет запрос — например, поиск определенного пользователя по фамилии или e-mail. Запрос формируется на специальном языке поиска, который поддерживает LDAP, где указываются критерии отбора, необходимые атрибуты и область поиска в иерархии DIT.

Например, для поиска пользователя с фамилией Смирнов в отделе кадров запрос будет таким:

Base DN: ou=employees,dc=company,dc=ru

Фильтр: (sn=Смирнов)

Возвращаемые атрибуты: cn, mail, title

Шаг 4. Обработка запроса и ответ

LDAP-сервер ищет подходящие записи в иерархии каталога. Он сравнивает фильтры запроса с имеющимися объектами и возвращает найденные значения в виде набора атрибутов (например, имя, e-mail, должность).

Шаг 5. Завершение сессии

После получения нужной информации соединение с сервером закрывается с помощью команды Unbind.

Весь этот процесс занимает доли секунды и повторяется множество раз за день — практически каждый раз, когда сотрудник взаимодействует с внутренними сервисами компании.

Операции LDAP

LDAP поддерживает несколько основных типов операций:

  • Bind — аутентификация клиента;
  • Search — поиск информации по атрибутам (например, по имени или e-mail);
  • Add — добавление новой записи в каталог (например, нового сотрудника);
  • Delete — удаление записи;
  • Modify — изменение данных в существующей записи (добавление, удаление или замена атрибутов);
  • Compare — сравнение значения атрибута у двух записей;
  • Unbind — завершение сессии.

Пример взаимодействия с LDAP:

HR-менеджер нанимает нового сотрудника. Специалист по IT добавляет его данные через Add-запрос. Когда новичок приходит на работу, он проходит аутентификацию через Bind, а его начальник быстро находит контактные данные через Search. Если сотрудник увольняется — его учетная запись удаляется с помощью Delete.

Преимущества LDAP

  • Каждая запись уникальна. LDAP гарантирует, что ни одна учетная запись или объект не будет дублироваться, потому что у каждой записи есть уникальный DN — своеобразный адрес в структуре.
  • Можно использовать несколько независимых каталогов одновременно. Если в компании есть разные офисы, филиалы или системы, LDAP легко объединяет их, позволяя работать с несколькими каталогами без конфликтов.
  • Система легко расширяется под любые задачи. LDAP изначально задуман как гибкий протокол: его можно дорабатывать, расширять и настраивать под свой бизнес, добавляя собственные типы данных и правила.
  • LDAP поддерживается практически в любой современной IT-среде. Это стандарт, который работает на всех популярных операционных системах и интегрируется с огромным числом корпоративных решений. 
  • Протокол основан на уже проверенных и надежных технологиях. LDAP строится на давно зарекомендовавших себя технологиях, поэтому он стабилен, предсказуем и хорошо задокументирован.
  • Многие сетевые сервисы используют LDAP для работы. Протокол активно применяется во многих сетевых сервисах, включая TCP и DNS, а также для организации доступа к приложениям и ресурсам внутри компаний.
  • LDAP — это открытый протокол с гибкой архитектурой. Поскольку это проект с открытым исходным кодом, его можно свободно использовать, настраивать и легко подключать к другим системам.
  • Протокол легко автоматизируется. В отличие от многих других решений, LDAP позволяет легко и быстро обновлять записи. Например, обновление записей происходит проще и быстрее, чем в классических DNS-системах.

Недостатки LDAP

  • Для работы с LDAP нужно, чтобы все серверы были совместимы с этим протоколом. Это значит, что для полноценной работы нужны специализированные решения и соответствующее ПО. 
  • Настроить LDAP не всегда непросто. По сравнению с более привычными системами вроде DNS, LDAP требует большего опыта, времени на изучение и понимание архитектуры.
  • LDAP не очень хорошо справляется с обработкой реляционных баз данных. Он не предназначен для сложных взаимосвязей между данными, которые обычно встречаются в реляционных СУБД.

Сферы применения LDAP

LDAP используют в самых разных областях, где нужно централизованно управлять доступом, хранить информацию о пользователях и быстро искать данные:

  • Корпоративные сети. LDAP служит основой для единой системы входа, помогает сотрудникам пользоваться одним логином и паролем для всех сервисов компании. Кроме того, протокол используется для хранения и администрирования информации о сотрудниках. 
  • Образовательные учреждения. В вузах и школах LDAP часто используют для ведения базы студентов и преподавателей, а также для доступа к электронным библиотекам и учебным платформам.
  • IT-компании и дата-центры. Протокол позволяет централизованно управлять большим числом серверов, сервисов и пользователей, упростить администрирование и повысить безопасность. 
  • Интернет-порталы и сервисы. Некоторые сайты используют LDAP для аутентификации пользователей и хранения профилей, чтобы упростить вход на платформу.
  • Медицина и здравоохранение. LDAP используется для хранения и защиты данных медицинского персонала, а также для разграничения прав доступа к медицинским системам и базам пациентов.

Если кратко, LDAP незаменим везде, где важно централизованно управлять пользователями, быстро находить нужную информацию и поддерживать безопасность доступа к разным ресурсам.

Безопасен ли LDAP

Безопасность — одна из самых важных тем при работе с LDAP. 

Дело в том, что по умолчанию LDAP не шифрует данные — передает все, включая логины и пароли, в открытом виде. Если соединение не защищено, любой злоумышленник в одной сети может перехватить эти данные с помощью простых инструментов. 

Поэтому корпоративные администраторы никогда не используют незащищенный LDAP для работы с конфиденциальной информацией, в особенности если речь идет о доступе из внешних сетей или с мобильных устройств.

Чтобы обеспечить безопасность при работе с LDAP, применяют несколько обязательных мер:

  • используют защищенные протоколы передачи данных, например, LDAPS (LDAP over SSL/TLS) на порту 636 или расширение StartTLS для шифрования уже установленного соединения;
  • применяют современные методы аутентификации — не только обычный логин и пароль, но и SASL (например, с Kerberos), чтобы добавить дополнительные уровни проверки пользователя;
  • ограничивают права доступа к каталогу: каждый сотрудник или приложение получает только те разрешения, которые необходимы для работы (например, простому пользователю нельзя менять чужие данные или просматривать все атрибуты в каталоге);
  • ведут аудит и протоколирование всех обращений к LDAP — это помогает заметить подозрительную активность, вовремя реагировать на попытки взлома и расследовать инциденты;
  • регулярно обновляют серверы и клиенты LDAP, чтобы закрыть найденные уязвимости и не допустить использования старых, небезопасных схем аутентификации.

LDAP vs. Active Directory: в чем разница

LDAP и Active Directory (AD) нередко упоминают в одном контексте, но это не одно и то же. 

LDAP — это открытый протокол для работы с каталогами, который может использоваться разными системами и приложениями.  Active Directory — это продукт Microsoft для управления пользователями и доступом, и в его основе действительно лежит LDAP. Хотя не только он.

Основные отличия:

  • LDAP — это просто протокол. Он определяет, как приложения общаются с каталогами пользователей, но сам не хранит данные и не управляет инфраструктурой.
  • Active Directory — это целая система. AD поддерживает работу с протоколом LDAP для поиска и управления объектами каталога, но для аутентификации по умолчанию применяет протокол Kerberos, который считается более безопасным для проверки подлинности.
  • AD тесно интегрирован с Windows. Он разрабатывался специально для Windows-среды и максимально раскрывает свой потенциал именно в экосистеме Microsoft.
  • LDAP-гибкость выше. Чистые LDAP-решения, например OpenLDAP, легче адаптировать под разные задачи, их можно интегрировать с самыми разными платформами, включая Linux, Mac и облачные сервисы. Они не привязаны к какому-то одному производителю или операционной системе.
  • Active Directory — больше для локальных корпоративных сетей, LDAP может использоваться и в облаке. С переходом бизнеса на облачные решения, компании стали все чаще выбирать независимые, кроссплатформенные каталоги, а не классическую AD.

Таким образом, если вам нужна гибкость, интеграция с разными системами и платформами — выбирайте чистый LDAP. Если же у вас инфраструктура построена вокруг Windows и требуется тесная интеграция с продуктами Microsoft, то Active Directory подойдет больше.

Заключение

LDAP — это инструмент, который делает работу с пользователями и доступом в компании проще и понятнее. С ним администраторы могут централизованно управлять учетными записями, быстро добавлять новых сотрудников или ограничивать доступ бывшим, а обычные пользователи — легко находить нужных коллег и получать доступ ко всем нужным сервисам без кучи паролей.

Сегодня LDAP используется не только в локальных сетях, но и в облачных сервисах. Он поддерживается разными операционными системами и приложениями,  поэтому подходит как для классических офисов на Windows, так и для современных компаний, где используют macOS и Linux.

Если вашей организации важно быстро настраивать права доступа и поддерживать порядок в корпоративных данных, LDAP — отличное решение.