Enforcing table, column, and row-level access control
Unity Catalog lets you secure data at the table, column, and row level using standard SQL GRANT statements and specialized functions applied directly to catalog objects. Column-level security uses masking functions, while row-level security relies on row filters, both defined once and enforced consistently across all engines and BI tools connected to the catalog. These controls integrate with Unity Catalog's centralized identity model, allowing permissions to be tied to users, groups, or service principals.
1 · Learn the must-know
- Table-level access is controlled via GRANT/REVOKE statements (e.g., SELECT, MODIFY) on catalog, schema, or table objects, following the three-level namespace (catalog.schema.table).
- Column masking is implemented by creating a SQL function that transforms or redacts a column's value and applying it with ALTER TABLE ... ALTER COLUMN ... SET MASK, so the function runs at query time based on the caller's identity or group membership.
- Row-level security uses row filter functions defined in SQL and attached to a table via ALTER TABLE ... SET ROW FILTER, which filters returned rows based on conditions like the querying user's group or attribute.
- Both masking and row filter functions typically use functions like
is_account_group_member() orcurrent_user() to dynamically apply different rules per user without needing separate views per audience. - Access controls defined this way are enforced uniformly across all compute types (SQL warehouses, all-purpose clusters) and BI tools, avoiding the need to duplicate logic in each consuming application.
- Dynamic views (using CASE WHEN with
is_account_group_member()) remain a valid alternative/legacy pattern for row- and column-level security when native masking/row filter features are not used or for finer custom logic.
2 · Check your understanding
A data engineer manages a Unity Catalog table named transactions that includes a region column with values 'EMEA' and 'NA'. Account-level group sales-emea should see only EMEA rows, and account-level group sales-na should see only NA rows, through a single shared view rather than separate views per region. Which view definition correctly implements this row-level security?
What you have tried across DP-750's objectives, not a readiness score.
Set up and configure an Azure Databricks environment15-20% of the exam0 of 13 tried
Secure and govern Unity Catalog objects15-20% of the exam0 of 12 tried
Prepare and process data30-35% of the exam0 of 28 tried
Deploy and maintain data pipelines and workloads30-35% of the exam0 of 24 tried
3 · Keep going
Ready for more? Take a weighted mock or try free practice questions.