I'm new to LDAP and trying to find the best setup for implementing a multi level security model. I need LDAP because there are several applications that are used by the same users and I want to centralize user management.
With multi level security model I mean the following. I have companies, projects, users and roles.
I want to assign roles to each combination of company, project and user. So the combination companyA, projectA and userA has RoleA but the combination companyA, projectB and userA has not.
I need to be able to do an ldap search for a user which returns 'records' with each combination company, project and role that applies.
I know that I create create a 'object tree' in an ldap server which e.g. is setup like this
companyA
|
+---- project A
| |
| +----- roleA
| |
| +---- (attribute) member=userA
| +---- (attribute) member=userB
|
+---- project B
|
+----- roleB
|
+---- (attribute) member=userA
+---- (attribute) member=userB
but this will contain a lot of duplication of objects which seems inefficient to me.
I'd rather have 4 'lists' of data, companies, projects, roles and users and another list which contains combinations of these entries. Having more experience with relational databases, this feels more logical. But I'm aware that this setup is not logical at all in an ldap environment.
I read about ldap being able to provide access control. Using ACI's (access control instructions) it is possible to give certain users access to certain objects. Maybe this can be utilized in some manner to provide what I need?