Governance that holds up when a customer's security team starts asking.

One Unity Catalog control plane over every table, file, dashboard, model and agent - with the access, column-level lineage and audit trail a security review actually tests.

Databricks-nativeUnity Catalog·Column-level lineage·system.access.audit·ISO/IEC 27001:2022
One control planeDatabricks · Unity Catalog
prod_analytics.gold.customer
The metastore governs every consumer
AccessLineageAuditTags
governs tables · volumes · functions · models · vector indexes
People & BIDatabricks SQL · AI/BIGoverned
Jobs & NotebooksLakeflow · MLflowGoverned
Mosaic AI Agentsreading in place · no copyGoverned
Same catalog. Human or agent.
Why it matters

Governance falls apart in the gaps between systems.

Most organisations don't lack governance policies. They lack governance that's actually enforced at the point the data is used. On Databricks the gaps have a name - a legacy Hive metastore per workspace, cluster-scoped table ACLs, lineage nobody captured, audit logs nobody turned on - and each one is a place where the policy and the reality drift apart.

01

Permissions live per workspace

A legacy Hive metastore is scoped to one workspace, so every workspace grows its own copy of the rules - plus cluster-level ACLs, plus whatever the BI tool decides. Nobody can say, in one place, who can see what.

Tell-tale: tables still resolving as hive_metastore.default.*, and grants managed in more than one console.
02

“Where did this number come from?”

The question that ends meetings. Without lineage, tracing a figure on a dashboard back to its source columns is archaeology - days of reading notebooks, and you're still not certain you found every hop.

Tell-tale: the answer lives in someone's head rather than in system.access.column_lineage.
03

The audit trail is a rebuild job

Who read the customer table last quarter? If the honest answer is “we'd have to reconstruct it from logs we may not have kept,” you aren't ready for the audit that's coming - and reconstruction under deadline is where credibility goes.

Tell-tale: system schemas never enabled, no audit log delivery to your own storage.
The bridge to your AI
04

Governance stops at the tables

Even a well-governed lakehouse becomes ungoverned the moment an agent reads an exported copy, or a vector index is built from unmasked text. The controls have to reach the model and the retrieval layer, or they don't count.

Tell-tale: an agent with its own service principal and broader grants than any human using it.
Data & Agentic AI · Governed Data Platform

Anyone can hold the data. The question is whether you can prove who touched it.

We design and operate the governance layer of your Databricks estate: Unity Catalog at the core, one grants model, row filters and column masks where the data is sensitive, tag-driven policy where per-column rules don't scale, automatic column-level lineage, and an audit trail you can query in SQL. Then we push the same controls out to the AI - Mosaic AI models, retrieval indexes and agents governed by the identical catalog.

Fine-grained access

One inheritance-aware grants model over catalogs, schemas, tables, views, volumes, functions and models - then row filters and column masks so the same table shows different things to different people.

GRANT / REVOKESET ROW FILTERSET MASK
Same for a person · a job · an agent

Tags & attribute-based policy

A sensitivity taxonomy applied as governed tags, then policy written once against the tag instead of once per column - so a new PII column arrives already masked rather than waiting for someone to notice it.

SET TAGSABAC policyclassification
Policy that survives new tables

Column-level lineage

Captured automatically as queries and pipelines run - no manual mapping. Every field traces back to the exact source columns it came from and forward to everything it feeds, dashboards and models included.

system.access.column_lineage
A click, not a project

Queryable audit

Account and workspace activity landing in system tables you can query like any other table - plus delivery into your own storage for long-term retention. Who accessed what, when, from where, and whether it was allowed.

system.access.auditsystem.query.history
Person, job or agent - all logged

Governance that reaches the AI

Models, feature tables, vector indexes and agent tools are catalog objects, so they inherit the same grants. Agents can run under the asking user's identity, and every retrieval is subject to the same masks.

Mosaic AIVector SearchAI Gateway
The part most vendors lose

Governed serving & BI

