Subscription Policies Reference Guide
Subscription policies manage table-level access to data. Governors, data source owners, or domain policy managers manage table access by authoring subscription policies that grant access or subscription policies that prevent it using one of the two subscription policy types:
Multiple policies on a single data source
More than one policy may apply to a data source. When this happens, the policies will either merge or conflict, depending on the type of subscription policies they are and their restriction levels:
will merge with each other. See the section below for details about how they will merge.
Subscription policies of the restriction levels listed below will conflict:
Anyone
Anyone who asks (and is approved)
Individual users you select
See the section below for details about policy conflicts and how to handle them.
Policy merging
ABAC subscription policies merge with AND
or OR
, depending on whether they are grant or guardrail subscription policies:
Grant policies combine with
OR
: When multiple ABAC policies that grant access apply to a single data source, they combine withOR
, so the conditions of one of the policies must be met for a user to be subscribed to the data source.Guardrail policies combine with
AND
: When multiple guardrail policies apply to a data source, they combine withAND
, so the conditions of all guardrail policies must be met for users to be eligible to subscribe to the data source. Guardrail policies only merge with other guardrail policies or global ABAC policies that grant access. See the section below for details about what happens if other policy types apply to a data source.
Expand the collapsible blocks below to see illustrations of how user access is provided or prevented when multiple policies apply to a data source:
Policy conflicts
If two or more global subscription policies of the restriction levels listed below apply to the same data source (even if an ABAC subscription policy is also present) they will conflict:
When such conflicts occur, Immuta sorts the relevant policies by name in descending lexicographical order and applies the first policy in the sorted list. For example, if a policy named "HR access" and a policy named "Executive access" apply to a data source, Immuta will automatically apply the "HR access" policy to the data source.
Renaming conflicting subscription policies could alter policy application
Because Immuta resolves non-ABAC subscription policy conflicts by policy name, renaming a subscription policy could change which policy Immuta applies.
In the example above, Immuta applied the "HR access" subscription policy to the data source when it conflicted with the "Executive access" subscription policy. If a governor changed the policy name to "Access for HR," Immuta would apply the "Executive access" subscription policy to the data source.
However, data owners can manually choose which policy will apply. To do this the data owner must
Disable the applied global subscription policy in the policies tab on a data source.
Provide a reason the global policy should be disabled.
Select which conflicting global subscription policy they want to apply.
Guardrail subscription policies
Guardrail subscription policies will be disabled when they are overwritten by data owners with a local policy or if they conflict with a global policy at any of the restriction levels below:
Anyone
Anyone who asks (and is approved)
Individual users you select
To be notified when a policy that prevents access is disabled, create a webhook that includes the policyUpdated
notification type:
Create a webhook that will trigger on the
policyUpdated
notification.curl -X 'POST' \ 'https://www.organization.immuta.com/webhooks' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \ -d '{ "webhooks": [ { "url": "https://demo.service.com/processWebhook", "name": "Policy updated", "global": false, "notificationType": [ "policyUpdated" ], "actionType": "triggered" } ] }'
Compare the
old
policy object with thenew
policy object to determine whether or not a policy that prevents access was overwritten. The scenarios below indicate that a policy that prevents access has been disabled on the data source:
Managing data policies when there is no subscription policy
Immuta does not apply subscription policies on registered data sources unless existing global policies apply to them.
Even if there is no subscription policy on a table, data owners and governors can manage data policies on data sources without affecting users’ access to the registered data sources. This can be powerful if you want to manage table access outside of Immuta but want to manage data policies in Immuta.
Databricks Unity Catalog behavior
If a securable has been registered as an Immuta data source, users who are registered in Immuta and who are not subscribed to the data source (either manually or by a subscription policy) will have their access REVOKED, even if they had been directly granted access to the table in Unity Catalog.
If a user is not registered in Immuta, Immuta will have no effect on that user's access to data in Unity Catalog.
Managing data source members
If no subscription policy is applied to a data source, users can only subscribe as data source owners; they cannot be added as regular subscribers. To add regular subscribers, a data owner or governor must apply a subscription policy to the data source.
Last updated
Was this helpful?