LDAP (Lightweight Directory Access Protocol)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:39, 27 мая 2017.
Open book.svg Авторство
В.Н. Давыдов
Согласовано: 26.05.2016
LDAP
Уровень (по модели OSI): Прикладной
Семейство: стек протоколов TCP/IP
Порт/ID: 389 / TCP или UDP
Назначение протокола: Доступ к службе каталогов
Спецификация: RFC 4510, RFC 4511, RFC 4512, RFC 4513, RFC 4514, RFC 4515, RFC 4516, RFC 4517, RFC 4518, RFC 4519, RFC 4520, RFC 4521
Вступил в силу с: 1993

LDAP (англ. Lightweight Directory Access Protocol — «облегчённый протокол доступа к каталогам») — протокол прикладного уровня для доступа к службе каталогов (программному комплексу для хранения и каталогизации информации. По своей сути она очень похоже на обычную базу данных, но с «уклоном» скорее на чтение данных, нежели на их добавление или изменение. Обычно служба каталога базируется на клиент-серверной архитектуре. Одна из наиболее известных таких систем — DNS) X.500, разработанный IETF. Является облегченным и незначительно переработанным потомком протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636.

Использование

В UNIX/Linux-системах каталоги (и LDAP, как протокол доступа к ним) получили распространение для хранения системной информации, такой, например, как учётные записи пользователей и служебных настроек. Одним из наиболее распространённых LDAP-серверов в UNIX/Linux-системах является OpenLDAP. В Windows LDAP-сервер встроен в ActiveDirectory.

Функциональное описание протокола

В протоколе LDAP определены следующие операции для работы с Каталогом:

  • Операции подключения/отключения
    • Подключение (bind) — позволяет ассоциировать клиента с определённым объектом Каталога (фактическим или виртуальным) для осуществления контроля доступа для всех прочих операций чтения/записи. Для того, чтобы работать с Каталогом, клиент обязан пройти аутентификацию как объект, отличительное имя (Distinguished Name) которого находится в пространстве имён, описываемом Каталогом. В запросе операции bind клиент может не указывать отличительное имя, в таком случае будет осуществлено подключение под специальным псевдонимом anonymous (обычно это что-то наподобие гостевой учетной записи с минимальными правами)
    • Отключение (unbind) — позволяет клиенту в рамках сеанса соединения с LDAP-сервером переключиться на аутентификацию с новым отличительным именем. Команда unbind возможна только после аутентификации на сервере с использованием bind, в противном случае вызов unbind возвращает ошибку
  • Поиск (search) — чтение данных из Каталога. Операция сложная, на вход принимает множество параметров, среди которых основными являются:
    • База поиска (baseDN) — ветка DIT, от которой начинается поиск данных
    • Глубина поиска (scope) — может иметь значения (в порядке увеличения охватываемой области): base, one, sub
      • base — поиск непосредственно в узле — базе поиска
      • one — поиск по всем узлам, являющимся прямыми потомками базового в иерархии, то есть лежащим на один уровень ниже него
      • sub — поиск по всей области, нижележащей относительно базы поиска (baseDN)

Логические операторы представлены стандартным «набором»: & (логическое «И»), | (логическое «ИЛИ») и ! (логическое «НЕ»). Пример фильтра поиска:

    (&(!(entryDN:dnSubtreeMatch:=dc=Piter,dc=Russia,ou=People,dc=example,dc=com))(objectClass=sambaSamAccount) (|(sn=Lazar*)(uid=Nakhims*))) 
  • Операции модификации — позволяют изменять данные в Каталоге, при этом в понятие модификации входит как добавление, удаление и перемещение записей целиком, так и редактирование записей на уровне их атрибутов. Подтипы модификации:
    • Добавление (add) — добавление новой записи
    • Удаление (delete) — удаление записи
    • Модификация RDN (modrdn) — перемещение/копирование записи
    • Модификация записи (modify) — позволяет редактировать запись на уровне её атрибутов,
      • добавляя новый атрибут или новое значение многозначного атрибута (add)
      • удаляя атрибут со всеми его значениями (delete)
      • заменяя одно значение атрибута на другое (replace)
      • а также увеличивая (уменьшая) значение атрибута в рамках атомарной операции (increment)
  • Операция сравнения (compare) — позволяет для определённого отличительного имени сравнить выбранный атрибут с заданным значением

Пример обращения к службе каталога

Пример обращения к службе каталога по протоколу LDAP с помощью утилиты ldapsearch.