Serverless SQL warehouses, AI/BI dashboards and natural-language Genie spaces reading the same governed tables - plus your existing BI tool, still governed, because the controls live under it rather than inside it.

Databricks SQLmetric viewsGenie
Governed tables · queried live
The foundation

Governance on Databricks starts with one object model.

Almost every governance failure we're called into is really a modelling failure - the wrong things granted at the wrong level, so nobody can reason about the result. Unity Catalog gives you a single hierarchy from the account down to an individual column, and a privilege inherits downward. Get this shape right and the rest of the page is configuration. Get it wrong and you're back to five consoles.

prod_analytics.gold.customerThe three-level namespace - every object you govern has this address.
Level 1

Catalog

prod_analytics

Click any level. Where you grant decides how much you'll have to maintain - the single most consequential design choice in a Databricks governance model, and the one we settle in week one.

How it works

One control plane over data, analytics and AI.

Unity Catalog sits above everything - the raw tables, the curated tables, the files in volumes, the dashboards, the notebooks, the registered models and the agents - and governs them from one place. Every consumer, human or machine, authenticates through the same catalog and is checked against the same grants. There is no side door where a model reads an ungoverned copy, because we don't leave an ungoverned copy to read.

Governed objects - one effective view per grantThe agent, governed like the analystOn Unity Catalog - identity comes from your IdP, not from the workspace
Identity - one set of principals for the whole account
Entra ID / Okta→ SCIM →account groups·service principals for jobs & agents
Unity Catalog - the control plane
The metastoreUnity Catalog
AccessGRANT
MaskingSET MASK
Lineagecolumn-level
Auditsystem tables
Discoverytags · search
every object below passes through the controls above - no exceptions, no side doors
Governed objects
Customer tablegold.customer
PII columnsemail · ssn
Metricsmetric view
Model & indexUC objects
Audit historywho saw what
Consumers - every one authenticates through the same metastore
The agent is governed by the same catalog as the analyst. That's the part no one else closes.

Pick a role - the diagram lights up exactly what it can and can't reach, and Show the SQL gives you the grants that produce it. Same catalog, different grants, nothing hand-waved. Each role is deep-linkable, so a “here's what your Head of Risk would see” link drops straight to it.

Access control, concretely

One table. Five people. Five different truths.

This is the mechanism a security review actually tests: not whether you have a policy, but whether the same query returns different rows and different columns depending on who runs it. Below is one real-shaped Databricks table with a row filter, two column masks and a tag-driven policy on it. Switch the persona and watch the result change - the query never changes.

SELECT * FROM prod_analytics.gold.customerUnity Catalog enforced
customer_idfull_namepiiemailpiicountrylifetime_value

The masks and filters are ordinary SQL functions living in the catalog - versioned in Git, deployed by our pipeline, reviewable by your security team. Nothing in this section requires a product outside Databricks.

The click, not the project

Every number, traced from source column to agent answer.

Unity Catalog captures column-level lineage automatically as queries and pipelines run - nobody maintains a mapping. Pick any field and walk it backwards to the exact source columns it came from, or forwards to everything downstream that depends on it, including the dashboard metric and the agent that quotes it. When a source changes, you know what to re-check before someone else finds out.

What makes this trustworthy

Lineage you draw by hand is a diagram. Lineage the platform records as work happens is evidence - and it's the same evidence whether the reader is a notebook, a scheduled pipeline, a dashboard or an agent's retrieval call.

  • Captured from queries and pipeline runs, not from a modelling exercise somebody has to keep current.
  • Column-level, so “which of these forty fields is actually derived from PII?” has a precise answer.
  • Readable in SQL, so it feeds your own dashboards, tests and evidence packs - not only the Catalog Explorer UI.
  • Reaches the AI: a registered model or a retrieval index appears downstream of the columns that fed it.
The evidence desk

The audit trail is a table. So you can just query it.

