Добавление многофакторных отношений в схему 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
объекты с несколькими member
s. Вместо этого мне нужно, чтобы мои отношения были трехсторонними - связь между пользователем, офисом (или регионом, или клиентом) и ролью.
(Прямо сейчас мы используем базу данных SQL с трехсторонней сводной таблицей, которая имеет столбцы user_id
, role_id
, а также location_id
, но я не хочу продолжать управлять этими данными за пределами LDAP, если все остальное находится внутри LDAP.)
Как я могу смоделировать эти отношения в LDAP?