Identity in Unity Catalog - Users, Groups, and Service Principals

Estimated read: 12 min

Before granting any permission, Unity Catalog needs to know who it’s granting it to. Three kinds of identity cover essentially every case: users, groups, and service principals – the last being the one most people coming from a warehouse background haven’t used by this exact name before.

Users

An individual human, tied to an email address, added to the account either manually or (in a real organization) synced from an identity provider (Okta, Azure AD, etc.) via SCIM. For this guide’s learning purposes, users are added manually through the account console – production setups almost always automate this via identity provider sync instead.

Groups

GRANT USE CATALOG, SELECT ON CATALOG sales TO `data-engineering-team`;

Groups are the unit you should actually grant permissions to, not individual users – the same discipline a well-run warehouse enforced through roles. Add and remove users from a group as team membership changes; the underlying grants never need to be touched. Granting directly to individuals is the Unity Catalog equivalent of granting warehouse permissions to a personal login instead of a role – it works, and it’s exactly the kind of thing that becomes unmaintainable at scale.

Service principals: identity for automation

Key term: a service principal is a non-human identity – for a job, a pipeline, a CI/CD process – that needs its own credentials and permissions, entirely separate from any individual person’s account. This is the direct equivalent of a “service account” you’d have created for a legacy ETL tool’s database connection, except Unity Catalog treats it as a first-class identity that can own objects, hold grants, and appear in audit logs on equal footing with a human user.

GRANT USE CATALOG, USE SCHEMA, MODIFY, SELECT
ON SCHEMA prod.sales
TO `steprightjob-service-principal`;

Why this matters specifically: a scheduled Lakeflow Job (Section 10) should run as a service principal, not as whichever human happened to create the job. If that person leaves the organization or their personal credentials are deactivated, a job running under their identity breaks – a service principal has no such dependency on any one person’s employment status.

Practical identity design for this guide

Identity type Used for
Individual users Interactive development, ad hoc queries, debugging
Groups (data-engineering, uat-team, etc.) All permission grants – never grant directly to a user
Service principals Scheduled jobs, pipelines, CI/CD automation

This three-tier model recurs directly in Part 2’s StepRight project – its production deployment section runs the final orchestration job under a dedicated service principal, not a developer’s personal account, exactly the pattern established here.

Checking who has access to what

SHOW GRANTS ON CATALOG sales;
SHOW GRANTS TO `data-engineering-team`;

Both directions matter: “what can this catalog be accessed by” and “what can this group access” – the second is what you’d check before removing a group’s membership from a team, to understand exactly what access changes.


| ← Previous: Catalogs, External Locations and Storage Credentials | Next: Implementing Users, Groups, and Access Control → | |:—|—:|


Back to top

Independent, self-authored Databricks companion notes.

This site uses Just the Docs, a documentation theme for Jekyll.