We need the following details for Snowflake:
  • Account ID with the region that your snowflake cluster is running on e.g. xxxxxxxx.us-east-2.aws. Some regions don’t have this suffix.
  • Username
  • Password
  • Database
  • Warehouse
  • Role (if you want to override the default user’s role)

❄️ Snowflake Permissions for Seam

Permission requirements for Seam vary depending on whether you use Snowflake as a data source or a data destination. At a minimum, we recommend creating a dedicated User and Role for Seam. Optionally, you may set up a dedicated database and warehouse for Seam, particularly if you plan to sync data into Snowflake. Follow the sections below in order for a new warehouse setup, or select only the sections relevant to your existing configuration. You may adjust resource names as needed, but ensure the updates are reflected in subsequent commands.

I. Setting Up a Role

It’s a good idea to create a dedicated role for Seam, so its user has a tailored set of permissions. You can create this role using the following SQL:
USE ROLE SECURITYADMIN;

CREATE ROLE IF NOT EXISTS SEAM_ROLE;
GRANT ROLE SEAM_ROLE TO ROLE SYSADMIN;
GRANT ROLE SEAM_ROLE TO USER seam_user;
  • SEAM_ROLE will be used to grant permissions for Seam.
  • The role is assigned to SYSADMIN so Snowflake admins can manage its objects. Alternatively, you can grant it to PUBLIC if you want all users to access Seam-managed tables.
If you’re creating a separate database for Seam, you can skip setting up additional permissions. However, if you’re using an existing database, grant access to the relevant database, schema, and tables. For example:
-- Grant general access to the database
GRANT USAGE, CREATE SCHEMA ON DATABASE $existingDatabaseName TO SEAM_ROLE;

-- Grant access to a specific schema
GRANT USAGE ON SCHEMA $existingSchemaName TO SEAM_ROLE;

-- Grant table-level permissions
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA $existingSchemaName TO SEAM_ROLE;
  • SELECT is required for reading tables you want to sync from.
  • INSERT/UPDATE is required for writing to tables you sync to.
If you’re using an existing role with suitable permissions, you can grant it to SEAM_ROLE instead of granting individual permissions.

II. Setting Up a Warehouse

For optimal performance, we recommend creating a dedicated warehouse for Seam, especially if you plan to load data into your Snowflake instance or query large datasets.
CREATE WAREHOUSE IF NOT EXISTS SEAM_WH
  WAREHOUSE_SIZE = LARGE
  WAREHOUSE_TYPE = STANDARD
  AUTO_SUSPEND = 300
  INITIALLY_SUSPENDED = TRUE;

GRANT USAGE ON WAREHOUSE SEAM_WH TO ROLE SEAM_ROLE;
This ensures Seam’s operations run independently, avoiding resource contention with other workloads.

III. Setting Up a User

The following SQL creates a dedicated user for Seam to access your Snowflake environment. Replace your-own-super-secure-password with a strong, secure password:
CREATE USER IF NOT EXISTS SEAM
PASSWORD = 'your-own-super-secure-password'
DEFAULT_ROLE = SEAM_ROLE
DEFAULT_WAREHOUSE = SEAM_WH;

GRANT ROLE SEAM_ROLE TO USER SEAM;

IV. Creating a Database (Optional)

If you prefer to keep the data Seam writes in a separate database, you can create one specifically for Seam:
CREATE DATABASE IF NOT EXISTS SEAM_DB;

GRANT CREATE SCHEMA, MONITOR, USAGE
  ON DATABASE SEAM_DB
  TO ROLE SEAM_ROLE;
This setup restricts Seam’s access to data only within this database unless you explicitly grant access to other databases.

V. Troubleshooting

Tables Do Not Appear in Seam

If tables or schemas are not visible in Seam, ensure the following:
  1. The role assigned to Seam’s user has the following permissions:
    • USAGE on relevant schemas.
    • SELECT on relevant tables.
  2. Verify there are no schema restrictions in the additional configuration settings.
By following these steps, you can ensure Seam has the necessary access to integrate seamlessly with your Snowflake instance.

VI. Firewall and security

If your database is behind a firewall, please allow connections from our IP address:34.171.4.17, 54.190.82.25, 44.232.40.21, 35.155.106.54, 54.200.67.134, 44.224.213.129, 54.149.95.139