This is the quiet advantage of governing inside the platform: access history isn't a log file somebody has to ship and parse, it's a Unity Catalog table. Every read, every grant change, every denied attempt - by a person, a job or an agent's service principal - lands in the same place, joinable to everything else you know. Below is the shape of it, streaming.

system.access.auditStreaming - illustrative
event_timeprincipalaction_nameobjectresult
1“Who read the customer table last quarter?”+

The first question of almost every access review. One query, no reconstruction - and it covers the agent's service principal alongside the humans.

2“Show me everything the agent touched.”+

An agent runs as a principal like any other, so its whole footprint is one filter away. This is the evidence that answers “what could your AI see?” with a table instead of an assurance.

3“What was refused, and to whom?”+

Denied attempts are the most under-used signal in a governance programme - they tell you where your grants model and your org chart disagree. We put this on a dashboard and review it on a cadence.

What we set up so this exists

None of the above works by default on an estate nobody prepared. The unglamorous part is the part that saves the audit.

1System schemas enabled on the metastore, so the audit, lineage and query-history tables are actually populated.
2Audit log delivery into your own cloud storage for retention beyond the platform's window, under a lifecycle policy your retention counsel signed off.
3A small set of governance dashboards - access reviews, denied attempts, unmasked-PII checks, orphaned grants - that someone owns and reads.
4An evidence pack: the queries, their outputs and the review sign-offs, exported on a schedule so an auditor gets a document, not a login.
The signature

Follow one agent request all the way through the controls.

This is where most governance programmes stop and ours starts. An agent is not a special case that needs its own rulebook - on Databricks it is another authenticated consumer of the same catalog. Its tools are catalog functions, its retrieval index is a catalog object, its answers are logged in the same audit table, and it can be made to read as the person who asked rather than as itself.

U“What was EU revenue in Q3, and which accounts drove it?”

What the agent can do

  • Read the governed gold tables it has been granted, in place - no export, no second copy to secure.
  • Call a fixed set of catalog functions as tools, each one a reviewable piece of SQL or Python with its own EXECUTE grant.
  • Retrieve from a vector index built over already-masked text, inheriting the source table's controls.
  • Cite its sources, because lineage knows which columns the answer came from.

What it cannot do

  • See more than the person who asked, when it runs under their identity - the ceiling is the human's grants.
  • Read an unmasked PII column because it is “just a service” - masks apply to principals, not to job titles.
  • Reach a table nobody granted it: the failure is a logged denial, not a quiet success.
  • Act without a trace. There is no un-audited path to the data, which is the whole point.

The honest caveat: on-behalf-of-user access is a design decision, not a default - some agents legitimately need their own service principal with narrower grants than any user. We choose deliberately, write down which model each agent uses and why, and make that choice reviewable. That document is usually what a security review actually wants to see.

The blueprint

What we actually stand up, layer by layer.

A governed Databricks estate is a small number of decisions made once and then held. This is the shape we deploy - adjusted to your regions, your identity provider and your regulatory posture, but recognisably this. Everything in it is defined as code, so the second environment is a parameter rather than a project.

00Perimeter & identity - before a single grant existsPlatform security
SCIM from Entra ID / Oktaaccount-level groupsservice principals + OAuthPrivate LinkIP access listscustomer-managed keyscompliance security profile
identities resolve once, for every workspace
01Metastore & catalog topology - the decision everything else inheritsThe control plane
dev_analytics
Bound to dev workspaces only. Synthetic or masked data.
bronzesilvergoldsandbox
stg_analytics
Release rehearsal. Same policy code as prod, different data.
bronzesilvergoldgov
prod_analytics
Bound to prod workspaces. Masks and filters live here.
bronzesilvergoldgovai
one metastore per regioncatalog ↔ workspace bindingexternal locations + storage credentialsvolumes for filesgov schema for masks & filters
every object below is addressed as catalog.schema.object
02Data & pipelines - the estate being governedBuild
Delta LakeLakeflow Declarative Pipelinesexpectations / quality rulesAuto Loader ingestionmanaged Iceberg tablesLakehouse Federation for what stays outside
03Policy & classification - written once, inherited downwardEnforce
grants model by group, never by personrow filterscolumn masksgoverned tags + ABAC policysensitivity taxonomyaccess-review cadence
04Serve, share & observe - governed all the way to the consumerOperate
serverless SQL warehousesAI/BI dashboards + Geniemetric viewsDelta SharingClean RoomsLakehouse Monitoringgovernance dashboards
05AI, under the same catalog - the layer most blueprints leave outThe signature
models registered in UCfeature tables in UCVector Search indexes as UC objectsUC functions as agent toolsAI Gateway guardrails + rate limitsinference tables for every responseMLflow tracing
and the whole thing declared as code
06Governance as code - because a console change nobody reviewed is a findingRepeatable
Terraform providerDatabricks Asset Bundlesgrants in version controlpolicy tests in CIdrift detectionpromotion dev → stg → prod