%# # ldapsearch -W -x -D cn=admin,dc=mydc,dc=com -b "dc=mydc,dc=com" "(ou=People)"
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <dc=mydc,dc=com> with scope sub
# filter: (ou=People)
# requesting: ALL
#

# People, mydc.com
dn: ou=People,dc=mydc,dc=com
objectClass: top
objectClass: organizationalUnit
ou: People

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Аутентифицироваться при подключении к каталогу под именем cn=admin,dc=mydc,dc=com, использовать простую аутентификацию (-x), спросить пароль (-W). Результат выполнения команды ldapsearch представлен в формате LDIF (LDAP Interchange Format). В этом формате записи представляются как набор полей, каждое из которых записывается в отдельном поле в виде пары:

    имя_поля:значение_поля

Найденная запись содержит поля dn, objectClass и ou и выглядит так:

dn: ou=People,dc=mydc,dc=com
objectClass: top
objectClass: organizationalUnit
ou: People

Доступ к каталогу осуществляется от имени cn=admin,dc=mydc,dc=com, которое называется именем привязки (bind name). Имя привязки это полное имя (DN, distinguished name) учётной записи в каталоге пользователя, от имени которого будет производиться работа с каталогом.

Размещение записей в каталоге

Информационная модель LDAP основана на записях (entry). Запись — это коллекция атрибутов (attribute), обладающая уникальным именем (Distinguished Name, DN). DN глобально-уникально для всего каталога и служит для однозначного указания на запись. Каждый атрибут записи имеет свой тип (type) и одно или несколько значений (value). Обычно типы — это мнемонические строки, в которых отражено назначение атрибута, например "cn" — для общепринятого имени (common name), или "mail" — для адреса электронной почты. Синтаксис значений зависит от типа атрибута. Например, атрибут cn может содержать значение Babs Jensen. Атрибут mail может содержать значение "babs@example.com". Атрибут jpegPhoto будет содержать фотографию в бинарном формате JPEG.

Дерево каталога LDAP (традиционное именование записей)
Представление структуры LDAP в программе Luma

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

Механизм работы

LDAP использует клиент-серверную модель. Один или несколько серверов LDAP содержат информацию, образующую информационное дерево каталога (directory information tree, DIT). Клиент подключается к серверу и делает запрос. В ответ сервер отправляет результаты обработки запроса и/или указатель на то, где клиент может получить дополнительные сведения (обычно, на другой сервер LDAP). Независимо от того, к какому серверу LDAP подключается клиент, он увидит одинаковое представление каталога; на записи, расположенные на одном сервере LDAP, будут указывать правильные ссылки при обращении к другому серверу LDAP, и наоборот. Это важная особенность глобальной службы каталогов. Перечень наиболее известных на сегодняшний день LDAP-серверов:

  1. OpenLDAP
  2. ForgeRock OpenDJ
  3. Novell eDirectory
  4. Apple Open Directory (форк проекта OpenLDAP)
  5. Microsoft Active Directory
  6. Samba4 LDAP (OpenSource-реализация MS AD)
  7. RedHat Directory Server
  8. 389 Directory Server (по сути тестовая версия предыдущего)
  9. Oracle Directory Server
  10. Apache Directory Server
  11. IBM Tivoli Directory Server
  12. IBM Domino LDAP
  13. CommuniGate LDAP

Область применения

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

  • Элемент маркированного списка
  • Идентификация компьютеров
  • Аутентификация пользователей
  • Группировка пользователей (в том числе системные группы)
  • Адресные книги
  • Представление штатно-кадровой структуры организации
  • Учет закрепления имущества организации за сотрудниками
  • Телефонные справочники
  • Управление пользовательскими ресурсами
  • Справочники адресов электронной почты
  • Хранение конфигурации приложений

Хранение конфигурации АТС

Стандарты

Протокол LDAP определён в следующих RFC:

  • RFC 4510 — Lightweight Directory Access Protocol (LDAP): Technical Specification Roadmap (заменяет RFC 3377)
  • RFC 4511 — Lightweight Directory Access Protocol (LDAP): The Protocol
  • RFC 4512 — Lightweight Directory Access Protocol (LDAP): Directory Information Models
  • RFC 4513 — Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms
  • RFC 4514 — Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names
  • RFC 4515 — Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters
  • RFC 4516 — Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator
  • RFC 4517 — Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules
  • RFC 4518 — Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation
  • RFC 4519 — Lightweight Directory Access Protocol (LDAP): Schema for User Applications
  • RFC 4520 (aka BCP 64) — Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP) (заменяет RFC 3383)
  • RFC 4521 (aka BCP 118) — Considerations for Lightweight Directory Access Protocol (LDAP): Extension

См. также