Работа с группами в OpenLDAP

Чёткого определения того, что же считается группой в каталоге LDAP/X.500, не существует. Оно и понятно. По аналогии с тем, что запись каталога становится учётной записью пользователя лишь в том случае, когда приложение-клиент начинает рассматривать её в качестве таковой и выполнять с её помощью аутентификацию, запись каталога становится групповым объектом лишь тогда, когда приложение-клиент воспринимает её таковой и принимает на её основании решения о каких-либо действиях, например, о предоставлении членам группы тех или иных полномочий (авторизация), многократном выполнении определённых заданий (например, отправка почтовых сообщений по спискам рассылки) и т.п. В общем, групповые объекты в каталоге LDAP никогда не стоит рассматривать как вещь в себе, они всегда рассматриваются в контексте какого-либо приложения, работающего с этим каталогом. Собственно, каталоги всегда проектируются и создаются в расчёте на работу с ними определённых приложений и исходя из возможностей этих приложений.

Тем не менее, существуют такие объекты, которые воспринимаются в качестве "стандартных" групп многими приложениями. В первую очередь речь идёт о записях, построенных на определённых в RFC 4519 объектных классах groupOfNames и groupOfUniqueNames. В первом из них члены группы определяются как значения атрибута member, имеющего синтаксис DN, то есть в этом атрибуте указываются уникальные имена (DN) записей каталога, являющихся членом этой группы. Во втором объектном классе членство определяется значением атрибута uniqueMember, имеющего более экзотический синтаксис Name and Optional UID (позволяет совместно с DN записи указывать необязательный уникальный идентификатор, чтобы отличить указанный объект от других с тем же самым уникальным именем, например, если уникальное имя было повторно присвоено записи после удаления предыдущей записи с тем же именем). Без всяких проблем можно задавать в значении атрибута uniqueMember обычное DN записи каталога. Естественно, значения как атрибута member, так и атрибута uniqueMember в пределах одной записи должны быть уникальны (требование целостности схемы данных каталога).

Менее распространёнными объектами группового типа являются роли, то есть записи с определённым в том же RFC 4519 объектным классом organizationalRole и атрибутом членства roleOccupant (синтаксис DN). Очевидно, что в первую очередь они предназначены для использования в системах управления доступом на основе ролей (Role Based Access Control, RBAC), но, по сути, ничем не отличаются от других групповых объектов.

Наконец, многие приложения воспринимают в качестве групп так называемые объекты POSIX-групп, то есть записи каталога, основанные на определённом в RFC 2307 объектном классе posixGroup и предназначенные для представления традиционных UNIX-групп. В отличие от перечисленных выше групповых объектов, в posixGroup значением атрибутов членства memberUid являются обычные строки (синтаксис IA5 String), в которых, по соглашению, указываются имена учётных записей пользователей UNIX. Если в случае атрибутов с синтаксисом DN, или, как их ещё называют, "ссылочных" атрибутов (поскольку они ссылаются на записи каталога), установить прямое соответствие между указанием членства в группе и реальной записью в каталоге не составляет труда, то в случае POSIX-группы установление такого соответствия полностью перекладывается на приложение-клиент. Поэтому в случае объектов каталога, сформированных на основе объектного класса posixGroup, правомернее говорить не о записях-группах, в которых перечислены ссылки на записи-члены, а о записях-списках, в которых перечислены сгруппированные по какому-либо принципу характеристики объектов (в данном случае имена учётных записей пользователей UNIX).

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

Содержание

Pro-LDAP.ru 2013-2020 г. Последнее изменение страницы — 9 января 2020 г. Вопросы и предложения принимаются на форуме проекта.