Friday
Iโm exploring how to set up exclusive access for separate use cases implementation within a shared Databricks workspace, using Microsoft Entra groups and Unity Catalog. Iโd love to hear from anyone who has implemented something similar, or is currently working through the same questions.
A few things Iโm trying to understand:
Friday
Hi @saurabh18cs,
This is one of those setups where it really pays to settle the pattern early, before there are hundreds of grants to untangle. Here's how I'd structure it:
1. Account groups only. Sync the Entra groups into the Databricks account (automatic identity management or SCIM) and grant to those. Workspace-local groups can't be granted access to Unity Catalog data at all, so they're a dead end here.
2. A few groups per use case, for example uc_sales_owners, uc_sales_writers and uc_sales_readers. Make groups the owners of things, never individual people, so nothing breaks when someone leaves.
3. Keep the catalog with the platform team and delegate at schema level. The catalog admin group owns the catalog. Each use case gets USE CATALOG on the catalog plus MANAGE on its own schema. MANAGE lets the use-case owners handle grants inside their schema without being the owner, and they can't touch anything else in the catalog:
GRANT USE CATALOG ON CATALOG analytics TO `uc_sales_owners`; GRANT MANAGE, USE SCHEMA, CREATE TABLE ON SCHEMA analytics.sales TO `uc_sales_owners`;
Things to watch out for:
Hope that helps. Happy to compare notes if you run into something specific.
Cheers,
Suranga
7 hours ago
The grant layout above is the right base. Two things from the ownership docs that are easy to miss when you promise "exclusive" access.
First, exclusive has a ceiling. Metastore admins can view all grants and transfer ownership of any object, and account and workspace admins have default privileges for managing Unity Catalog. So the isolation holds against regular users, and you still need to decide who carries those admin roles and keep that list short and audited.
Second, if use-case owners create views, functions or models and you want a group to own them, there is a catch. Only a metastore admin can hand those to any group. Owners and MANAGE holders can only transfer them to themselves or to a group they belong to. So either have the owners do the handover while they are still members, or plan a platform-team step for it, otherwise a view can end up owned by someone who has left.
6 hours ago
Greetings @saurabh18cs, I did some digging and here is what I found.
First, credit to @suranga and @DoTA. Suranga's layout is the one I'd start from: account groups synced from Entra, a small set of groups per use case, the platform team owns the catalog, and each use case gets USE CATALOG plus MANAGE on its own schema. DoTA's points about the admin ceiling and the ownership-transfer rule for views, functions and models come straight from the docs. I'll build on both rather than repeat them.
Short answer to your two questions: yes, delegate at schema level with MANAGE, and keep catalog ownership, storage credentials, external locations and all catalog-level grants with the platform team. Then plan for the following.
uc_platform_admins) the catalog owner and watch system.access.audit for permission and ownership changes. If the business needs separation even from the platform team, that's an operating-model decision, not something grants enforce.uc_sales_readers directly, add that group to the account or a workspace; don't rely on it being a child of a parent group.CREATE TABLE owns it. Run production pipelines as a service principal that belongs to the owners group so ownership never leaves with an employee, and for interactive work finish with ALTER TABLE analytics.sales.orders OWNER TO \uc_sales_owners``. Tables can go to any group. Per DoTA, views, functions and models can only go to a group the current owner belongs to, unless a metastore admin does the transfer.information_schema. SHOW GRANTS ON SCHEMA analytics.sales and the Permissions tab in Catalog Explorer show everything. The docs say this will be corrected, so plan around it today.default schema. Make a dedicated catalog for this pattern.The grants for one use case end up looking like this:
GRANT USE CATALOG ON CATALOG analytics TO `uc_sales_owners`;
GRANT MANAGE, USE SCHEMA, CREATE TABLE ON SCHEMA analytics.sales TO `uc_sales_owners`;
GRANT USE CATALOG ON CATALOG analytics TO `uc_sales_readers`;
GRANT USE SCHEMA, SELECT ON SCHEMA analytics.sales TO `uc_sales_readers`;
References:
Regards,
Louis.