Understanding Access Provisioning and Underlying Policies in Immuta
Private preview: The Marketplace app is available to select accounts. Reach out to your Immuta representative for details.
One of the key benefits of using the Immuta Marketplace app is that access provisioning is automatic: if you're approved access, Immuta is able to automatically provision the access to the data sources in the data product natively in the data platform(s) using existing Immuta Governance app capabilities.
Furthermore, how that provisioning occurs avoids leaking implementation details by not exposing roles to data consumers at all. Data consumers request access to data products, not roles, and Immuta calculates the most efficient policy within the data platform to represent that access, on demand, invisibly to the user. This is done by leveraging the Immuta attribute-based access control (ABAC) logic that Immuta has perfected since its inception.
Below are the actions Immuta takes in order to provision access:
Before any data products are created
Immuta creates a single policy that is on standby, ready to service data product access approvals. With just this single policy, all access requests can be provisioned. That policy has the following logic:
Allow users to subscribe when @hasTagAsAttribute('Immuta Marketplace', 'dataSource')
On data sources tagged Immuta Marketplace Data Product
The Share Responsibility
option is also checked in the policy.
This policy is protected and cannot be altered or deleted.
When a data product is created
Each data source in the data product is automatically tagged with the following tag, which cannot be removed except by un-publishing or deleting the data product:
Immuta Marketplace Data Product.[data product ID]
The Immuta Marketplace Data Product
tag is protected and cannot be applied to other data sources manually.
When a user is approved to a data product
The user that was approved access has the below attribute added to them, which cannot be removed unless the user is manually revoked access from the Marketplace or the data product is deleted:
Immuta Marketplace: Immuta Marketplace Data Product.[data product ID]
More explicitly, the attribute key = Immuta Marketplace
and the attribute value = Immuta Marketplace Data Product.[data product ID]
The attribute key Immuta Marketplace
is reserved and cannot be applied to users manually, nor can additional values be manually added to that attribute key.
That simple step of Immuta automatically adding that attribute to the user upon approval will trigger Immuta to provision the access in the native data platform(s) per the policy.
If you would like to understand how the policy is translated into an actual set of grants in your data platform, please review the integration documentation for the specific data platform.
Understanding the policy
Let's break the policy down step by step:
Allow users to subscribe when @hasTagAsAttribute('Immuta Marketplace', 'dataSource')
What this policy is saying is that it will check the user's attributes under the key Immuta Marketplace
and see if anything under that key matches a tag on the data source.
Using a real example, let's say our data product ID is cm4bn6jpi0018wvprctnj5er2
and user Taylor
was approved access to it:
Each data source in the data product would be tagged:
Immuta Marketplace Data Product.cm4bn6jpi0018wvprctnj5er2
Taylor
would be given the attribute valueImmuta Marketplace Data Product.cm4bn6jpi0018wvprctnj5er2
under the attribute keyImmuta Marketplace
. There could already be several other values (the values are an array) under thatData Product
key providing Taylor access to other data products.
As you can see, at least one of Taylor's attribute values (Immuta Marketplace Data Product.cm4bn6jpi0018wvprctnj5er2
) under attribute key Immuta Marketplace
matches the tag on the data source (Immuta Marketplace Data Product.cm4bn6jpi0018wvprctnj5er2
), so Taylor will be provisioned access by Immuta as soon as that attribute is attached to Taylor (or the tag is attached to the data source, as long as they both match, access is automatically provisioned). This is ABAC.
However, there's two additional pieces worth understanding:
On data sources tagged Immuta Marketplace Data Product
means that this policy will only apply on data sources with theOn data sources tagged Immuta Marketplace Data Product
tag.
Tag hierarchy is dot .
notated in Immuta, so even though this only says Immuta Marketplace Data Product
it will work on data sources tagged Immuta Marketplace Data Product.cm4bn6jpi0018wvprctnj5er2
because it matches the root tag in the hierarchy.
Share Responsibility
means that if this policy is merged with existing birthright policies, it will be OR'ed together with the existing policy. Should the policy, the one being merged with, haveAlways Required
then it will be AND'ed with this policy, which is what rightfully can cause access to not occur even if approval was given.
This single policy is able to handle all possible data products because it's driven purely based on matching the user attribute values to the data source tags. So simply updating the attributes and tags drives the policy into action.
Last updated