Share content privately in a Snowflake Native App

This topic describes how to share content privately in a Snowflake Native App by marking objects as private in the manifest file.

Mark shared content as private

Set private: true on a database, schema, or object in the shared_content section to hide it from direct use by consumers:

shared_content:
  databases:
    - <db_name>:
        schemas:
          - <schema_name>:
              tables:
                - <table_name>:
                    private: true

A private object is hidden from direct consumer use, but other objects within the app can still use it. This lets you share building-block objects without exposing them as part of the consumer-facing interface.

Control access with application roles

To make a shared object available to consumers, add it to the roles list for that object. This works the same way as application roles in declarative sharing: the framework creates an application role to share the object. For more information, see Declarative roles for shared content.

For the full syntax, see the Manifest file reference.