Добавление многофакторных отношений в схему ldap

У меня есть сервер LDAP, который имеет следующие типы объектов:

  • person - пользователи; перечислены в ou=people,dc=example,dc=com
  • organization - компании, которые являются нашими клиентами; перечислены в ou=clients,dc=example,dc=com
  • organizationalUnit - регионы офисов; перечислены в ou-regions,dc=example,dc=com
  • office - офисы; перечислены в ou=locations,dc=example,dc=com

В рамках нашего дизайна приложения каждый клиент определяет для себя набор правил RBAC. Например, клиент может создать следующие роли:

  • organization-admin - управляет данными компании
  • region-admin - управляет данными региона
  • region-manager - путешествует между всеми филиалами в регионе
  • branch-manager - управляет филиалом
  • branch-staff - работает в филиале

Может быть произвольно больше ролей, и это возможно для одного person иметь несколько ролей.

Проблема в том, что отображение пользователей на роли не является простым отношением "многие ко многим", для которого я мог бы сделать свои версии organization, organizationalUnit, а также office вести себя как groupByName объекты с несколькими members. Вместо этого мне нужно, чтобы мои отношения были трехсторонними - связь между пользователем, офисом (или регионом, или клиентом) и ролью.

(Прямо сейчас мы используем базу данных SQL с трехсторонней сводной таблицей, которая имеет столбцы user_id, role_id, а также location_id, но я не хочу продолжать управлять этими данными за пределами LDAP, если все остальное находится внутри LDAP.)

Как я могу смоделировать эти отношения в LDAP?

0 ответов

Другие вопросы по тегам