Share via

How to fully isolate catalogs and metadata per environment in a shared Databricks metastore?

Bill Chie 20 Reputation points
2026-03-20T12:33:30.27+00:00

I’m designing environment isolation in Azure Databricks (Unity Catalog) for DEV / QAT / PRD.

Current setup:

  • Separate workspaces per environment (each deployed in its own VNet)

Separate ADLS Gen2 storage accounts per environment (with private endpoints)

  • Each catalog is mapped to its own environment-specific storage account (no shared data storage)

Goal: We want full environment containment, meaning: If a user/service does not have access to the PRD VNet, they should not be able to access anything related to PRD — including data and ideally metadata.

Understanding so far:

  • Unity Catalog supports only one metastore per region per tenant, shared across all workspaces

Data isolation can be achieved via catalog-level storage + private endpoints

Open question: Even with storage and network isolation in place, the metastore (metadata layer) remains shared.

Is there any supported way to:

Isolate Unity Catalog metadata per environment (DEV/QAT/PRD) within the same tenant/region, or

Restrict visibility of catalogs/metadata based on network boundaries (e.g., VNet-level access)?

Or is the only way to achieve strict isolation (including metadata) to use separate tenants or regions?

Looking for best practices or real-world implementations where strong network-level isolation is required.

Azure Databricks
Azure Databricks

An Apache Spark-based analytics platform optimized for Azure.


Answer accepted by question author
  1. Manoj Kumar Boyini 11,280 Reputation points Microsoft External Staff Moderator
    2026-03-20T13:53:56.45+00:00

    Hi Bill Chie

    Your current design already aligns well with best practices for data and network isolation. The key point to clarify is how metadata isolation works in Unity Catalog.

    In Azure Databricks, Unity Catalog follows an account-level metastore model, with one metastore per region per Azure Databricks account. All workspaces attached to that metastore share the same metadata service. Because of this design, metadata is not physically isolated per environment when using a single metastore.

    Within this model, the supported way to achieve DEV / QAT / PRD separation is through logical isolation, not physical separation of the metadata layer.

    The recommended approach is to:

    • Use separate catalogs per environment

    Bind each catalog only to its corresponding workspace(s) using workspace-catalog bindings

    Apply catalog-level permissions to restrict access

    Use separate external locations and storage accounts per environment

    With workspace-catalog binding, a catalog is only accessible from the workspaces it is explicitly bound to. This prevents users in one environment from accessing or interacting with catalogs from another environment, even if they have underlying permissions. This is the supported and recommended pattern for isolation within a shared metastore.

    It is also important to note that Unity Catalog’s metadata plane is a control-plane service and is not exposed as a VNet-isolated resource. Network controls such as VNets and private endpoints apply to the data plane (storage and compute), not to metadata visibility.

    If your requirement is strict isolation, where metadata must also be physically separated (for example, due to compliance requirements), then environments must not share the same metastore. The supported options in that case are:

    Deploy environments in separate regions (each region has its own metastore), or

    Use separate Azure Databricks accounts (each account has its own metastore)

    Within a single region and account, Unity Catalog provides strong logical isolation using catalogs and workspace bindings, but not full physical isolation of metadata. For full containment including metadata, separation at the metastore level (region or account) is required.

    Helpful References:
    https://learn.microsoft.com/en-us/azure/databricks/data-governance/unity-catalog/
    https://learn.microsoft.com/en-us/azure/databricks/data-governance/unity-catalog/create-metastore
    https://learn.microsoft.com/en-us/azure/databricks/catalogs/binding
    https://learn.microsoft.com/en-us/azure/databricks/data-governance/unity-catalog/best-practices
    https://docs.databricks.com/aws/en/data-governance/unity-catalog/best-practices

    Hope this helps, Please let us know if you have any questions and concerns.

    2 people found this answer helpful.
    0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.