Skip to main content

Authentication & Authorization

Metatate does not implement custom authentication. It relies entirely on Snowflake's native authentication and authorization, which means users are authenticated by Snowflake before they ever reach the application.

Session Flow

Key points:

  1. Snowflake handles authentication — users log in through Snowflake's standard mechanisms (username/password, SSO, MFA, key pair)
  2. Snowsight is the entry point — users access the app through the Snowflake UI or the Streamlit launcher
  3. SPCS ingress validates the session — only authenticated Snowflake users can reach the application endpoints
  4. No credentials stored — the application never sees or stores user passwords, tokens, or API keys
  5. Identity is inherited — the backend operates with the calling user's Snowflake identity and privileges

Application Roles

Metatate defines two application roles that control feature access within the app:

app_admin

Full access to all application features.

CapabilityAccess
View governance catalogYes
Create and edit policiesYes
Deploy and materialize policiesYes
Manage table referencesYes
Configure tenant settingsYes
View activity and decision logsYes
Access AI featuresYes
Manage app roles and usersYes

app_user

Standard access for day-to-day governance operations.

CapabilityAccess
View governance catalogYes
Create and edit policiesYes
Deploy and materialize policiesYes
Manage table referencesNo
Configure tenant settingsNo
View activity and decision logsYes (own activity)
Access AI featuresYes
Manage app roles and usersNo

Permission Matrix

Schema Access

Schemaapp_adminapp_user
app_dataRead / WriteRead
coreRead / ExecuteRead / Execute
app_publicRead / ExecuteRead / Execute
app_internalFullNo access

Table Access

Tableapp_adminapp_user
Governance tables (6)Read / WriteRead
Staging tables (6)Read / WriteNo access
tenant_configRead / WriteRead
activity_logRead / WriteRead (own)
governance_snapshotsReadRead
governance_decision_logReadRead

Procedure Access

Procedureapp_adminapp_user
Policy compilationExecuteExecute
Governance materializationExecuteExecute
Tenant configurationExecuteNo access
Reference managementExecuteNo access
MCP toolsExecuteExecute

Consumer-Controlled Access

The consumer retains full control over what data the application can see through Snowflake's reference system:

DATABASE_CATALOG Reference

  • Type: Multi-valued table reference
  • Access level: SELECT only
  • Purpose: Allows Metatate to read table metadata (column names, data types) for governance catalog
  • Consumer control: The consumer chooses exactly which tables to share. The app cannot access any table not explicitly granted.

APP_WAREHOUSE Reference

  • Type: Warehouse reference
  • Purpose: Provides compute for queries and MCP tool execution
  • Consumer control: The consumer provides their own warehouse. The app does not create or manage warehouses.

What the App Cannot Do

  • Cannot read data from tables not in the DATABASE_CATALOG reference
  • Cannot write to any consumer table (SELECT only access)
  • Cannot create objects in consumer schemas
  • Cannot access other applications or databases
  • Cannot modify consumer roles or grants
  • Cannot make external network calls

No Custom Authentication

There are several things Metatate deliberately does not do:

  • No login page — users are already authenticated by Snowflake
  • No user database — user identity comes from Snowflake
  • No API keys — backend calls use the Snowflake session context
  • No OAuth flows — no external identity providers
  • No session management — SPCS handles session lifecycle
  • No password storage — not applicable

This design eliminates an entire class of security concerns (credential storage, session hijacking, token management) by delegating authentication entirely to Snowflake.