ABAC, Masking, and Cross-Engine Governance

The privilege migration matrix and tag compression from the last section get you group-based grants at the catalog and schema level; this section adds the finer-grained layer those grants alone can’t express – who sees which rows, which columns are masked, and what happens the instant a query comes from an engine that isn’t Databricks at all. ABAC turns row filters and column masks from a per-table chore into a tag-driven policy that follows every current and future object automatically, which is the difference between governance that survives six months of schema drift and governance that quietly rots. The section closes on the piece most migrations underestimate: proving that masking and filtering still hold when a partner’s Snowflake account or a Trino cluster reads the same Unity Catalog data through Delta Sharing or the Iceberg REST catalog.

flowchart LR
    subgraph Tags["Governed Tags (account-level)"]
        T1["domain=finance"]
        T2["pii=true"]
        T3["tier=restricted"]
    end

    subgraph Policy["ABAC Policies"]
        RF["Row filter policy"]
        CM["Column mask policy"]
    end

    subgraph Objects["Unity Catalog Objects"]
        SCH[Schema] --> TBL1[Table]
        SCH --> TBL2[Table added later]
    end

    T1 & T3 -->|has_tag_value| RF
    T2 -->|has_tag_value| CM
    RF -.enforced on.-> TBL1
    RF -.enforced on.-> TBL2
    CM -.enforced on.-> TBL1
    CM -.enforced on.-> TBL2

    TBL1 & TBL2 --> CV[Credential Vending]
    CV --> DS["Delta Sharing<br/>(external orgs, any platform)"]
    CV --> IC["Iceberg REST Catalog<br/>(Trino, Snowflake, PyIceberg)"]

Lectures


| ← Previous: Check Your Knowledge | Next: ABAC With Governed Tags: Tag at Schema, Not Table → | |:—|—:|


Table of contents


Back to top

Independent, self-authored Databricks companion notes.

This site uses Just the Docs, a documentation theme for Jekyll.