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

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

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

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

  • Записи LDAP
  • DN (отличительное имя)
  • RDN (относительное отличительное имя)
  • Атрибуты LDAP
  • Классы объектов
  • OID (идентификатор объекта)
  • Фильтры поиска
  • Поиск базового DN

Записи LDAP

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

DN и RDN

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

DN формируется путем объединения относительных отличительных имен (RDN) записи и ее родительских записей. Каждое RDN представляет собой компонент пути, а DN создается путем соединения этих компонентов запятыми (,) или другими символами-разделителями. Порядок RDN в DN отражает иерархический порядок записей в каталоге. Каждый RDN содержит одну или несколько пар атрибут-значение, например uid=john.doe. Если RDN содержит более одной пары атрибут-значение, они разделяются знаком плюс. Например, uid=john.doe+givenName=John. Теперь давайте рассмотрим пример записи DN.

CN=John Doe,OU=Users,DC=example,DC=com

Атрибуты

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

  • uid (идентификатор пользователя): используется для хранения уникальных идентификаторов пользователей.
  • “sn” (фамилия): содержит фамилию или фамилию человека.
  • “givenName”: сохраняет имя или имя человека.
  • mail (адрес электронной почты): используется для хранения адресов электронной почты.
  • “telephoneNumber”: содержит телефонные номера, часто в стандартизированном формате.
  • «описание»: хранит текстовые описания или дополнительную информацию о записи.
  • «ou» (организационное подразделение): представляет организационное подразделение в иерархии.
  • “dc” (компонент домена): содержит компоненты домена в доменных именах.
  • “objectClass”: определяет классы объектов, связанные с записью, определяя ее тип и атрибуты.

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

Давайте еще раз посмотрим на DN выше:

  • CN=John Doe представляет атрибут общего имени со значением «Джон Доу».
  • OU=Users представляет атрибут организационного подразделения со значением «Пользователи», указывающим, что запись находится в организационном подразделении «Пользователи».
  • DC=example и DC=com представляют атрибуты компонента домена со значениями «example» и «com» ​​соответственно.

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

В LDAP класс объекта определяет набор атрибутов, которые может иметь запись, а также правила, управляющие использованием этих атрибутов. Классы объектов классифицируют записи на основе их характеристик и определяют атрибуты, которыми могут обладать записи этого класса. Класс объекта может указывать, какие атрибуты являются обязательными (должны присутствовать), а какие необязательными (могут присутствовать, но не являются обязательными). Это гарантирует, что записи будут придерживаться единообразной структуры. Например, класс объектов для «человека» может включать такие атрибуты, как «cn» (общее имя), «sn» (фамилия), «givenName» и «mail». Эти классы объектов идентифицируются уникальными идентификаторами объектов (OID). Эти OID гарантируют универсальное распознавание классов объектов и позволяют избежать конфликтов в разных каталогах LDAP.

Классы объектов могут наследовать атрибуты и свойства других классов объектов. Это позволяет создавать более специализированные классы объектов, основанные на атрибутах более общих классов. Например, класс «inetOrgPerson» может наследовать атрибуты классов «person» и «organizationalPerson».

Фильтры поиска

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

  • Атрибут поиска: атрибут, на котором основан поиск. Он указывается типом атрибута, например «cn» (общее имя), «uid» (идентификатор пользователя) и т. д.
  • Оператор фильтра: оператор, определяющий способ сравнения значений атрибута. К распространенным операторам относятся «=», «›», «‹», «~=» (приблизительное совпадение) и «›=».
  • Значение: значение, с которым сравнивается атрибут. Это может быть буквальное значение, подстановочный знак или регулярное выражение, в зависимости от оператора.

Фильтры можно комбинировать с помощью логических операторов для создания сложных критериев поиска. Например:

  • (&(attribute1=value1)(attribute2=value2)): записи, соответствующие атрибуту1=значение1 и атрибуту2=значение2.
  • (|(attribute1=value1)(attribute2=value2)): записи, соответствующие атрибуту1=значение1 или атрибуту2=значение2.

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

  • Область базового объекта: поиск ограничен базовой записью.
  • Одноуровневая область: поиск включает непосредственных дочерних элементов (прямые записи) базовой записи. Это исключает саму базовую запись из области поиска.
  • Область поддерева: поиск включает все записи в поддереве, корнем которого является базовое DN поиска, включая базовую запись и всех ее потомков.

В этой статье я описал некоторые основные концепции LDAP. Надеюсь, вы получили базовое представление о серверах каталогов и протоколе LDAP. Если вы хотите узнать больше о LDAP, вы можете посетить https://ldap.com/learn-about-ldap/, где содержится гораздо больше подробностей о каждой из этих концепций, которые я описал в этой статье.