Назад | Перейти на главную страницу

Какие разрешения пользователя необходимы для доступа (чтения) операционных атрибутов в openldap

Сейчас настраиваю сервер openldap. Для определения прав пользователей я использую файл ldif. Чтобы проверить разрешения и убедиться, что все работает должным образом, я использую Apache Directory Studio.

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

Дополнительно мне нужно знать, к каким группам принадлежит пользователь. Для этого я хотел использовать операционный атрибут memberOf который поддерживается openldap. К сожалению, только «глобальный» администратор может видеть рабочие атрибуты. Если я попытаюсь получить операционные атрибуты в Apache Directory Studio с помощью локального администратора или простого пользователя, рабочий атрибут не будет отображаться / извлекаться.

Я попытался предоставить этим пользователям разрешение на чтение для всех атрибутов-членов, в которые вводится их dn, с помощью следующего правила:

olcAccess: to attrs=member,entry
     by dnattr=member selfwrite
     by * break

Это правило похоже на правило в конце Документация openldap, глава 8.3.5. Кажется, это вообще не работает, поэтому я попытался добавить общее правило для доступа к записям ролей:

olcAccess: to dn.regex="ou=Roles,dc=([^,]+),dc=customers,dc=domain,dc=de$" attrs=entry,@groupOfNames,children
     by group.expand="cn=Administrators,ou=Roles,dc=$1,dc=customers,dc=domain,dc=de" write
     by group.expand="cn=ProductionUser,ou=Roles,dc=$1,dc=customers,dc=domain,dc=de" read   
     by group.expand="cn=TestUser,ou=Roles,dc=$1,dc=customers,dc=domain,dc=de" read
     by * break

С помощью этого правила любой пользователь может читать все записи ролей для своей ветви. Операционные атрибуты или, по крайней мере, memberOf по-прежнему не будет виден пользователям.

Итак, какие разрешения мне нужно предоставить, чтобы каждый пользователь мог читать хотя бы memberOf-атрибут для собственной записи?

Похоже, моя попытка была сложной. С общим правилом доступа ко всему для self вроде все работает как хотелось:

olcAccess: to * 
     by self read

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