<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Seek for Help: enable/disable BROWSE privilege on specific tables, possible or not? in Data Governance</title>
    <link>https://community.databricks.com/t5/data-governance/seek-for-help-enable-disable-browse-privilege-on-specific-tables/m-p/157625#M2845</link>
    <description>&lt;P&gt;We have three tables A, B, C in the same schema, I want to grant user permission to view only the metadata of table A, cannot see underlying data of A.&lt;/P&gt;&lt;P&gt;User can not see table B and C including table schema and underlying&amp;nbsp; data either.&lt;/P&gt;&lt;P&gt;Is it possible to do this ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;</description>
    <pubDate>Tue, 26 May 2026 05:18:42 GMT</pubDate>
    <dc:creator>community_user_</dc:creator>
    <dc:date>2026-05-26T05:18:42Z</dc:date>
    <item>
      <title>Seek for Help: enable/disable BROWSE privilege on specific tables, possible or not?</title>
      <link>https://community.databricks.com/t5/data-governance/seek-for-help-enable-disable-browse-privilege-on-specific-tables/m-p/157625#M2845</link>
      <description>&lt;P&gt;We have three tables A, B, C in the same schema, I want to grant user permission to view only the metadata of table A, cannot see underlying data of A.&lt;/P&gt;&lt;P&gt;User can not see table B and C including table schema and underlying&amp;nbsp; data either.&lt;/P&gt;&lt;P&gt;Is it possible to do this ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;</description>
      <pubDate>Tue, 26 May 2026 05:18:42 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/seek-for-help-enable-disable-browse-privilege-on-specific-tables/m-p/157625#M2845</guid>
      <dc:creator>community_user_</dc:creator>
      <dc:date>2026-05-26T05:18:42Z</dc:date>
    </item>
    <item>
      <title>Re: Seek for Help: enable/disable BROWSE privilege on specific tables, possible or not?</title>
      <link>https://community.databricks.com/t5/data-governance/seek-for-help-enable-disable-browse-privilege-on-specific-tables/m-p/157645#M2847</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/231530"&gt;@community_user_&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It is not possible to achieve this exactly in Unity Catalog when A, B, and C are in the same schema.&lt;/P&gt;&lt;P&gt;Unity Catalog does not support granting “metadata‑only on a single table” while completely hiding other tables in the same schema. To get close, you would either need to move A to a separate schema/catalog and grant browse/usage there, or grant SELECT on A and then use row‑level security/filters to return no rows while still exposing the metadata.&lt;BR /&gt;see:&amp;nbsp;&lt;A href="https://docs.databricks.com/aws/en/data-governance/unity-catalog/access-control/permissions-concepts" target="_blank"&gt;https://docs.databricks.com/aws/en/data-governance/unity-catalog/access-control/permissions-concepts&lt;/A&gt;&lt;BR /&gt;If you want metadata without data, UC’s intended mechanism is the BROWSE privilege (usually at catalog level), which exposes metadata but does not grant SELECT. But, BROWSE is not granular enough to apply to just one table in a schema while hiding others.&lt;/P&gt;</description>
      <pubDate>Tue, 26 May 2026 08:34:46 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/seek-for-help-enable-disable-browse-privilege-on-specific-tables/m-p/157645#M2847</guid>
      <dc:creator>Pat</dc:creator>
      <dc:date>2026-05-26T08:34:46Z</dc:date>
    </item>
    <item>
      <title>Re: Seek for Help: enable/disable BROWSE privilege on specific tables, possible or not?</title>
      <link>https://community.databricks.com/t5/data-governance/seek-for-help-enable-disable-browse-privilege-on-specific-tables/m-p/157653#M2848</link>
      <description>&lt;P&gt;Hello &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/231530"&gt;@community_user_&lt;/a&gt;&amp;nbsp;!&lt;/P&gt;&lt;P&gt;Yes, this is absolutely possible in Databricks, but it requires a workaround.&lt;/P&gt;&lt;P&gt;In Unity Catalog, permissions are secure by default. If you do not explicitly grant a user permissions on an object, it remains completely invisible to them. Therefore, keeping Tables B and C hidden is easy: simply do not grant the user any permissions on them, and they won't even see they exist.&lt;/P&gt;&lt;P&gt;However, Databricks does not currently have a native, table-level "metadata-only" privilege (their native &lt;FONT size="2" color="#800080"&gt;BROWSE&lt;/FONT&gt;&amp;nbsp;privilege can only be applied to the entire catalog, which would inadvertently expose Tables B and C's metadata).&lt;/P&gt;&lt;P&gt;To give the user metadata-only access to just Table A, you can use one of the two workarounds mentioned below. Here is a breakdown of how to implement them and their pros/cons:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Approach 1: SELECT Privilege + Restrictive Row Filter&lt;/STRONG&gt;&lt;BR /&gt;You grant the user SELECT access so they can read the schema, but apply a row filter that always evaluates to FALSE for them so they can never see the data.&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;-- 1. Grant basic navigation access
