Привет ЛОР!
Собственно есть сервера с openldap. Есть необходимость ограничивать права доступа и острое желание предоставлять только необходимые данные. В связи с этим я навертел всяких разных прав с разграничением по полям, вложенными группами, регэкспами для разных контейнеров, чтобы не повторяться и т.п. И теперь всё это люто тормозит.
Учёток не так уж и много, где-то 14 тыс., из под rootdn всё быстро бегает. Все записи можно получить за пару секунд. А вот из под учёток, для которых проверяются права всё в разы дольше. Дело начинает идти на десятки минут.
Собственно вопрос, как вы раздаёте права, имеет ли смысл отказываться от регэкспов, от вложенных групп или от групп целиком? Портянка с правами довольно длинная, заполняю её я руками и не хотелось бы превращать простое добаление пользователя в кучу копипасты, приводящей к ошибкам.
Может быть посоветуете какую-нибудь морду, которая позволяет удобно раздавать права, но при этом генерирует не тормозящие olcAccess листы?
Пример:
olcAccess: to dn.regex="^uid=[^,=]*,ou=(students,ou=sync|asp,ou=sync|int,ou=sync|mag,ou=sync|ord,ou=sync|other,ou=sync|people),dc=education,dc=local$" attrs=telephonenumber,mail
by dn.exact="cn=lib_auth_user,cn=users,dc=ad,dc=local" write
by dn.exact="cn=portal auth user,cn=users,dc=ad,dc=local" write
by self write
by set="[cn=admins,ou=groups,dc=education,dc=local]/member* & user" write
by set="[cn=accountManagers,ou=groups,dc=education,dc=local]/member* & user" write
by set="[cn=lurk,ou=groups,dc=education,dc=local]/member* & user" read
by * none