Hover any layer for the pieces. The list is deliberately boring: the value is in the decisions, not the inventory - one metastore per region, catalogs as the environment boundary, a gov schema that owns every mask, and no grant that isn't in Git.

How this fits with AI Governance

The method decides. The platform enforces.

Our AI Governance practice and this platform are two halves of one answer - and it's worth being precise about which is which, because a serious buyer will ask, and most vendors blur it. One is a way of working. The other is a technical control that makes the way of working real.

AI Governance

The method

Decides what should be true.
What it is
Nine-phase lifecycle, risk tiering, evidence packs, a signed go/no-go verdict.
The question it answers
“Is this AI system fit to ship, and can we prove it?”
Maps to
The EU AI Act, NIST AI RMF and ISO/IEC 42001.
Where it runs
Portable - runs on any stack.
Governed Data Platform on Databricks

The mechanism

Makes it technically enforced.
What it is
Unity Catalog grants, masks, filters, lineage and audit - the controls the method assumes already exist.
The question it answers
“Who can actually see this data, where did it come from, and who touched it?”
Provides
The access, lineage and audit evidence those frameworks require - as queryable tables.
Where it runs
Native - inside Databricks, where your data already lives.
Together

A policy you can't enforce is a wish. A control with no policy behind it is a setting.

You need both, and they're stronger together than apart: the method tells the platform what to enforce, and the platform gives the method its evidence. Buy the platform here; bring the method from the AI Governance practice. Neither is complete alone.

See the method - our AI Governance practice
The stack

What the governance layer is built from.

Unity Catalog at the centre, with the policy, serving, AI and platform-security pieces around it. The integrations are here because enterprises usually already run an identity provider, a BI tool and an enterprise catalog we federate with rather than replace.

Layer
Show
INT = integration we connect to, not replace
How we deliver

From “we'd have to go find out” to a query, in about a quarter.

Governance programmes stall when they try to boil the estate. We sequence it so something is provable early: one catalog, one sensitive table, one audit dashboard - then widen. The weeks below are our typical shape for a mid-size estate; yours moves with how much lives in a legacy metastore and how many workspaces need binding.

00
Weeks 1–2

Readiness review

What exists, what's enforced and what only looks enforced.

  • Metastore & workspace inventory
  • Grants and legacy ACLs mapped
  • PII locations found, not assumed
  • Gap list, ranked by audit exposure
You get: the gap list and a target topology - useful even if you stop here.
01
Weeks 2–4

Foundations

The decisions everything inherits, made once and written as code.

  • Metastore per region, identity federated via SCIM
  • Catalog topology + workspace binding
  • External locations, storage credentials, volumes
  • Terraform / Asset Bundles from day one
You get: an estate whose shape a new engineer can read.
02
Weeks 4–8

Migrate & classify

Out of the legacy metastore, and into a tag taxonomy that policy can use.

  • Hive metastore tables migrated to UC
  • Sensitivity taxonomy agreed with Risk
  • Governed tags applied to columns
  • Lineage verified against the real graph
