Skip to main content

Security Controls

Metatate's security posture is built on three pillars: network isolation, container hardening, and data access minimization. Running entirely within Snowflake's infrastructure eliminates most of the attack surface associated with traditional SaaS applications.

Network SecurityDirect link to Network Security

IngressDirect link to Ingress

  • All user traffic enters through Snowflake's SPCS ingress endpoints
  • SPCS ingress enforces HTTPS with TLS 1.2+ (managed by Snowflake, not the application)
  • Only authenticated Snowflake users can reach the application endpoints
  • The nginx router (port 8000) is the single entry point within the container service

EgressDirect link to Egress

  • No outbound network access — the application has no External Access Integrations (EAIs)
  • No connections to external APIs, services, or endpoints
  • AI processing uses SNOWFLAKE.CORTEX.COMPLETE(), which is an internal Snowflake function
  • No telemetry, analytics, or tracking data is sent externally

Network DiagramDirect link to Network Diagram

Container SecurityDirect link to Container Security

Non-Root ExecutionDirect link to Non-Root Execution

All application containers run as non-root users. The container images are configured with:

  • Non-privileged user for the application process
  • Read-only filesystem where possible
  • No sudo or privilege escalation tools installed

Minimal ImagesDirect link to Minimal Images

Container images are built with minimal base images to reduce the attack surface:

  • Only runtime dependencies are included (no build tools, compilers, or package managers in production images)
  • Images are rebuilt from pinned base versions
  • No unnecessary system packages

No Hardcoded SecretsDirect link to No Hardcoded Secrets

  • No API keys, passwords, or tokens in container images or environment variables
  • Database connections use the SPCS service-to-Snowflake connection mechanism (no credential management)
  • Cortex AI access uses the application's granted privileges, not stored credentials
  • Configuration is read from Snowflake tables (tenant_config), not from files or environment variables

Image Supply ChainDirect link to Image Supply Chain

  • Container images are stored in Snowflake image repositories
  • Images are versioned and tagged to match application versions
  • The consumer receives images through the Snowflake Native Application distribution mechanism

Data SecurityDirect link to Data Security

Minimal Data AccessDirect link to Minimal Data Access

PrincipleImplementation
SELECT onlyThe app can only read consumer tables, never write to them
Consumer-controlled scopeOnly tables explicitly granted via DATABASE_CATALOG are accessible
No bulk data copyThe app reads metadata (column names, types); row data is not copied or cached
No data exportNo mechanism to export consumer data outside the application

Tenant IsolationDirect link to Tenant Isolation

Each application installation is isolated within its own Snowflake account:

  • Application schemas are private to the installation
  • Governance tables contain only data derived from the consumer's policies
  • No cross-tenant data sharing or aggregation
  • The provider cannot access the consumer's application data

AI Data HandlingDirect link to AI Data Handling

  • Cortex AI prompts contain metadata only (table names, column names, data types, policy text)
  • No consumer row data is included in AI prompts
  • AI responses are used for suggestions and analysis, not stored as governance state
  • All AI processing occurs within the Snowflake infrastructure (no external AI providers)

See Privacy & Data Handling for a complete data inventory.

TLS and EncryptionDirect link to TLS and Encryption

LayerEncryptionManaged By
User to SPCS ingressTLS 1.2+ (HTTPS)Snowflake
SPCS ingress to containersInternal SPCS networkingSnowflake
Container to Snowflake DBInternal connectionSnowflake
Data at restSnowflake's encryption at restSnowflake
Governance tablesSnowflake's encryption at restSnowflake

The application does not manage TLS certificates. Snowflake handles all encryption for data in transit and at rest.

Audit and MonitoringDirect link to Audit and Monitoring

Application-Level LoggingDirect link to Application-Level Logging

  • activity_log table records user actions (policy edits, deployments, configuration changes)
  • governance_decision_log records every authorization decision with full evidence chain
  • governance_snapshots records point-in-time governance state after each materialization
  • Container logs are available through SPCS standard log access

Snowflake-Level AuditingDirect link to Snowflake-Level Auditing

Standard Snowflake auditing mechanisms apply:

  • SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY captures all queries executed by the application
  • SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY captures authentication events
  • SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY captures data access patterns

The consumer has full access to these audit logs and can monitor the application's behavior using their existing Snowflake monitoring tools.

Summary of Security PropertiesDirect link to Summary of Security Properties

PropertyStatus
External network accessNone (no EAIs)
Credential storageNone
Consumer data egressNone
Container privilegeNon-root
TLS terminationManaged by Snowflake
Data encryption at restManaged by Snowflake
Cross-tenant accessNot possible
Write access to consumer tablesNot possible (SELECT only)
Audit trailApplication logs + Snowflake native auditing