The Snowflake integration replaces SFTP or CSV-based data delivery with a direct connection to your Snowflake warehouse. Cora connects using RSA key-pair authentication, queries your Snowflake views on a schedule, ingests the results, and makes the data available to agents, dashboards, and workflows.Documentation Index
Fetch the complete documentation index at: https://docs.cora.ai/llms.txt
Use this file to discover all available pages before exploring further.
Overview
| Detail | Value |
|---|---|
| Integration type | RSA Key-Pair (private key), Organization-Level |
| Required role | Snowflake Account Administrator or equivalent |
| Why key-pair? | RSA key-pair is the industry-standard authentication method for Snowflake service accounts — recommended by Snowflake and used by dbt, Fivetran, Airbyte, and other major data tools. Key pairs never expire, require no token refresh, and transmit no secrets over the wire. |
The steps below represent the recommended setup for security and isolation. Your team is free to adapt the naming, schema structure, and warehouse configuration to fit your existing conventions. The only hard requirements are that Cora’s service user has
SELECT access to the relevant views and authenticates using a key pair.Setup
Create a dedicated schema for Cora views
Create a dedicated database and schema that contains only the views Cora should access. This acts as a clear security boundary — Cora has no visibility into any other schema. If your team prefers to grant access to views in an existing schema, that works too.Then create views in this schema that mirror your data exports:Keep the same column names and data types so the schema Cora sees is consistent with your source data.
Create a read-only service account
Create a dedicated role and service user scoped exclusively to the Cora views schema.
Generate an RSA key pair
Generate an unencrypted RSA private key and assign the corresponding public key to the service user.Assign the public key to the service user in Snowflake:See Snowflake’s Key-Pair Authentication guide for full details.
Connect Snowflake in Cora.ai
- Log into Cora.ai as an organization administrator.
- Navigate to Settings → Organization Settings → Integrations.
- Locate the Snowflake integration card and click Connect.
- Enter the following credentials:
| Field | Description |
|---|---|
| Account identifier | Your Snowflake account identifier (e.g., xy12345.us-east-1). Run the query below to find yours reliably. |
| Username | The service user from step 2 (e.g., CORA_SVC) |
| Private key (PEM) | The full RSA private key, including the -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY----- lines |
account_locator value together with your region to form the full identifier. Your Snowflake web UI URL may also contain it, but the SQL query is the most reliable way to confirm.- Click Connect to save.
Security model
| Principle | How it’s enforced |
|---|---|
| Least privilege | Role has only USAGE + SELECT on a dedicated schema — no CREATE, INSERT, DELETE, or cross-schema access |
| Blast radius isolation | Dedicated database and schema means accidental view creation elsewhere is invisible to Cora |
| Cost isolation | Dedicated warehouse prevents Cora queries from competing with production workloads |
| No credential expiry | RSA key pairs don’t expire; rotate on your schedule, not under deadline pressure |
| Credential security | Private key is stored in an encrypted vault; never logged or persisted in application config |
Notes
Read-only access — Cora only reads from your Snowflake views. Nothing is written back to your warehouse.
No credential expiry — RSA key pairs do not expire. Rotate at your discretion by generating a new pair and updating both Snowflake and the Cora.ai integration.
Compute costs — Queries consume credits from the designated warehouse. An X-Small warehouse with auto-suspend is sufficient for typical workloads.
Schema changes — New columns on existing views are detected automatically. New views added to the Cora schema are picked up via the
FUTURE VIEWS grant.No passphrase — The private key must be unencrypted (PKCS#8, no passphrase). This simplifies automation and avoids passphrase management overhead.
