<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How are you separating dev, staging and prod in Unity Catalog without duplicating everything? in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168101#M55837</link>
    <description>&lt;P&gt;From experience of working in diff projects, separate &lt;STRONG&gt;workspaces + environment catalogs + governed Prod&lt;/STRONG&gt; reads from Dev is a practical combination.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Environment isolation&lt;/STRONG&gt;: Dev/Test/Prod workspaces with dev_*, test_*, prod_* catalogs. Personal development uses dev_&amp;lt;username&amp;gt;_ schemas within Dev.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Infrastructure and access:&lt;/STRONG&gt; &lt;STRONG&gt;Terraform&lt;/STRONG&gt; provisions workspaces, catalog bindings, compute policies, and baseline access. &lt;STRONG&gt;Entra ID&lt;/STRONG&gt; groups separate Prod/Non-Prod role. Unity Catalog grants control USE CATALOG, USE SCHEMA, SELECT, MODIFY etc. Restrict MANAGE and ownership to designated administrators.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Service principals&lt;/STRONG&gt;: Separate &lt;STRONG&gt;Prod&lt;/STRONG&gt; and &lt;STRONG&gt;NonProd&lt;/STRONG&gt; service principals for deployment and job execution, with scoped permissions and environment-specific secret scopes.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;CI/CD:&lt;/STRONG&gt; GitHub Actions + DAB, shared workload definitions, and target-specific variables. PR validation, automated Dev/Test deployment, and controlled Prod deployment behind GitHub Environment approval gates.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Prod reads from Dev&lt;/STRONG&gt;: Cross Catalog Read-only access for model training, pipeline validation, and investigation. Dev identities receive the required read privileges, without Prod MODIFY, MANAGE, or ownership.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Licensing and ABAC:&lt;/STRONG&gt; license column + LPI account groups, with row filtering through IS_ACCOUNT_GROUP_MEMBER(). Column masks and ABAC policies protect sensitive fields, catalog visibility does not grant unrestricted data access.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;LPI automation&lt;/STRONG&gt;: Capture discovers table/license mappings and&amp;nbsp; reconciles SELECT grants and row filters. Keep these dynamic silver/gold permissions outside Terraform/DAB grant management to avoid conflicting updates.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Test data&lt;/STRONG&gt;: Small, deterministic fixtures for unit tests, temporary &lt;STRONG&gt;dev&lt;/STRONG&gt; schemas and &lt;STRONG&gt;mock&lt;/STRONG&gt; source tables for integration tests, cleaned up post the runs. Acceptance tests validate deployed pipelines in Test. For model training, pipeline validation, and debugging, use read-only &lt;STRONG&gt;Prod&lt;/STRONG&gt; access governed by LPI groups, row filters, and column masks.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;The right approach depends on Use case + Constraints + Maintenance effort + Resources + Cost etc. Apply the best practices that fit, make the solution robust and maintainable. Avoid chasing a&amp;nbsp;&lt;STRONG&gt;"gold standard"&amp;nbsp;&lt;/STRONG&gt;that adds complexity without real value.&lt;/P&gt;</description>
    <pubDate>Wed, 09 Sep 2026 14:26:17 GMT</pubDate>
    <dc:creator>data_pulse</dc:creator>
    <dc:date>2026-09-09T14:26:17Z</dc:date>
    <item>
      <title>How are you separating dev, staging and prod in Unity Catalog without duplicating everything?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168087#M55833</link>
      <description>&lt;P&gt;Hi everyone, We are trying to settle on an environment strategy and keep going back and forth, so I would like to hear how other teams actually landed on this rather than what the reference architecture suggests. Our situation. One Databricks account, one metastore per region. Right now we have a single workspace where everything runs, which is obviously not sustainable. The two options on the table are separate catalogs in the same workspace, so dev_sales, staging_sales, prod_sales, or fully separate workspaces per environment with separate catalogs in each. Catalogs are simpler to operate and make it trivial to read prod data from dev, which our analysts like. But the isolation is only as strong as the grants, and one wrong GRANT gives someone write access to prod. Separate workspaces give real isolation, but then promoting a pipeline means keeping job definitions, cluster policies, secrets and permissions in sync across three places, and cross environment reads become awkward. Questions for anyone who has run either at scale. Which model did you pick, and would you pick it again? If you went with catalogs in one workspace, how do you stop dev work from accidentally writing to prod? Are grants alone enough in practice, or did you need something more? If you went with separate workspaces, how painful is the sync? Are Asset Bundles carrying enough of it, or are you still maintaining Terraform alongside? How do you handle test data? Copy a subset of prod down to dev, read prod directly from dev with read only grants, or generate synthetic data? And a specific one that keeps biting us: what do you do about a pipeline in dev that needs to read a prod table? Grant cross catalog read, or force a copy? Interested in the messy real answers, not just the clean ones. Thanks.&lt;/P&gt;</description>
      <pubDate>Wed, 09 Sep 2026 12:34:43 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168087#M55833</guid>
      <dc:creator>Islam_hoti</dc:creator>
      <dc:date>2026-09-09T12:34:43Z</dc:date>
    </item>
    <item>
      <title>Re: How are you separating dev, staging and prod in Unity Catalog without duplicating everything?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168090#M55835</link>
      <description>&lt;P&gt;I would recommend the following&lt;/P&gt;&lt;P&gt;Workspaces: Deploy 3 Workspaces per region (Dev, Staging, Prod).&lt;/P&gt;&lt;P&gt;Catalogs: Create environment-specific catalogs inside Unity Catalog (dev_catalog, staging_catalog, prod_catalog).&lt;/P&gt;&lt;P&gt;Workspace-Catalog Bindings:&lt;/P&gt;&lt;P&gt;Bind dev_catalog to Dev Workspace (Full Access).&lt;/P&gt;&lt;P&gt;Bind prod_catalog to Prod Workspace (Full Access) and Dev Workspace (READ ONLY access for debugging/testing).&lt;/P&gt;&lt;P&gt;Deployment: Use Terraform for initial workspace and metastore setup, and&lt;BR /&gt;Databricks Asset Bundles (DABs) in Git CI/CD pipelines to promote code, jobs, and workflows across environments.&lt;/P&gt;&lt;P&gt;Additional Information -&lt;/P&gt;&lt;P&gt;Strict Service Principal Ownership: The production catalog (prod_catalog) must be owned by a dedicated CI/CD Service Principal (sp-prod-deployer). No human user—not even Senior Data Engineers—should have WRITE, MODIFY, or OWNERSHIP privileges in prod_catalog.&lt;/P&gt;&lt;P&gt;Read-Only Human Access: Data Engineers get SELECT access on prod_catalog for debugging, but zero CREATE or ALTER capabilities.&lt;/P&gt;&lt;P&gt;ABAC &amp;amp; Managed Identity Separation: Bind separate storage credentials / Azure Managed Identities / AWS IAM roles to the catalogs. The storage credential mounted to prod_catalog should explicitly deny write operations to dev user identities at the cloud IAM level.&lt;/P&gt;</description>
      <pubDate>Wed, 09 Sep 2026 12:52:35 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168090#M55835</guid>
      <dc:creator>Satyasai</dc:creator>
      <dc:date>2026-09-09T12:52:35Z</dc:date>
    </item>
    <item>
      <title>Re: How are you separating dev, staging and prod in Unity Catalog without duplicating everything?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168093#M55836</link>
      <description>&lt;P&gt;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/248581"&gt;@Islam_hoti&lt;/a&gt;&lt;/P&gt;&lt;P&gt;You can keep separate workspaces per environment&amp;nbsp;with one catalog namespace per env (prod.sales,&amp;nbsp;staging.sales,&amp;nbsp;dev.sales) managed through bundles DAB.&amp;nbsp;Generate synthetic data for unit tests and use an anonymized subset of prod to the dev catalog on a schedule for integration tests. You can use Delta Sharing to expose specific prod tables read only to other workspaces using a dedicated service principal that gives a isolation boundary without copy. You can start with this structure.&lt;/P&gt;</description>
      <pubDate>Wed, 09 Sep 2026 13:39:54 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168093#M55836</guid>
      <dc:creator>balajij8</dc:creator>
      <dc:date>2026-09-09T13:39:54Z</dc:date>
    </item>
    <item>
      <title>Re: How are you separating dev, staging and prod in Unity Catalog without duplicating everything?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168101#M55837</link>
      <description>&lt;P&gt;From experience of working in diff projects, separate &lt;STRONG&gt;workspaces + environment catalogs + governed Prod&lt;/STRONG&gt; reads from Dev is a practical combination.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Environment isolation&lt;/STRONG&gt;: Dev/Test/Prod workspaces with dev_*, test_*, prod_* catalogs. Personal development uses dev_&amp;lt;username&amp;gt;_ schemas within Dev.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Infrastructure and access:&lt;/STRONG&gt; &lt;STRONG&gt;Terraform&lt;/STRONG&gt; provisions workspaces, catalog bindings, compute policies, and baseline access. &lt;STRONG&gt;Entra ID&lt;/STRONG&gt; groups separate Prod/Non-Prod role. Unity Catalog grants control USE CATALOG, USE SCHEMA, SELECT, MODIFY etc. Restrict MANAGE and ownership to designated administrators.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Service principals&lt;/STRONG&gt;: Separate &lt;STRONG&gt;Prod&lt;/STRONG&gt; and &lt;STRONG&gt;NonProd&lt;/STRONG&gt; service principals for deployment and job execution, with scoped permissions and environment-specific secret scopes.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;CI/CD:&lt;/STRONG&gt; GitHub Actions + DAB, shared workload definitions, and target-specific variables. PR validation, automated Dev/Test deployment, and controlled Prod deployment behind GitHub Environment approval gates.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Prod reads from Dev&lt;/STRONG&gt;: Cross Catalog Read-only access for model training, pipeline validation, and investigation. Dev identities receive the required read privileges, without Prod MODIFY, MANAGE, or ownership.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Licensing and ABAC:&lt;/STRONG&gt; license column + LPI account groups, with row filtering through IS_ACCOUNT_GROUP_MEMBER(). Column masks and ABAC policies protect sensitive fields, catalog visibility does not grant unrestricted data access.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;LPI automation&lt;/STRONG&gt;: Capture discovers table/license mappings and&amp;nbsp; reconciles SELECT grants and row filters. Keep these dynamic silver/gold permissions outside Terraform/DAB grant management to avoid conflicting updates.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Test data&lt;/STRONG&gt;: Small, deterministic fixtures for unit tests, temporary &lt;STRONG&gt;dev&lt;/STRONG&gt; schemas and &lt;STRONG&gt;mock&lt;/STRONG&gt; source tables for integration tests, cleaned up post the runs. Acceptance tests validate deployed pipelines in Test. For model training, pipeline validation, and debugging, use read-only &lt;STRONG&gt;Prod&lt;/STRONG&gt; access governed by LPI groups, row filters, and column masks.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;The right approach depends on Use case + Constraints + Maintenance effort + Resources + Cost etc. Apply the best practices that fit, make the solution robust and maintainable. Avoid chasing a&amp;nbsp;&lt;STRONG&gt;"gold standard"&amp;nbsp;&lt;/STRONG&gt;that adds complexity without real value.&lt;/P&gt;</description>
      <pubDate>Wed, 09 Sep 2026 14:26:17 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168101#M55837</guid>
      <dc:creator>data_pulse</dc:creator>
      <dc:date>2026-09-09T14:26:17Z</dc:date>
    </item>
    <item>
      <title>Re: How are you separating dev, staging and prod in Unity Catalog without duplicating everything?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168171#M55855</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/248581"&gt;@Islam_hoti&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;This is a classic "architectural trade-off." Here is the messy reality of how we handle it:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Why we chose Separate Workspaces:&amp;nbsp;We prioritize&amp;nbsp;security boundaries. Even if grants are correct, separate workspaces prevent "blast radius" issues (like accidental clicks or service principal misconfigurations) from touching Production.&lt;/LI&gt;&lt;LI&gt;How we fix the "Sync Pain":&amp;nbsp;We use&amp;nbsp;Databricks Asset Bundles (DABs)&amp;nbsp;for everything. If the job definition isn't in our bundle code, it doesn't exist. We treat environment synchronization as a CI/CD problem, not a manual task.&lt;/LI&gt;&lt;LI&gt;The Dev-to-Prod Bridge:&amp;nbsp;We&amp;nbsp;never&amp;nbsp;copy data. Instead, we use&amp;nbsp;Catalog-level Read-Only grants. We allow the Dev workspace to query the Production catalog with&amp;nbsp;SELECT&amp;nbsp;permissions only. It gives analysts the visibility they need without the risk of accidental writes.&lt;/LI&gt;&lt;LI&gt;Test Data Strategy:&amp;nbsp;We use&amp;nbsp;synthetic data or small subsets&amp;nbsp;in Dev to validate logic, and rely on DLT expectations to "fail fast." We don't spend time moving production data to dev; we move the code to the data.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;The Honest Verdict:&amp;nbsp;If you are a small team, one workspace is fine. But for enterprise-grade maturity, go with separate workspaces. The operational cost of syncing is a one-time setup; the risk of a "write to production" incident is a career-defining problem you want to avoid.&lt;/P&gt;</description>
      <pubDate>Thu, 10 Sep 2026 06:52:23 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168171#M55855</guid>
      <dc:creator>Khasim_1</dc:creator>
      <dc:date>2026-09-10T06:52:23Z</dc:date>
    </item>
    <item>
      <title>Re: How are you separating dev, staging and prod in Unity Catalog without duplicating everything?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168178#M55858</link>
      <description>&lt;P&gt;Many different ways to go about this, but I think the key is a separate catalog per environment. If you have different workspaces for Dev/QA and Prod, then making sure the lower environments only have read access to Prod (if wanting to test against actual data in order to avoid duplication) is a good strategy as well.&lt;/P&gt;</description>
      <pubDate>Thu, 10 Sep 2026 07:59:04 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168178#M55858</guid>
      <dc:creator>coolbeans201</dc:creator>
      <dc:date>2026-09-10T07:59:04Z</dc:date>
    </item>
    <item>
      <title>Re: How are you separating dev, staging and prod in Unity Catalog without duplicating everything?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168182#M55861</link>
      <description>&lt;P&gt;Here is, in summary, how I am facing that issue in some real projects in Deloitte:&lt;/P&gt;&lt;P&gt;Unity Catalog Metastore&lt;BR /&gt;│&lt;BR /&gt;├── Workspace DEV&lt;BR /&gt;│ └── sales_dev&lt;BR /&gt;│ └── finance_dev&lt;BR /&gt;│ └── customer_dev&lt;BR /&gt;│&lt;BR /&gt;├── Workspace QA&lt;BR /&gt;│ └── sales_qa&lt;BR /&gt;│ └── finance_qa&lt;BR /&gt;│ └── customer_qa&lt;BR /&gt;│&lt;BR /&gt;├── Workspace STAGE&lt;BR /&gt;│ └── sales_stage&lt;BR /&gt;│ └── finance_stage&lt;BR /&gt;│ └── customer_stage&lt;BR /&gt;│&lt;BR /&gt;└── Workspace PROD&lt;BR /&gt;└── sales_prod&lt;BR /&gt;└── finance_prod&lt;BR /&gt;└── customer_prod&lt;/P&gt;&lt;P&gt;For me, it is key to separate environments by workspace for better isolation. Having said this, all four workspaces are attached to the &lt;STRONG&gt;same Unity Catalog metastore&lt;/STRONG&gt;. This gives you centralized governance, identities, permissions, lineage, auditing, storage credentials, and other UC capabilities. Databricks explicitly supports attaching multiple workspaces in the same region to a single metastore.&lt;/P&gt;&lt;P&gt;Another key point is that &lt;STRONG&gt;catalogs provide the data environment boundary&lt;/STRONG&gt;. A logical data domain such as sales is deployed as four independent catalogs, with specific suffixes as you can see above. So, take special care in binding or assigning proper catalogs to workspaces as evidently catalog naming alone does not provide workspace isolation.&lt;/P&gt;&lt;P&gt;Inside each catalog, you can keep exactly the same schema and table structure and create schemas and tables similar to: sales_dev.bronze.orders, sales_dev.silver.order, sales_dev.gold.orders. In nay case, I strongly recommend deploy data objects by using code, never create them manually, you can use custom code, dbt, etc.&lt;/P&gt;&lt;P&gt;I hope this helps.&lt;/P&gt;</description>
      <pubDate>Thu, 10 Sep 2026 09:33:53 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-are-you-separating-dev-staging-and-prod-in-unity-catalog/m-p/168182#M55861</guid>
      <dc:creator>Coffee77</dc:creator>
      <dc:date>2026-09-10T09:33:53Z</dc:date>
    </item>
  </channel>
</rss>

