thanks for help. Think I got that, was just trying to configure. Still my problem is that once the runtime is configured I'm not able to add sec domains. E.g. I'm configuring it with Suffix: secAuthority=Default and Domain: tenantA it creates the LDAP structure and I can use tenantA sec Domain, no prob. But to add another one I need to unconfigure and configure again with same Suffix and different Domain parameters. During unconfigure the initial Domain will be removed from the LDAP and probably as well from the PD DB. So I still don't know how to add a new Domain, which was my initial problem.
Also, using different suffixes for brings you in trouble with SCIM, while I guess it's a problem with more than one Domain anyway. SCIM can't be configured to more than one Suffix.
Original Message:
Sent: Tue September 08, 2020 12:24 PM
From: Sylvain Gilbert
Subject: WebSEAL delegated Administration
Hi Jens,
Sorry. what I meant to recommend is to create separate LDAP suffixes for your containers of inetorgperson (or similar) objects. For instance, your secuser objects and inetorgperson could be laid out as follow:
- SecUser hierarchy (you don't decide that, ISAM will do it for you upon creation of each sec domain) – below these all fall under the same "secAuthority=default" LDAP suffix:
- cn=users,secAuthority=default
- cn=users,secAuthority=tenantA,cn=Subdomains,secAuthority=default
- cn=users,secAuthority=tenantB,cn=Subdomains,secAuthority=default
- cn=users,secAuthority=tenantC,cn=Subdomains,secAuthority=default
- 2. Whereas for your inetorgperson suffix hierarchy, it could look like this:
- ou=people,dc=abc,dc=tenantA (LDAP suffix dc=abc,dc=tenantA)
- ou=people,dc=abc,dc=tenantB (LDAP suffix dc=abc,dc=tenantB)
- ou=people,dc=abc,dc=tenantC (LDAP suffix dc=abc,dc=tenantC)
Note also that there is a configuration entry you can add (ivmgrd.conf) to further isolate between your different LDAP suffix containers (different domains):
- [domain=tenantA] allowed-registry-substrings = dc=abc,dc=tenantA
- [domain=tenantB] allowed-registry-substrings = dc=abc,dc=tenantB
- [domain=tenantC] allowed-registry-substrings = dc=abc,dc=tenantC
This will make sure that users don't end-up in the wrong LDAP container (suffix) by mistake by an admin.
Again, you don't have to create new LDAP suffixes for every of your new domain. This is just a recommendation. You could very well also create a single new LDAP suffix for all your inetorgperson objects, but then you still need ensure to segment them somehow (by OU containers …).
Cheers
------------------------------
Sylvain Gilbert
------------------------------
Original Message:
Sent: Tue September 08, 2020 11:28 AM
From: Jens Petersen
Subject: WebSEAL delegated Administration
Hi Sylvain,
thanks for that description. I couldn't find much within the documentation about this. When I get you right, you would configure a Suffix like secAuthority=Default and underneath create another secAuthority for each tenant. But how is that handled with the Runtime? You can configure it just once. Does it automatically register the subordinated containers and create the su structures needed?
cheers,
Jens
------------------------------
Jens Petersen
Original Message:
Sent: Tue September 08, 2020 09:17 AM
From: Sylvain Gilbert
Subject: WebSEAL delegated Administration
In ISAM, it is called "secure domain". Everything you put in a new secure domain remains there and shielded from other domains. You can add users, groups, acl, pop, junction, … and server daemons (such as webseal, AuthZ) must be configured and inserted in corresponding secure domain. In other word, a particular webseal instance once configured against a secure domain can only serve users (and other resources) of that domain. You can run several webseal instances that are member of different domains on the same appliance. Also, once a user is created inside a particular secure domain, they cannot participate in other secure domains.
When implementing ISAM secure domain, you will want usually (as best practice advise) to ensure to lay them in different suffixes in your user registry to that they don't ever overlap if you intend to have the same userid created in different secure domains. And as far as SecUser objectclass are concerned, they are laid out in sub-ou containers such as the following assuming you create secure domain tenantA, tenantB, tenantC, …
- cn=users,secAuthority=tenantA,cn=Subdomains,secAuthority=default
- cn=users,secAuthority=tenantB,cn=Subdomains,secAuthority=default
- cn=users,secAuthority=tenantC,cn=Subdomains,secAuthority=default
You can have only one-level of subdomain. When you start creating secure domains, I encourage that you create one for every of you end-user communities (or tenants) so that in the end, the "Default" secure domain is nothing else than an empty top-level admin domain. This way, there can be no confusion about any assumed higher authority/permissions that resources in one sub-domain have other the others.
A use-case for this can sometime be to run several "tenants" inside the same appliance/infrastructure.
In our case, we did not implement ISAM Secure Domain for the purpose of delegated administration but rather this was for completely segmenting administratively each "tenant" into their owner "container".
Heads-up: When implementing ISAM secure domain, if you have any provisioning solution connected to your ISAM deployment (such as ISIM for instance), you will need to adjust those provisioning workflows to ensure to provision users in the right ISAM secure domain; ISIM provisioning adapter such as the "ISIM TAM Combo Adapter" support provisioning users in different domains although you might need to configured several instance of that service in ISIM.
We've never used ISAM Secure Domain for the sole purpose of delegated user administrations, however.
The sole components that can bridge between the numerous ISAM secure domain created (Default and other) is the ISAM Policy Server; there will not be a unique instance per domain. The ISAM Policy Server will create a new master authorization database for every new secure domain: this is how it is ensuring that all resources and their permissions are isolated by domain. For instance, an ACL created in tenantB will not be made available in tenantC for instance nor in the Default domain.
Hope this helps.
------------------------------
Sylvain Gilbert