Thank you Franz and Sanjay for your detailed answers, much appreciated.
The problem with using an implicit allow like you mention Sanjay, is that an allow will always (to my understanding) have priority over an exclude property, regardless of the priority set on the policies. In our hybrid RBAC, we want behavior that removes the entitlement when the role is removed. The entitlement set is unfortunately not small/manageable enough to rely solely on RBAC.
I do like the idea, that you mention Franz, of using a prefix for all RBAC entitlements and using regex to manage the whitelisting and blacklisting. I will pursue this as a possible solution.
You are correct Franz, we are currently mixing request-based and RBAC. I can't access the RFE, I'm not authorized. Are there any other ways of accessing its content?
Does anyone know if the Null Exclude that I mention in the post is intended? The way it overrides the implicit exclude behavior in the provisioning policy. If that is indeed an intended feature, it can technically be used to allow me to manage the RBAC entitlements through explicit whitelisting and blacklisting. This would be an acceptable short-term solution, but lacking scalability.
The problem is that, if that is not intended or regarded as a bug, we may have a situation in the future where an ISIM fixpack removes the bug/feature :) and the implicit exclude kicks in for the majority of our users, causing a massive loss of entitlements when enforced.
------------------------------
Jonathan Andreasson
------------------------------
Original Message:
Sent: Tue February 25, 2020 02:18 AM
From: Franz Wolfhagen
Subject: ISIM Provisioning policy implicit exclude behavior
I agree on the observed behavior is how ISIM is expected to work (note: - that does not mean that this was the original intent of the designers - some of the finer details of ISIM provisioning policy behavior comes from misunderstanding requirements and wrong implementations according to some of the real old timer ISIM people - I will not go into deeper description here :-)). Also the functionality has been problematic due to problem with the join directive/priority not working in some scenarios (e.g. not being honored in policy preview, but working fine when submitted - I believe these bugs are all fixed in the latest fixpacks).
What is trying to be obtained here is what we historically call "hybrid provisioning" - and it is a somewhat difficult discipline with the current possibilities in ISIM.
Normally I recommend either using a naming scheme (e.g. a prefix on all entitlements (groups) that are governed through RBAC) or some attribute scheme (e.g. placement in AD OU structure). Naming schemes has the great advantage that you can then easily implement them using the regex mechanism - using attributes based schemes are more complex and requires some advanced JavaScripting.
Whether you implement the RBAC controlled entitlements using whitelisting (allows) or blacklisting is as such not important (I prefer blacklisting) - the real challenge is when you start mixing (and I sense that you may be in that area) RBAC and request based...
There is an RFE (https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=137408) that is considered adding policy enforcement to the provisioning policy level which should make this much easier - alas it is a relatively big change - but you may vote for this or create your own similar RFE (I do not know if you can actually see the RFE due to security restriction...).
I have planned for many years to document some of these details - maybe there is hope - it looks like I will get a little more time working on providing help developing materials to help the field in the future - but do not hold your breath :-)
HTH
------------------------------
Franz Wolfhagen
IAM Technical Architect for Europe - Certified Consulting IT Specialist
IBM Security Expert Labs
Original Message:
Sent: Mon February 24, 2020 10:59 AM
From: Sanjay Sutar
Subject: ISIM Provisioning policy implicit exclude behavior
I dont know how many groups you have to manage through RBAC policy, i am assuming they are in hundreds if not thousands.
The behavior you mentioned, ISIM is working as per designed (as you already found out). One way to make it work is allow * , which essentially means allow any group value (to be assigned manually in ISIM or on target). But then its quite open and there is no real RBAC. If your groups are manageable and you know what set of groups can be assigned based on person's role then you can limit the allowed list to specific set based on role membership. Something like this, role1 will have groups1 mandetory and some from optional list (allowed). Removing the role1 should remove group1 and any assigned from optional list (unless there is overlap with other policy).
------------------------------
Sanjay Sutar
Original Message:
Sent: Mon February 24, 2020 09:44 AM
From: Jonathan Andreasson
Subject: ISIM Provisioning policy implicit exclude behavior
Hi,
I am experiencing some behavior with implicit excludes in the ISIM provisioning policies that I could use some feedback on.
Just to clarify I am experiencing the same behavior on multiple services and using multiple different versions of ISIM, so I will forgo talking about versions and specific endpoints/services.
The desired behavior is to have some groups (multivalued attribute) be provisioned based on role membership and some groups be owned by the service, to be provisioned manually either in the endpoint system or through ISIM.
I can then use explicit exclude to remove the group when the role is removed, like the following support page implies: how-implicitly-exclude-values-itim-provisioning-policies
So lets look at the following scenario on one service with one provisioning policy:
Say that I have a policy, policy1 that provisions group1 as a mandatory parameter if you are a member of role1 in ISIM. I see the following behavior:
- I add group2 and group3 manually to an account (not based on role membership).
- I then add the person object to role1 and enforce. Adding the person to role1 provisions group1 to the account but also removes group2 and group3 in the enforcement.
I figured out that this is the default behavior in ISIM provisioning policies according to ISIM doc (7.0.1.8, but the same is stated for earlier versions in the ISIM PDF documentation). This resource states:
- If a parameter is added for a multi-valued attribute with the parameter type as Allowed (valid), all other values for this attribute are implicitly excluded for this policy.
So is there a way to override this implicit exclude to reach our desired behavior in this case? Seems like there is one, that I stumbled upon by accident.
If you add an empty "Excluded" Group parameter using JavaScript or a Null value as the parameter type, it overrides the implicit exclude.
Is this behavior intended? Is a Null Excluded group parameter in a provisioning policy meant to override the implicit exclude?
------------------------------
Jonathan Andreasson
IAM Consultant
Enfo Sweden
GOTHENBURG
------------------------------