GRANT USE CATALOG ON CATALOG &amp;lt;catalog&amp;gt; TO `&amp;lt;user_email&amp;gt;`;
GRANT USE SCHEMA ON SCHEMA &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt; TO `&amp;lt;user_email&amp;gt;`; 

-- 2. Grant SELECT so the user can run DESCRIBE on Table A
GRANT SELECT ON TABLE &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt;.&amp;lt;table_A&amp;gt; TO `&amp;lt;user_email&amp;gt;`;

-- 3. Create a row filter function that blocks data for this specific user
CREATE OR REPLACE FUNCTION &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt;.no_data_filter()
RETURN CASE 
  WHEN current_user() = '&amp;lt;user_email&amp;gt;' THEN FALSE
  ELSE TRUE
END;

-- 4. Apply the row filter to Table A
ALTER TABLE &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt;.&amp;lt;table_A&amp;gt; SET ROW FILTER &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt;.no_data_filter ON ();&lt;/LI-CODE&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;User Experience&lt;/STRONG&gt;: The user can run &lt;FONT size="2" color="#800080"&gt;DESCRIBE&lt;/FONT&gt; to see column names and types. If they run &lt;FONT size="2" color="#800080"&gt;SELECT * FROM Table_A&lt;/FONT&gt;, the query executes successfully but returns 0 rows.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Downside&lt;/STRONG&gt;: While effective, the row filter approach has major downsides: queries still scan data and consume full compute and I/O costs just to return zero rows. It also fails to truly isolate metadata, as commands like &lt;FONT size="2" color="#800080"&gt;DESCRIBE EXTENDED&lt;/FONT&gt;, &lt;FONT size="2" color="#800080"&gt;DESCRIBE HISTORY&lt;/FONT&gt;, and queries against &lt;FONT size="2" color="#800080"&gt;system.information_schema&lt;/FONT&gt; still expose cloud storage paths, table size, partitioning, and delta history.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Approach 2: Create a Metadata-Only View&lt;/STRONG&gt;&lt;BR /&gt;Instead of filtering the base table, leave Table A completely hidden from the user. Instead, create an empty view of Table A and grant them access to that view.&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;-- 1. Create a view with zero rows
CREATE VIEW &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt;.&amp;lt;table_A_metadata&amp;gt; AS
SELECT * FROM &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt;.&amp;lt;table_A&amp;gt; WHERE 1=0;

-- 2. Grant access only to the view
GRANT USE CATALOG ON CATALOG &amp;lt;catalog&amp;gt; TO `&amp;lt;user_email&amp;gt;`;
GRANT USE SCHEMA ON SCHEMA &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt; TO `&amp;lt;user_email&amp;gt;`; 
GRANT SELECT ON VIEW &amp;lt;catalog&amp;gt;.&amp;lt;schema&amp;gt;.&amp;lt;table_A_metadata&amp;gt; TO `&amp;lt;user_email&amp;gt;`;&lt;/LI-CODE&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;User Experience&lt;/STRONG&gt;: The user only sees &lt;FONT size="2" color="#800080"&gt;table_A_metadata&lt;/FONT&gt; in their catalog. They can see the schema, and querying it instantly returns 0 rows without scanning the underlying data. Base Table A, Table B, and Table C remain completely invisible to them.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Downside&lt;/STRONG&gt;: If you change the schema of Table A (e.g., adding or dropping columns), you will need to recreate the view to reflect those changes.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Hope this helps! Please feel free to reach out again if you need any more help with this setup.&lt;/P&gt;</description>
      <pubDate>Tue, 26 May 2026 09:59:59 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/seek-for-help-enable-disable-browse-privilege-on-specific-tables/m-p/157653#M2848</guid>
      <dc:creator>anshul2528</dc:creator>
      <dc:date>2026-05-26T09:59:59Z</dc:date>
    </item>
  </channel>
</rss>

