Я настраиваю сервер 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
- атрибут для собственной записи?
Pare chì a mo prova sia stata cumplessa. Cù una regula di accessu generale à tuttu per sè
tuttu pare funziunà cum'ellu si vole:
olcAccess: to *
by self read
Cù sta regula ogni utilizatore pò leghje tuttu ciò chì tocca à a propria entrata (è micca solu a propria entrata stessa) cumprendu a attributi operativi.