data & analytics · governance

Data access that follows your identity provider, down to the row.

Left alone, a warehouse fills up with grants made by hand to individual people. We replace that with roles, masking and row-level policies in Snowflake and Unity Catalog, provisioned from Okta or Entra ID groups and requested through your identity governance process.

platforms
data-analytics / data-governance 7 platforms
01 · IDENTITY 02 · PROVISIONING 03 · DATA PLATFORM 04 · EVIDENCE Identity provider: Okta · Entra ID groups Identity provider Okta · Entra ID groups Access requests and reviews: SailPoint · Saviynt Access requests andreviews SailPoint · Saviynt SCIM provisioning: users · groups SCIM provisioning users · groups Grants and policies as code: Terraform Grants and policiesas code Terraform Snowflake roles: functional and access roles Snowflake roles functional and accessroles Unity Catalog: catalog and schema privileges Unity Catalog catalog and schemaprivileges Masking and row policies: tags · column masks · row filters Masking and rowpolicies tags · column masks ·row filters Audit queries: access history · grants Audit queries access history ·grants
SnowflakeDatabricksOktaMicrosoft Entra ID
in short·15-second read

Data governance decides who can see which data, how it is classified, and how that is proven to auditors.

Cohash designs access control in Snowflake and Databricks Unity Catalog, tied to your identity provider. We provision users and groups from Okta or Entra ID through SCIM or Databricks automatic identity management, and apply masking and row-level policies driven by tags and group membership.

you probably need this if
  • Grants in Snowflake or Databricks were made to individual users and nobody ever took them away.
  • PII and PHI columns are masked in one table and visible in its copy.
  • Auditors ask who can see member data and the answer takes a week of queries.
Ask an engineer facts checked 2026-10-20 · 8 sources
how it runs
  1. 01Assess
  2. 02Design
  3. 03Implement
  4. 04Prove and maintain
you keep
  • Role and privilege model for Snowflake or Unity Catalog
  • Identity provider provisioning configuration
  • Tag taxonomy and masking and row-level policies
+ 2 more documents
who does it
Data governance leadData stewardData access engineer (Unity Catalog, Snowflake RBAC)
the story · data governance & access

From the first call to a setup your own team can run.

Here's what usually prompts a call about your Data Governance & Access, what we do about it and in which order, and where you end up.

  1. chapter 01 · where it hurts

    Why teams reach out

    • Grants in Snowflake or Databricks were made to individual users and nobody ever took them away.
    • PII and PHI columns are masked in one table and visible in its copy.
    • Auditors ask who can see member data and the answer takes a week of queries.
  2. chapter 02 · what we change

    How we solve it

    • Identity provider integration
    • Role and privilege design
    • Masking and row-level security
    • Classification and tagging
    • Access requests and reviews
    • Service principals and agents
  3. chapter 03 · how it runs

    Our approach

    • Assess
    • Design
    • Implement
    • Prove and maintain
  4. chapter 04 · where you end up

    What changes

    • The workspaces share one Unity Catalog metastore.
    • New columns are covered once tagged, and the CI check catches the ones that aren't.
    • Role and privilege model for Snowflake or Unity Catalog
    • Identity provider provisioning configuration
what we do

Where we spend the hours

6 areas of work, each one done by an engineer who has run it in production.

  1. We set up Snowflake SCIM from Okta or Entra ID, so each pushed group maps to a Snowflake role. On Databricks we use automatic identity management or SCIM, with nested Entra groups where supported.

  2. We split functional from access roles in Snowflake and use catalog and schema privileges in Unity Catalog. Direct grants to individual users are off the table.

  3. In Snowflake we use masking and row access policies. In Unity Catalog it's row filters and column masks, including attribute-based policies that key off governed tags.

  4. Sensitive columns such as PII and PHI found and tagged, so policies apply to every table carrying the tag rather than one table at a time.

  5. People request data access in SailPoint, Saviynt or Entra ID Governance, and certify it there too. The warehouse role is what they're requesting.

  6. We give pipelines, BI tools and AI agents their own scoped roles, rotate their credentials and audit how they're used.

capability 01 / 06in production

Identity provider integration

We set up Snowflake SCIM from Okta or Entra ID, so each pushed group maps to a Snowflake role. On Databricks we use automatic identity management or SCIM, with nested Entra groups where supported.

capability 02 / 06in production

Role and privilege design

We split functional from access roles in Snowflake and use catalog and schema privileges in Unity Catalog. Direct grants to individual users are off the table.

capability 03 / 06in production

Masking and row-level security

In Snowflake we use masking and row access policies. In Unity Catalog it's row filters and column masks, including attribute-based policies that key off governed tags.

capability 04 / 06in production

