Модель OSI определяет самые разные аспекты взаимодействия открытых систем. Имеется в ней и спецификация X.500, описывающая службу каталогов. X.500 — это серия рекомендаций разработанных ITU-T в 1993 г. и получивших статус международного стандарта (ISO/IEC 9594-1). Спецификация X.511 описывает протокол DAP для доступа к каталогам X.500. DAP, принятый в качестве международного стандарта, оказался избыточным и сложным в реализации и на его основе были разработаны адаптированные версии, среди которых NDS и LDAP.
Протокол LDAP (Lightweight Directory Access Protocol, упрощенный протокол доступа к каталогу) — бинарный клиент-серверный протокол прикладного уровня, предназначенный для доступа к распределенной службе каталогов через Интернет. Этот протокол может использоваться как в качестве шлюза к любым X.500-совместимым каталогам (рис. 4), так и в качестве основного сервиса каталогов (рис. 5). Спецификация текущей версии (LDAP v3) приведена в RFC 4510.
Рис. 4. LDAP в роли шлюза к каталогу X.500
Рис. 5. LDAP в качестве самостоятельного сервиса
В терминах X.500 каталог представляет собой «совокупность открытых систем, совместно предоставляющих службы каталогов». Проще говоря, это распределенная клиент-серверная база данных, доступ к которой возможен через унифицированные интерфейсы. Пользователь каталога, который может быть человеком или другим каким-то объектом, получает доступ к каталогу (Directory) с помощью клиентского приложения (DUA). Клиент взаимодействует с одним или более серверами через агентов системы каталогов (DSA) (рис. 4).
LDAP устанавливает порядок взаимодействия между клиентом и сервером на основе обмена сообщениями. Сообщения определяют запрашиваемые клиентом операции, ответы сервера и формат передаваемых данных. LDAP — это сессионный протокол, требующий установления, поддержания и разрыва соединения между клиентом и сервером, поэтому основным транспортом для него является TCP. Для сервиса LDAP имеется стандартный порт 389 (TCP/UDP, см. описание «хорошо известных» (well-known) портов в локальном файле /etc/services).
Основной единицей информации, хранимой в каталоге, является отдельная запись (entry). Каждая запись представляет какой-либо реальный объект: человека, компьютер, организацию и т.д. Запись описывает объект через набор присущих ему атрибутов. Атрибуты представляют собой пары вида «имя — значение». Фактическое значение атрибута зависит от его типа (рис. 6).
Записи хранятся в иерархической структуре, называемой «Информационное дерево каталога» (Directory Information Tree, DIT). Обращение к записям осуществляется по их уникальным именам (DN, distinguished name). DN включает полный путь к записи от корня DIT и этим напоминает путь к файлу в файловой системе. Помимо DN используется и относительное уникальное имя (RDN, relative distinguished name).
Если сравнивать DN и RDN с именами файлов, то DN можно представить так:
/home/user/documents/somefile.txt
а, соответственно, RDN так:
somefile.txt
По сути же, DN есть цепочка из RDN'ов элементов структуры разного уровня.
В LDAP используется унифицированная схема именования и набор обязательных и опциональных атрибутов предопределенных типов, которые имеют короткие алиасы. Некоторые типы атрибутов записей приведены в табл. 1. Простой пример DIT с несколькими записями приведен на рис. 7.
Таблица 1. Атрибуты записей LDAP
Тип атрибута
Краткая запись (алиас)
Пояснение
CommonName
cn
Общее имя
StateOrProvinceName
st
Географическое название региона
OrganizationName
o
Название организации
OrganizationalUnitName
ou
Название структурного подразделения
CountryName
c
Страна
StreetAddress
street
Улица (как часть адреса)
domainComponent
dc
Элемент домена
userid
uid
Уникальный идентификатор пользователя
LDAP изначально ориентирован на использование в сильно распределенной среде, поэтому каталог или его части могут быть размещены на различных серверах. Клиент может обращаться к любому из серверов LDAP. Доступ к ним может осуществляться по реферальному (рис. 8) или цепочечному (рис. 9) принципам.
Рис. 8. Реферальный опрос LDAP-серверов.
Рис. 9. Опрос «по цепочке»
В случае реферальной обработки запросов LDAP-сервер возвращает клиенту, вместо ответа, информацию о том, на каком из серверов можно получить нужные данные. При цепочечной обработке LDAP-сервер сам опрашивает другие сервера в поисках ответа на клиентсткий запрос.
Репликация каталога LDAP может выполняться по следующим сценариям:
multi-master — все LDAP-серверы равноправны, в сети отсутствует четко определенный сервер, управляющий данными;
master-slave — главный (master) сервер управляет всеми изменениями каталога и рассылает их на подчиненные (slave) серверы. Этот сценарий может быть расширен до делегирования функций синхронизации одному из подчиненных серверов, который и будет реплицировать данные на остальные slave-сервеСлужбы каталогов
Рис. 3. Структура Network Information Service (NIS)
Рис. 6. Записи и атрибуты LDAP
Рис. 7. Пример информационного дерева каталога (DIT) в LDAP