Metadata access control¶
Metadata access in Horizon Catalog is separate from data access. A role can view or curate metadata and lineage without being able to query the underlying data, so we recommend managing metadata access with roles that are separate from your data access roles.
This page covers two needs:
- View metadata and lineage: for end users and analysts who explore the catalog and lineage (read-only).
- Edit metadata: for data stewards who curate the descriptions and comments that appear in the catalog.
View metadata and lineage¶
Give end users read-only visibility into Snowflake metadata, connector metadata, and lineage. Viewing metadata doesn’t require access to the underlying data, so you can grant it to roles that have no query privileges.
Viewing lineage requires the VIEW LINEAGE privilege on the account, plus access to the objects in
the lineage graph. VIEW LINEAGE is granted to the PUBLIC role by default, so most roles already
have it. If your account has restricted this default grant, re-grant it before following the steps
below. See
Access control for lineage information.
Snowflake object metadata¶
To control visibility of Snowflake objects (databases, schemas, tables, views, and similar) in
Horizon Catalog, grant USAGE and REFERENCES privileges using a combination of ALL and
FUTURE grants:
ALLgrants apply the grant to every matching object that exists when you run the statement.FUTUREgrants create a standing rule that applies the grant to objects created later.
Using ALL and FUTURE grants together gives a role visibility into both the objects that exist
today and anything created in the future, which is the same effect as an inherited grant. For more
information, see GRANT <privileges>.
Connector metadata and lineage¶
A connector is created by the role that sets it up in Catalog > Connections, and that role owns it. Other roles, including the roles your analysts use to explore lineage, can’t see the connector’s metadata and lineage until you grant them access. To see a connector’s external objects in lineage graphs and catalog metadata, the active role must have all of the following:
- USAGE on the database that contains the connector
- USAGE on the schema that contains the connector
- USAGE on the connector itself, or OWNERSHIP of it
Note
Granting USAGE on a connector controls the visibility of the metadata and lineage that
the connector collects. It doesn’t expose the connector’s stored credentials, and it doesn’t
grant any access to the external system itself.
All metadata connectors are created under the CONNECTORS.METADATA schema by default. Grant USAGE to
each role that needs to view the connector’s metadata and lineage:
If you stored your connector in a different database or schema, replace CONNECTORS and METADATA
with the actual database and schema names. To find the connector’s location, run:
Note
If you drop and recreate a connector, the new connector does not inherit grants from the old
one. Re-grant USAGE to the roles that need it after recreating a connector.
Edit metadata¶
Give data stewards the ability to curate the comments, descriptions, and tags that appear in the
catalog, without granting more permissive privileges such as MODIFY or OWNERSHIP:
APPLY COMMENT: edit the comments and descriptions on objects and columns.APPLY TAG: set and unset tags on objects and columns. You can grant it on the account or on an individual tag. For the full tag privileges and grant syntax, see Tag privileges.
APPLY COMMENT¶
APPLY COMMENT lets a role set or unset the comment on an object, including column-level comments
for table-like objects.
Note
Privileges such as MODIFY and OWNERSHIP continue to authorize comment changes exactly as before. APPLY COMMENT
widens who can edit comments. It doesn’t restrict the existing paths.
Grant syntax¶
APPLY COMMENT uses the standard GRANT <privileges>
syntax. You can grant it at three scopes:
A role granted APPLY COMMENT still needs USAGE on the parent database and schema to resolve
the target object. The privilege authorizes the comment change. It doesn’t grant the visibility
needed to navigate to the object.
To revoke the privilege, use REVOKE <privileges>:
Supported object types¶
You can grant APPLY COMMENT on the following object types:
- Database
- Schema
- Table
- Dynamic table
- Apache Iceberg™ table
- External table
- Event table
- Interactive table
- View
- Materialized view
- Semantic view
- Function
- Procedure
- Pipe
- Task
- Agent
Statements authorized¶
With APPLY COMMENT on an object, a role can set and unset the object comment and, for table-like
objects, individual column comments. Both the ALTER … SET COMMENT and COMMENT ON forms are
authorized:
Statements not authorized¶
APPLY COMMENT is comment-only. It doesn’t authorize any other change, and a single statement
that mixes a comment change with any non-comment change is rejected. The role needs MODIFY or
OWNERSHIP for these statements.