<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf" -->

---
title: Read Restrictions and Catalog Labels: Unifying...
description: The Apache Iceberg community has adopted two new additions to the Iceberg REST Catalog spec: read restrictions and catalog labels. Read restrictions let a...
canonical: https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Read Restrictions and Catalog Labels: Unifying governance across engines and catalogs | daily.dev
og:description: The Apache Iceberg community has adopted two new additions to the Iceberg REST Catalog spec: read restrictions and catalog labels. Read restrictions let a...
og:url: https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf
og:image: https://api.daily.dev/og/posts/3UKlx29KF.png
og:image:alt: Read Restrictions and Catalog Labels: Unifying governance across engines and catalogs
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Read Restrictions and Catalog Labels: Unifying governance across engines and catalogs

**[databricks](https://daily.dev/sources/databricks)** · 10 min read · 0 upvotes · 0 comments

## Summary

The Apache Iceberg community has adopted two new additions to the Iceberg REST Catalog spec: read restrictions and catalog labels. Read restrictions let a catalog delegate policy enforcement to a trusted engine by returning column-projection actions and row-filter expressions for a given principal, rather than the raw policy itself, though establishing engine trust remains outside the protocol. Catalog labels let catalogs exchange lightweight key-value metadata (like PII classifications) at table and column level, which a consuming catalog maps into its own native policy model, keeping enforcement and audit trails local. Together with Databricks' existing centralized Cross-Engine ABAC enforcement, these give three governance models suited to different scenarios: untrusted engines, trusted engines, and federated catalogs.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.databricks.com/blog/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs>

## Questions this post answers

### What are Iceberg read restrictions and how do they work with the REST Catalog?

Read restrictions are a recently adopted Apache Iceberg REST Catalog spec that lets a catalog evaluate access policy for a requesting principal and return column-projection actions and row-filter expressions that a trusted engine must apply when reading a table. The spec defines nine predefined column-projection actions and standardized row-filter expressions like comparisons or set membership, but it does not define how trust between engine and catalog is established.

_Teams weighing delegated versus centralized enforcement can follow evolving Iceberg governance specs on daily.dev._

### What are Iceberg catalog labels used for in catalog federation?

Catalog labels are a newly adopted Iceberg spec that lets catalogs exchange lightweight key-value metadata at the table and column level, such as marking a column pii=ssn, during catalog federation. A consuming catalog maps these labels into its own native tags or classifications and enforces access locally using its own identities and policies, avoiding a per-request call back to the producing catalog, though labels carry no shared semantics beyond the key-value pair.

_Architects designing multi-catalog governance can track how Iceberg federation standards mature on daily.dev._

### What is the difference between delegated enforcement and centralized enforcement for Iceberg table access?

Centralized enforcement keeps policy evaluation and filtering inside the catalog's trusted boundary, such as Databricks routing queries through a secure filtering fleet before an untrusted engine like Spark or DuckDB sees the result. Delegated enforcement instead has the catalog evaluate policy and hand filtering instructions to an engine it trusts to enforce them correctly, such as a securely configured Trino deployment with native row and column masking support.

_Developers choosing an enforcement model for cross-engine data access can compare these trade-offs on daily.dev._

## Similar posts on daily.dev

- [Unifying governance across engines and catalogs in the Open Lakehouse](https://daily.dev/posts/unifying-governance-across-engines-and-catalogs-in-the-open-lakehouse-qge5kcwda) · databricks · 0 upvotes · 0 comments
- [Iceberg Needs an Open Catalog, Not a Walled Garden](https://daily.dev/posts/iceberg-needs-an-open-catalog-not-a-walled-garden-znv0xeptl) · SingleStore · 0 upvotes · 0 comments
- [Lakehouse runtime catalog helps modernize Apache Hive](https://daily.dev/posts/lakehouse-runtime-catalog-helps-modernize-apache-hive-hsxmm75px) · Google Cloud · 0 upvotes · 0 comments
- [If it’s in your catalog, you can query it: The DataLakeCatalog engine in ClickHouse Cloud](https://daily.dev/posts/if-it-s-in-your-catalog-you-can-query-it-the-datalakecatalog-engine-in-clickhouse-cloud-sqo65sxpy) · ClickHouse · 0 upvotes · 0 comments

---

Tags: [#big-data](https://daily.dev/tags/big-data), [#databricks](https://daily.dev/tags/databricks), [#apache-iceberg](https://daily.dev/tags/apache-iceberg), [#unity-catalog](https://daily.dev/tags/unity-catalog)

[View this post on daily.dev](https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Read Restrictions and Catalog Labels: Unifying governance across engines and catalogs","url":"https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf"},"datePublished":"2026-10-01T21:05:07.203Z","dateModified":"2026-10-01T21:08:20.001Z","description":"The Apache Iceberg community has adopted two new additions to the Iceberg REST Catalog spec: read restrictions and catalog labels. Read restrictions let a...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4c61b6ed08d8a7fcf2d9d44c46eae7b8?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4c61b6ed08d8a7fcf2d9d44c46eae7b8?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"databricks","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"databricks","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/fa7aa720f2db4d1eba826814730482c8","url":"https://daily.dev/sources/databricks"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"big-data,databricks,apache-iceberg,unity-catalog","timeRequired":"PT10M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"databricks","item":"https://daily.dev/sources/databricks"},{"@type":"ListItem","position":3,"name":"Read Restrictions and Catalog Labels: Unifying governance across engines and catalogs"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/read-restrictions-and-catalog-labels-unifying-governance-across-engines-and-catalogs-3uklx29kf#faq","mainEntity":[{"@type":"Question","name":"What are Iceberg read restrictions and how do they work with the REST Catalog?","acceptedAnswer":{"@type":"Answer","text":"Read restrictions are a recently adopted Apache Iceberg REST Catalog spec that lets a catalog evaluate access policy for a requesting principal and return column-projection actions and row-filter expressions that a trusted engine must apply when reading a table. The spec defines nine predefined column-projection actions and standardized row-filter expressions like comparisons or set membership, but it does not define how trust between engine and catalog is established. Teams weighing delegated versus centralized enforcement can follow evolving Iceberg governance specs on daily.dev."}},{"@type":"Question","name":"What are Iceberg catalog labels used for in catalog federation?","acceptedAnswer":{"@type":"Answer","text":"Catalog labels are a newly adopted Iceberg spec that lets catalogs exchange lightweight key-value metadata at the table and column level, such as marking a column pii=ssn, during catalog federation. A consuming catalog maps these labels into its own native tags or classifications and enforces access locally using its own identities and policies, avoiding a per-request call back to the producing catalog, though labels carry no shared semantics beyond the key-value pair. Architects designing multi-catalog governance can track how Iceberg federation standards mature on daily.dev."}},{"@type":"Question","name":"What is the difference between delegated enforcement and centralized enforcement for Iceberg table access?","acceptedAnswer":{"@type":"Answer","text":"Centralized enforcement keeps policy evaluation and filtering inside the catalog's trusted boundary, such as Databricks routing queries through a secure filtering fleet before an untrusted engine like Spark or DuckDB sees the result. Delegated enforcement instead has the catalog evaluate policy and hand filtering instructions to an engine it trusts to enforce them correctly, such as a securely configured Trino deployment with native row and column masking support. Developers choosing an enforcement model for cross-engine data access can compare these trade-offs on daily.dev."}}]}
```