Classification and tagging

Sensitive columns such as PII and PHI found and tagged, so policies apply to every table carrying the tag rather than one table at a time.

capability 05 / 06in production

Access requests and reviews

People request data access in SailPoint, Saviynt or Entra ID Governance, and certify it there too. The warehouse role is what they're requesting.

capability 06 / 06in production

Service principals and agents

We give pipelines, BI tools and AI agents their own scoped roles, rotate their credentials and audit how they're used.

typical situations

Situations we walk into

We pieced these together from Data Governance & Access situations that come up a lot. They're patterns. You won't find a specific client in them.

case file 01

Databricks workspaces still on the Hive metastore with legacy table ACLs

composite · not a client story
  1. Beforethe situation

    Three Databricks workspaces still use their own Hive metastores. Some clusters run legacy table access control, data sits in the DBFS root, and groups were created locally in each workspace instead of synced from Entra ID.

  2. What we dothe work

    We run the UCX assessment workflow to inventory tables, mounts, clusters and groups. Workspace-local groups become account groups fed from Entra ID. External tables are upgraded with SYNC, DBFS-root data moves to governed storage, and grants get rewritten as Unity Catalog privileges in Terraform.

  3. Afterwhere you end up

    The workspaces share one Unity Catalog metastore. Groups come from Entra ID, grants live in code, and lineage and audit logs cover the migrated tables.

case file 02

Snowflake PII masked column by column, and new columns slipping through

composite · not a client story
  1. Beforethe situation

    A security team wrote masking policies for the PII columns they knew about two years ago. New tables arrive from dbt every week and nobody applies the policies, so a recent scan found unmasked national ID numbers in a staging schema.

  2. What we dothe work

    A short list of sensitivity tags, with masking policies attached to the tags. Tag a schema or table and the matching columns are covered. dbt sets the tags in model config, CI fails builds that add untagged PII-looking columns, and row access policies take care of regions.

  3. Afterwhere you end up

    New columns are covered once tagged, and the CI check catches the ones that aren't. Masking rules live in a few policies instead of hundreds of column assignments.

case studies

Data Governance & Access case studies

All case studies
migration Data and analytics

Databricks Hive metastore to Unity Catalog

We move Databricks workspaces off the Hive metastore, DBFS mounts and table ACLs and onto Unity Catalog, ahead of new workspaces dropping legacy features.

read the case study
upgrade Data and analytics

Apache Airflow 2 to Airflow 3

Upgrading self-managed Apache Airflow 2, now past end of life, to Airflow 3, and fixing removed features, auth and scheduling changes before DAGs move.

read the case study
migration Industry platforms

Duck Creek on-premises to Duck Creek OnDemand

We move self-hosted Duck Creek Policy, Billing and Claims onto Duck Creek OnDemand and keep the product and rating content, integrations and data intact.

read the case study
migration CRM, ITSM and automation

Dynamics CRM on-premises to Dynamics 365 online

We move Dynamics CRM or Customer Engagement 9.x off your servers and onto Dynamics 365 online, rebuilding customizations, reports, integrations and sign-in.

read the case study
implementation Industry platforms

Epic integrations, FHIR APIs and TEFCA connectivity

Building and governing the HL7 and FHIR integrations, SMART on FHIR apps and TEFCA exchange around Epic, with an interface catalog and scope reviews.

read the case study
implementation Industry platforms

TriZetto Facets upgrades and CMS-0057-F interoperability APIs

Keeping TriZetto Facets current while we build the Provider Access, Payer-to-Payer and Prior Authorization APIs that CMS-0057-F requires by January 2027.

read the case study
architecture

How identity provider groups become warehouse roles and policies

Okta or Entra ID pushes users and groups to Snowflake through SCIM and to Databricks through automatic identity management or SCIM. Groups map to roles and Unity Catalog privileges, while tag-driven masking and row policies decide what each role sees.

How identity provider groups become warehouse roles and policies Okta or Entra ID pushes users and groups to Snowflake through SCIM and to Databricks through automatic identity management or SCIM. Groups map to roles and Unity Catalog privileges, while tag-driven masking and row policies decide what each role sees. 01 · IDENTITY 02 · PROVISIONING 03 · DATA PLATFORM 04 · EVIDENCE approved group SCIM groups group to role account groups deploy policies masking and row access row filters and masks access history review evidence Identity provider Okta · Entra IDgroups SP Access requestsand reviews SailPoint · Saviynt SCIM provisioning users · groups Grants andpolicies as code Terraform Snowflake roles functional andaccess roles Unity Catalog catalog and schemaprivileges Masking and rowpolicies tags · column masks · rowfilters Audit queries access history · grants
Read the diagram as text
  1. Access requests and reviews → Identity provider: approved group
  2. Identity provider → SCIM provisioning: SCIM groups
  3. SCIM provisioning → Snowflake roles: group to role
  4. SCIM provisioning → Unity Catalog: account groups
  5. Grants and policies as code → Masking and row policies: deploy policies
  6. Masking and row policies → Snowflake roles: masking and row access
  7. Masking and row policies → Unity Catalog: row filters and masks
  8. Snowflake roles → Audit queries: access history
  9. Audit queries → Access requests and reviews: review evidence
