Skip to main content
This guide walks you through setting up Snowflake as your system of record in Cargo. This setup ensures Cargo has the necessary permissions in Snowflake to read and write data efficiently.
Cargo ships with a default managed BigQuery warehouse, so you can start without connecting anything. Follow this guide only if you want to bring your own Snowflake instance. See System of record for what a SOR is and how to operate it from the CLI once connected.

Permissions

What Cargo can do
  • Read data from schemas and tables, even if they are spread across multiple databases
  • Write data into new schemas and tables
What Cargo will never do
  • Overwrite existing schemas and tables (Cargo always creates its own schemas and tables when needed)

Before you begin

To start, you need an existing Snowflake account with appropriate admin access to create databases, warehouses, roles, and users.

Step 1: Create a dedicated database

Create a dedicated database for Cargo where all data managed by Cargo will be stored. Create a database called “cargo_db”

Step 2: Create a user for Cargo

Grant the necessary permissions for Cargo to run commands as an authenticated user on the database you just created. Create a role for Cargo
Grant the cargo database you created above to cargo role
Create a warehouse for Cargo
Grant warehouse to cargo role
Create a user for Cargo
Replace <YOUR_SECURE_PASSWORD> with a strong, unique password. Store it securely — you’ll need it in Step 6.
Grant role to user
Grant access to schema tables If Cargo needs to access data outside the cargo_db database, grant the appropriate permissions:
To grant access to other databases, run similar GRANT statements for each database/schema Cargo needs to read from.

Step 3: Verify granted privileges

Make sure the Cargo role has access to the following permissions on cargo_db: OWNERSHIP, MODIFY, MONITOR, USAGE, CREATE SCHEMA. Show granted privileges on cargo_db

Step 4: Set up RSA key authentication

You must provide an RSA private key for authentication. Generate a private key
Generate a public key
Keep your private key (rsa_key.p8) secure and never share it. You’ll need to provide it when configuring Cargo.
Assign the public key to your Snowflake user Copy the contents of rsa_key.pub (excluding the header and footer lines) and run:

Step 5: Configure allowed IP addresses

If you’re using Snowflake’s network policy to restrict access, add these Cargo IP addresses to your allowlist:

Step 6: Set up system of record

Now that we have all the required elements, navigate to workspace settings and select System of record. Fill in the settings form with the data we gathered in the previous steps:
Database scope allows Cargo to create multiple schemas within cargo_db. Schema scope restricts Cargo to a single schema.
Click Setup to complete the configuration.

Next steps

System of record

Query, migrate, and monitor your SOR from the CLI.

Query your data

Build data models and run SQL against your warehouse.

Snowflake actions

Insert, update, upsert, and delete records in workflows.

Models

Create data models on top of your Snowflake tables.