This has been a long time coming!!! This has been my personal goal to drive this and to get help to build something for the community. Thanks for the great internal support this vision is finally coming true for me!!!
I am not a coder and definitely have 0 knowledge on Angular. But just have been looking and improvising on some existing codes after building a framework with someone who had the know-how. Have had a great support team to help build with me. Weekends, nights.. all sweat and blood 🙂Â
NOTE:Â This application is not developed, maintained or supported by SailPoint. It is built and based on a community effort. We are hoping people will contribute and help it grow.
About the tool
The goal of this project was to lessen the pain we saw in the field during deployment and go-live and by clients during daily op. I also wanted to drive the goal of a GUI model for easy and codeless interaction for end users for some basic tasks.
In an ideal world, wish we had dedicated time and knowledge on how to keep building on this but…
We are looking for (list is not exhaustive)
Help from internal and external community if they are interested in spreading the word
Help from keen internal and external community to help us build more features and extend existing ones.
GitHub and Actions know-how to help management and auto build / deploy / version et al
Help us make the Angular framework better and plug holes if any.
Help us enhance it (pagination, current build documentation / standardizing and refactoring code et al .. list is endless)
Testing, finding, and reporting and hopefully help fixing bugs – we are bound to find lot of issues to being with as its very new and not many people have used it. Please use in sandbox environment first.
Looking for contributors for the repo to help us set it up properly
Features
Current Feature list is
Find Multiple Accounts in source and download report
Bulk Manage Roles (Enable/disable/mark unmark as requestable/delete)
Bulk Manage Source Owners
Misc
Check and Set Org Time
Screenshots
Technical
It is an Angular app and using Electron to build for various environments. There is some technical how-to in the readme file. Currently hosted on GitHub repo and open source with MIT license.
I really hope this tool helps you in some way and feel free to enhance it and spread the word!!!
Hopefully this year is better than previous and as always.. stay safe!!!
Anyone who would have worked with IDN would have used or encountered rules. They are wildly used and inevitable component of any deployment to achieve your requirements. So you must be well aware that no client, partner and in fact most of internal SailPoint PS/ES also don’t have access to deploy their rules to their tenants. These rules are reviewed by a specialist team within ES and they upload it to the tenant. There are some very good reasons for doing so due to the SaaS nature of our product and IDN architecture.
There is a lot of work being done to reduce dependency on rules and also a lot in pipeline to make this process simpler. This also does increase our own workload on tickets, review and deployment and we want to reduce it too as IDN has exploded into the world in past few years and new tenants onboarding everyday.
Current Process of Rule upload
Send it to SailPoint as an ES ticket. Support will forward it to ES if not as rule review is a billable task.
Rule review is done and uploaded to tenant.
Ticket is responded to and closed after confirmation.
To make this process faster and seamless do follow some best practices
Best to keep the same structure and print of code so it’s easy to see the difference in git for us.
Once the rule has been uploaded to your tenant, there might be a need of additional steps to attach the rule to your source (depending on the type of rule). Once the rule is uploaded you will need the RuleID for some of the rules (mentioned below) to attach it to your source. Please ask the ES person for it if not already given. It will be a long random GUID. We use Postman to execute the API calls but feel free to use your choice of client.
There is a great guide written internally by Neil McGlennon but I am expanding on it.
Few common things found below
{ruleID}: This is the rule ID generated after rule is uploaded to your tenant. Ask ES for it if not given already
{Rule Name}: This is the name of your rule.
{id}: This is the externalID of the source you want to attach it to. It is a long GUID and NOT the shortID found in the URL. You can obtain it by few different methods but simplest is by doing a GET /cc/api/source/get/{shortSourceID} where “shortSourceID” is the ID of the source found in the URL when clicking on it in the tenant.
All the API calls use https://{tenantname}.api.identitynow.com/ as the URL (before /beta/…)
All of these examples use a PATCH for a partial source update, however PUT operations will work too, as long as the entire source object model is provided.
For the PATCH operations, a op key has to be provided. For new configurations this is typically set to add as our example shows, however they can be any of the following:
add – Add a new value to the configuration. Use this operation if this is the first time you are setting the value, i.e. it has never been configured before.
replace – Use this operation to change the existing value. Use this operation if you are updating the value, i.e. you want to change the configuration.
remove – Removes a value from the configuration. Use this operation if you want to unset a value.
Beware! Removals can be destructive if the path isn’t configured properly. This could negatively alter your source config!
Once any of the rule is attached, it’s ready for use immediately by the source or profile.
Hopefully this covers all rule types and if you have any issues with attaching a rule in your tenant, please feel free to reach out to me or to Support / ES team.
Since the last time we chatted about transforms and had said we are in process of adding new types in future. Well.. here we are with few news ones fresh out of the oven!!!
They will greatly help you achieve your goals without the need of rules. Please do revisit them while doing your design or upliftment. The goal is to minimise dependency on rules and by using transforms it gives you more control over the testing and deployment process.
The date math transform allows you to add, subtract and round components of a timestamp to or from an incoming value. It also allows you to work with a referential value of “now” to run operations against the current date and time instead of a fixed value.
Imagine using this for LCS calculation if simple or just to get some dates for different systems say 10 days in future or so.
The username generator transform allows you to specify logic to use when attempting to derive a unique value for an attribute in an account create profile, . Oftentimes this can be as simple as combining parts of a user’s name and/or HR data (e.g., firstName.lastName), but sometimes generator logic such as a uniqueness counter might be needed to find a unique value in the target system (e.g., firstName.lastName1 if firstName.lastName is already taken).
How about ditching an AttributeGenerator rule and using this?Â
The UUID generator is a simple transform allows you to create a universal unique id (UUID) in the form of a 36-character string. The underlying code is written in such a way as to provide a 1 in 68,719,476,736 chance of creating a string that actually collides with another string within the tenant.
The name normalizer transform allows you to clean or standardize the spelling of strings coming in from source systems. Most commonly, this pertains to names and other proper nouns, but the transform is not necessarily limited to those data elements.
The get reference identity attribute transform is an out-of-the-box rule transform provided via SailPoint’s Cloud Services Deployment Utility rule. It allows you to easily get the identity attribute of another user from within a given identity’s calculation. As a convenience feature, the transform allows you to use “manager” as a referential lookup to the target identity.
Want the manager’s employee number, email, phone and other details listed easily on the profile?? so easy now!!!
And so many more added.. Do review the full list here and see what can benefit you from removing rules and going down the transform path
Only changes to docker-compose.yaml was the path to my own locations. Also ports as current 8080 were used for other containers. Passwords and ports obviously changed 🙂Â
apt-getinstall-yapt-utils wget vimunzip tar default-mysql-client openjdk-11-jdk
# Define commonly used JAVA_HOME variable
ENVJAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64
RUN java-version
# Get Tomcat
RUN wget--quiet--no-cookies http://www-eu.apache.org/dist/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz-O/tmp/tomcat.tgz&&\
Need to change TOMCAT_VERSION to the one available on http://www-eu.apache.org/dist/tomcat/tomcat-9/ at the time of build
For some reason in my latest build webapps folder was empty. Had to do manual steps from Dockerfile after login to the sail point_iiq-8085 container. Had to run the webapps folder part (IIQ war file and index file deployment) and then restart container. Will try to figure out later what broke it.
After a few runs I got it up and running on latest version (IIQ 8.1 at the time of writing) and with persistent storage.