Share all details related to your problem, including any error messages you may have received.
In our solution, we are using CREATE provisioning policy for Active Directory. So, whenever any AD group (entitlement) is assigned to an identity, CREATE provisioning policy is evaluated and AD account is created.
We need a solution, where AD account should be created only for birth right roles/entitlements. If there is no AD account for a user and the AD role/entitlement is requested by a user which is not a birthright role/entitlement, then AD account should not be provisioned. However, since we have CREATE provisioning policy, AD account gets created if there is no account already present.
Customer scenario: New user onboarded in SailPoint and AD account is provisioned. The user does not login using the AD account and hence the account is disabled and moved to archive OU by AD disabler script scheduled on Active directory after a certain period of time. (Note: Current SailPoint implementation does not read the archive OU, so no AD application link is present for the identity once the account is moved to archive by disabler script). Now the user is back and request for a role, and since the AD account is not present, CREATE provisioning policy creates a new AD account. So, we need to restrict this. Is there anyway we restrict the creation of AD account based on entitlements / roles requested in “AD Before Provisioning Rule” ?
You can do that - in before provisioning rule you have account request with create set as operation and attribute requests for memberOf attributes.
You can in this rule just inspect if operation is create and memberOf contains any of the restricted entitlements you can just remove this account request from provisioning plan.
Hello Pravin,
Thanks for looking into the issue.
The challenge is that in BeforeProvisioning Rule we don’t have the roles information.
We just have the memberof attribute values (AD group values) in the plan.
Hence, we need some way to find the parent role of any entitlement (AD group) and then check if the role is birth right role or not.
@milinaphalke Normally we maintain birthright role in some custom file like joiner custom file. if not then you can maintain one custom file Or Create a method to get all Birthright role, it should be one filter and you will get all B Roles. then you can check in before provisioning rule.
Thank you @pravin_ranjan.
Yes, we also have a custom file having birth right roles defined.
Challenge is in the before provisioning rule, we don’t get the roles in plan, we are just getting the memberof attribute with AD group values.
So not able to back track to roles from memberof AD group values which are entitlements of the role.
We may need to define another custom file having entitlements (AD groups) which are part of birth right roles ?
@milinaphalke is this not your requirement “if entitlement /memberof group is part of birthright role or not” ?
if yes, let’s see if below logic works ?
you have memberOf from plan
here you can call generic method to get all groups that are part of BR Roles ( this method should read role from custom file - method provided in thread)
Now you have both groups list, one from plan and one from roles. i think you can easily check if groups from plan is part of groups from roles or not.
Thank your @pravin_ranjan .
We have plenty of entitlements as part of birthright roles for different user types and their subtypes and the same entitlement can be requestable for some cases.
We will give a try on the approach suggested.
Thanks & Regards.
Milina Phale
Is your birthright role provisioning happens via Life cycle event and does this provisioning done via LCM provisioning workflow or provisioner API? I wanted to understand does this have a tracking identity request ID
@milinaphalke
Can you try printing the plan xml in your before provisioning rule done via Birth right role
I believe your plan xml will have either have the Identity Request ID or provisioning transaction ID from which you can actual traverse back to that request and see if thats actually birthright role request part of your configurations then if that satisfies you can have conditions accordingly
We have done a similar check in one of our case but again it depends on your implementation as well, so I would suggest you to print the plan xml and share if possible here
Created an IdentityRequest object by lookup of the ID.
Retrieved the IdentityRequestItems. Here I could see one of the items as assignedroles as shown below sailpoint.object.IdentityRequestItem@19a93b59[id=7f0000018fb8131381903b100cff75ee,name=assignedRoles]
Here I don’t see the role values and neither I see any way to retrieve the same.
I am trying out few things like getting the ProvisioningPlan using IdentityRequestItem and then call getIIQAccountRequest() and then try to retrieve the roles from it.
Can you please confirm if I am going in the right direction.
Hello @milinaphalke
Please check if any of the following options works for you:
Option 1: If you want to allow users to request and provision AD group access, even if the link is not present but they have an account on AD:
1. Segregate your birth right roles for AD as below.
2. Basically Birthright Role 1 to just create AD account (just refer the AD application on the provisioning policy of role) from Joiner
3. Birthright role 2 to assign the birth right AD groups. With your existing logic criteria add one more logic which look for if user have an existing AD account. This will prevent AD account creation from this role. It will only provision birth right groups if they have an account (handled in step 2).
4. In your before provisioning roles look for if in your account request have any group/entitlement then it's a Update else it's a Create.
Option 2: Prevent users to submit AD groups request if there is no AD link on the profile:
Here I am assuming that birth right provisioning is automated from joiner and all the active user will have AD account with birth right groups.
1. Create a RequestObjectSelector rule and add to the Quicklink (Everyone or selfservice based on your requirement ) > What can members request? > Entitlements
2. In the RequestObjectSelector rule you can add a logic to only show the AD entitlement if the selected user have AD application link.
This will prevent user to even see the AD based groups, if there is no AD application link on their profile in access request catalog.
3. Once user is back and moved to the active OU which is retrieval from your AD. They will be able to see the AD entitlements for request automatically.