how it runs

A typical engagement

We don't start a step until the last one has produced something you can check.

  1. step 01

    Assess

    Current roles, grants, sensitive data and identity provider setup reviewed, including grants made directly to users.

  2. step 02

    Design

    Nothing gets built until data owners, security and IAM have agreed the role model, tag taxonomy, policy design and provisioning approach.

  3. step 03

    Implement

    Provisioning, roles and policies deployed as code with Terraform, and tested with user personas.

  4. step 04

    Prove and maintain

    Audit queries, access review campaigns, and runbooks so the next new data set isn't onboarded from scratch.

you keep

What you're left with

We write these for your Data Governance & Access setup, and they're working documents. Your team should be able to keep things running from them long after we've gone.

  • inventory01

    Role and privilege model for Snowflake or Unity Catalog

    yours to keep
  • document02

    Identity provider provisioning configuration

    yours to keep
  • guide03

    Tag taxonomy and masking and row-level policies

    yours to keep
  • code04

    Terraform modules for grants and policies

    yours to keep
  • report05

    Access review and audit query pack

    yours to keep
talent and delivery · data governance & access

Certified engineers, wherever you need them.

Some clients want a project team, some want a couple of engineers on theirs. Either works. Onsite, nearshore or offshore, with handovers across time zones that keep things moving.

Onsite

Engineers at your sites in the US

Nearshore

Overlapping hours with US teams

Offshore

Overnight progress on your backlog

All time zones

Coverage handed over across time zones

24-hour coverage · US Central time
OnsiteUS business hours
Nearshoreoverlapping US hours
Offshoreovernight progress
Combinedhandover, not hand-off
roles we staff
  • Data governance lead
  • Data steward
  • Data access engineer (Unity Catalog, Snowflake RBAC)
  • Data quality engineer
  • Privacy analyst
01Do we need SCIM for Databricks if we use Entra ID?

Not always. Microsoft documents that Azure Databricks automatic identity management syncs users, service principals and groups from Entra ID, including nested groups, and is on by default for accounts created after 1 August 2025. SCIM is still needed for some setups, such as cross-tenant directories. Databricks advises against mixing the two for the same identities.

02Can Snowflake roles come from Okta groups?

It does. Okta and Microsoft Entra ID can both provision Snowflake over SCIM, and each pushed group turns into a role. The role hierarchy and privileges inside Snowflake still need designing.

03Are Unity Catalog attribute-based policies ready for production?

Some of it. Databricks announced general availability for ABAC row filter and column mask policies, governed tags and data classification. The rest of ABAC was still beta last time we checked. Check your compute first. Policies need Databricks Runtime 16.4 or above, or serverless.

04Do you also cover data catalogs and lineage?

Yes, as part of governance. We usually start with the platform's own catalog and lineage, in Unity Catalog or Snowflake, and add a separate catalog tool only when you need one across platforms.

05Do tag-based masking and row access policies need a particular Snowflake edition?

Yes. Both need Enterprise Edition or higher. On Standard, the usual fallback is secure views that filter and mask, which work but are harder to maintain. If governance is a priority, we price the edition change alongside the design.

related

Often paired with

Projects on Data Governance & Access usually end up touching one of these, so they're worth a look.

sources 8 sources linked last checked 2026-10-20 content fingerprint 5652ea77
  1. 01Snowflake docs: SCIM overviewdocs.snowflake.com ↗
  2. 02Microsoft Learn: Azure Databricks automatic identity managementlearn.microsoft.com ↗
  3. 03Databricks blog: ABAC row filtering and column masking, governed tags and data classification GAdatabricks.com ↗
  4. 04Databricks docs: Unity Catalog attribute-based access controldocs.databricks.com ↗
  5. 05Databricks docs: Use the UCX utilities to upgrade your workspace to Unity Catalogdocs.databricks.com ↗
  6. 06Snowflake docs: Tag-based masking policiesdocs.snowflake.com ↗
  7. 07Snowflake docs: Understanding row access policiesdocs.snowflake.com ↗
  8. 08Snowflake docs: Account Usagedocs.snowflake.com ↗
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Tell us what you're running. We'll tell you what we'd do first.

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it