You get: one namespace, and a defensible answer to “where is our PII?”
03
Weeks 6–10

Enforce

Grants by group, masks and filters where the data is sensitive.

  • Grants model, reviewed by Security
  • Row filters and column masks in a gov schema
  • Tag-driven policy so new columns arrive covered
  • Access-review cadence with named owners
You get: the same query returning different truths, by design.
04
Weeks 8–12

Prove & extend to AI

The evidence an auditor asks for, plus the agents brought inside the boundary.

  • Governance dashboards on system tables
  • Evidence pack exported on a schedule
  • Models, indexes and agent tools registered in UC
  • Guardrails and inference logging on serving endpoints
You get: a security-review answer you can hand over, not rehearse.

Then it has to be run, not finished

Governance decays: people change teams, tables get added, someone grants something in a console at 6pm. What keeps it true is boring and ongoing - a scheduled access review, drift detection against the version-controlled grants, a denied-attempts dashboard someone actually reads, and a quarterly re-run of the evidence pack. We either run that with you or hand it over with the runbook, deliberately, rather than leaving it to fade.

In production

Governed end to end - in production today.

Governance operating in production, not a slide about governance.

Automotive · ManufacturingIn production

A large automotive supplier - governed ETL under one catalog

The governed ETL we built feeding this supplier's live BI runs on exactly this control plane - access, lineage and audit under one Unity Catalog, data an analyst and an auditor can both trust. Not a proof of concept; the pipeline the business reports off.

Insurance · IDPIn production

Document processing, governed the same way

On the insurance side, intelligent document processing over ACORD forms and policy records - the extracted data landing in governed tables and volumes, under the same access, lineage and audit controls as everything else.

Straight about the reference: this is the same automotive engagement referenced on our Modern Data Engineering page, viewed through the governance lens - legitimate and consistent. We're adding a governance-specific detail (a passed audit, an access-review cycle) and a second cluster reference so the story doesn't rest on one client.

Why Focaloid for governed data on Databricks

We govern the data because we build on it - and build AI on top of it.

We build the lakehouse we govern

The same team that designs your Databricks estate sets up its governance - so grants, masks, lineage and audit are designed in from the first table, not retrofitted by a separate team who didn't build the pipelines and can't safely change them.

Governance that reaches the AI

Because we build agents too, we govern the whole path - the same catalog controls the analyst's query, the retrieval index and the agent's tool call. Most vendors govern the tables and lose the model, which is exactly where the risk moved.

Method and mechanism, one house

Our AI Governance practice brings the framework; this platform enforces it. You get the policy and the control from one partner who makes them fit together - instead of a consultancy and a tools vendor who don't talk to each other.

Built to a real security bar

ISO/IEC 27001:2022 certified, working to the access and audit discipline a European risk review actually tests - private networking, customer-managed keys, least-privilege service principals. Not governance theatre.

Partners & certifications
Databricks PartnerMember of the Claude Partner NetworkISO/IEC 27001:2022 Certified
Who it's for

Built for teams who'll be asked to prove it.

“A customer's security review wants to know exactly who can see their data. We can't answer cleanly.”
“Half our tables are still in the legacy metastore and nobody wants to own the migration.”
“An auditor asked for a year of access logs and we had to go build them.”
“We govern the lakehouse well - and then our agent reads a copy nobody's watching.”
“Someone changed a source table and three dashboards broke before we noticed.”
“We have masks on twelve columns and no idea whether the thirteenth got missed.”

Usually a CDO, Head of Data Governance or Data Platform, a CISO, a DPO, or a CTO whose customers run hard security reviews - on Databricks, in the US, Europe and APAC.

Where this leads

The control plane connects both ways.

The middle of the cluster - it sits over a platform, reaches the agents, and enforces a method.

Common questions

Before you book.

Why Databricks only?

