Intents Reference Guide
Learn how intents enforce access controls
Intents is a feature that enforces permissions based on the user's specific intent, allowing policy authors to scope data access to specific reasons for accessing data. Instead of basing access decisions solely on who users are, intents allow the policy decision to be based on what the users are doing and why they need access.
An intent is a form of identity that governors create using the user attributes and groups registered in Immuta:
Intent name: The intent name will be included in the role or group Immuta creates in your data platform.
Group name: Assigning a group name to an intent authorizes members of the group to assume the intent. Any user-specific attributes for members of that group are removed and replaced by the attributes associated with the intent when they assume the intent. Governors can assign multiple groups to an intent, and a role or group will be created for each intent-group pair. See the section below for details.
Intent attributes: The access these attributes provide will be associated with the intent. Because the attributes of the users within the groups assigned to the intent may not be consistent, once the user assumes the role or group Immuta creates for the intent in the data platform, these intent attributes will replace any attributes directly assigned to the user.
Members of the groups assigned to an intent can assume that intent in their native platform. Once the intent is assumed, the intent attributes replace any user attributes assigned to that user. In the illustration below, if Member 1 assumed the Fraud detection intent, their Clearance:Secret attribute would be replaced by the Exception:InternalData intent attribute.

For instructions on creating or managing an intent, see the Manage intents guide.
What does Immuta do in my environment?
Immuta generates a role or group in your data platform for each intent-group pair that is created in Immuta. In the example below, a governor creates a Clinical trial intent and assigns the group Analysts to it. Then, Immuta generates a Clinical trial intent group in Databricks that members of the group Analysts can assume to query data under that intent.

Once an intent is deleted in Immuta, that role or group is removed from the data platform.
The Immuta-generated roles or groups can be viewed on the intent page. See the Assume an intent guide for details.
Databricks group naming convention
The name of the group Immuta creates in Databricks includes the intent name and the group name assigned to the intent. The naming convention of the group differs slightly depending on whether the group name matches the intent name.
Group name differs from intent name: The group created by Immuta includes an Immuta prefix, the intent name, and the group name assigned to the intent. For example, if an intent called
Fraud detectionhad the groupAnalystsassigned to it, the name of the group Immuta creates in Databricks would follow the pattern below.Naming convention:
excl-<Immuta prefix>-intent-<intent name>-<group name>Example:
excl-immuta_123456789_unitycatalogconnection-intent-Fraud detection-Analysts
Group name matches intent name: The group created by Immuta includes an Immuta prefix and the intent name. For example, if an intent called
Analystshad the groupAnalystsassigned to it, the name of the group Immuta creates in Databricks would follow the pattern below.Naming convention:
excl-<Immuta prefix>-intent-<intent name>Example:
excl-immuta_123456789_unitycatalogconnection-intent-Analysts
The Immuta-generated groups can be viewed on the intent page. See the Assume an intent guide for details.
Policy enforcement with intents
Once a user assumes an intent in their data platform, the following events occur:
Group names carry over: The
Analystsgroup stays the same for the group member who assumes theClinical trialintent in the diagram below.The intent attributes replace the user’s birthright attributes:
Access:Clinical trialreplaces any other attributes associated with the user assuming theClinical trialintent.The policy on the data source checks the facts about the user:
Group:
AnalystsAttribute:
Access:Clinical trial
The
Analystsgroup member who assumes the intent in Databricks is granted access to the Clinical trial data.

Once the user closes that intent context in their native platform, the facts about the user revert to their birthright attributes, and so they would not have access to Clinical trial data.
Supported policies
Grant and guardrail subscription policies: Groups and attributes of an intent can be used in both subscription policy types.
Protect and reveal data policies: The groups and attributes in an intent can be used in all data policies.
Policy authoring strategy
Because birthright attributes are replaced by intent attributes, you must consider how you want access to be enforced when authoring policies:
If you want access to stay the same (despite the intent): Groups should determine access.
If you want access to change: Attributes should determine access
Use the following examples as a guide to design intents and author policies.
Masked joins
When users assume an intent, masked columns (using hashing) can be joined for data sources to which those users have access when acting under that intent.
Without an intent: When users access data outside an intent, Immuta uses a unique salt for hashing per table when masking a column to break referential integrity and ensure the masked values aren’t able to join to avoid toxic combinations — a goal of masking.
With an intent: Once a user assumes an intent, Immuta uses a consistent salt across all data sources that user can access under that intent, which returns referential integrity and allows users to join on two masked columns as long as hashing is used as the masking type, since the point of that intent is to use that data together.
Limitation
Databricks groups per account: Databricks has a limit of 250,000 groups for Databricks customers using Account SCIM 2.1. All other Databricks environments are subject to a 5,000 group limit.
Last updated
Was this helpful?