Because depth beats breadth on a page like this. Unity Catalog is one control plane over tables, files, models, retrieval indexes and agent tools - which means the governance story doesn't break at the boundary where your AI starts. We go deep on that specific shape: the grants model, the mask and filter patterns, the system tables, the agent path. If your estate is on something else, our AI Governance method is platform-portable and we'll say plainly what does and doesn't transfer.

Most of our tables are still in the legacy Hive metastore. Is that a blocker?

No - it's the usual starting point, and it's a large share of the work. We inventory what's there, map the existing grants and cluster ACLs onto a Unity Catalog model, and migrate in waves using the Databricks migration tooling rather than a big-bang cutover, keeping the old names resolvable while consumers move. The order matters: we migrate the tables a sensitive report depends on first, so the first thing you can prove is the thing most likely to be asked about.

Do we have to rip out our existing data catalog?

No. Unity Catalog governs the Databricks estate; an enterprise catalog you already run - Purview, Collibra, Atlan - keeps its role as the business-wide inventory, and we connect them so lineage and classification flow rather than diverge. Open table formats and the Iceberg REST interface make that federation less fragile than it used to be. Where consolidation genuinely makes sense we'll say so, and where it would just be a migration for its own sake we'll say that too.

Does the governance actually reach our AI, or just the tables?

It reaches the AI. Registered models, feature tables, vector indexes and the functions an agent calls as tools are all catalog objects, so they carry grants like a table does. Agents authenticate as a principal - either their own service principal or, where it fits, the identity of the person who asked - and are subject to the same row filters and column masks. Their reads land in the same audit table. On top of that, serving endpoints can run behind gateway guardrails that screen prompts and responses and log every payload. See the agent request path above for the whole route.

Is the lineage automatic, or do we maintain it?

Automatic. Unity Catalog captures table- and column-level lineage as queries and pipelines run, and exposes it both in Catalog Explorer and as system tables you can query in SQL. You don't hand-maintain a mapping - which is precisely why it stays true. What we add is verification (does the captured graph match the graph you believe you have?) and the dashboards that turn it into evidence.

Can we do row- and column-level security, not just table access?

Yes, and it's the part worth insisting on. Row filters and column masks are ordinary SQL functions attached to a table, so the same SELECT * returns different rows and differently-masked columns depending on the caller's groups. A support agent sees masked contact details for their region; a compliance officer sees them in full; an agent sees only what the person it's acting for could see. Tag-driven policy then lets you write the rule once against a sensitivity tag instead of once per column - see the playground above.

What does an auditor actually get?

A queryable access history - who accessed what, when, from where, and whether it was permitted - plus the column-level lineage graph showing how any figure was derived, plus the grants themselves as a list rather than a claim. We package that as an evidence pack that regenerates on a schedule, so the artefact is current when someone asks instead of being assembled under deadline. Notably, the auditor typically gets none of the underlying data: read the log, not the customers.

Will this slow our analysts down or blow up our compute bill?

Masks and filters are evaluated as part of the query, so they cost something - usually small, occasionally not, and the difference is almost always how the policy function was written. We benchmark the sensitive tables before and after, keep policy functions simple and deterministic, and push filtering to partitioned or clustered columns wherever we can. On cost, the governance work usually pays for itself in the other direction: the audit tables make it obvious which expensive tables nobody actually reads.

We're multi-region and multi-workspace. How does that work?

A metastore is regional, so a multi-region estate has more than one - and pretending otherwise is a common design mistake. We model the boundaries explicitly: which data may leave a region, which workspaces bind to which catalogs, and where Delta Sharing or Clean Rooms carry data across a boundary under an agreement rather than a copy. Identity stays account-level, so a person or group means the same thing everywhere even when the data deliberately doesn't travel.

The next step

Find out what you could actually prove today.

Start with a governance readiness review - we'll look at how access, lineage and audit work across your Databricks estate right now, where the gaps are, and what a properly modelled Unity Catalog control plane would close. The fastest way to know how you'd do in a customer's security review before they run it.

Databricks-nativeUnity Catalog·Column-level lineage·system.access.audit·ISO/IEC 27001:2022