Overview
About this integration
Connect a Snowflake cloud data warehouse to query data, list metadata, and feed analytics into Flows360 workflows. This connector allows you to:
- Read data directly: Run
SELECTqueries to pull data from your warehouse into your workflows, enabling enrichment, analytics, and data-driven process automation. - Browse warehouse metadata: List databases, schemas, tables, views, and columns to dynamically construct queries and understand your data landscape without leaving Flows360.
- Centralize operations: Incorporate your data warehouse into a unified operational view, triggering workflows based on data insights or syncing warehouse data with other business-critical applications.
The connector uses Snowflake's secure key-pair authentication, ensuring that access is managed through a dedicated, permissions-controlled service user role.
Capability summary
Authentication
Auth method: Snowflake Key Pair Authentication
Required scopes
]
Supported objects
| Object | Read | Write | Notes |
|---|---|---|---|
| Databases | Yes | No | A database is a logical grouping of schemas. |
| Schemas | Yes | No | A schema is a logical grouping of database objects such as tables and views. |
| Tables | Yes | No | Tables contain structured data in rows and columns. |
| Views | Yes | No | Views provide the result of a pre-written SQL query. |
| Columns | Yes | No | Columns represent the attributes or fields within a table or view. |
Supported actions
| Action | Description |
|---|---|
| Test connection | Verifies that the provided credentials and permissions are sufficient to connect to Snowflake. |
| List databases | Lists all databases accessible to the configured service user role. |
| List schemas | Lists all schemas within a specified database that are accessible to the configured role. |
| List tables | Lists all tables within a specified schema that are accessible to the configured role. |
| List views | Lists all views within a specified schema that are accessible to the configured role. |
| List columns | Lists all columns and their data types for a specified table or view. |
| Preview rows | Fetches a limited sample of rows (typically 10) from a specified table or view. |
| Run SELECT query | Executes a provided SQL SELECT statement and returns the results. Can also execute DML/DDL if the role has sufficient privileges. |
| Run saved query | Executes a query that has been pre-configured and saved within Flows360. |
Setup steps
Prerequisites
- Administrative access to your Snowflake account.
- A command-line terminal with
opensslinstalled.
1. Create a Service Role and User in Snowflake
Execute the following SQL commands in a Snowflake worksheet. Replace "your_warehouse_name" with the name of the warehouse Flows360 will use.
-- Use a role with sufficient privileges to create users and roles
USE ROLE ACCOUNTADMIN;
-- 1. Create a dedicated role for Flows360
CREATE ROLE FLOWS360_ROLE;
-- 2. Grant privileges to the role
-- Grant usage on the target warehouse
GRANT USAGE ON WAREHOUSE "your_warehouse_name" TO ROLE FLOWS360_ROLE;
-- NOTE: You must grant access to specific databases and schemas.
-- For each database and schema the integration needs to access, run:
-- GRANT USAGE ON DATABASE "some_database" TO ROLE FLOWS360_ROLE;
-- GRANT USAGE ON SCHEMA "some_database"."some_schema" TO ROLE FLOWS360_ROLE;
-- GRANT SELECT ON ALL TABLES IN SCHEMA "some_database"."some_schema" TO ROLE FLOWS360_ROLE;
-- GRANT SELECT ON ALL VIEWS IN SCHEMA "some_database"."some_schema" TO ROLE FLOWS360_ROLE;
-- 3. Create a dedicated user for Flows360
CREATE USER FLOWS360_USER
DEFAULT_ROLE = FLOWS360_ROLE
DEFAULT_WAREHOUSE = "your_warehouse_name"
COMMENT = 'Service user for Flows360 integration.';
-- 4. Assign the role to the user
GRANT ROLE FLOWS360_ROLE TO USER FLOWS360_USER;
2. Generate an RSA Key Pair
This authentication method uses a private key to sign a JWT and a corresponding public key stored in Snowflake to verify the signature.
- Open your command-line terminal.
-
Generate a 2048-bit unencrypted private key.
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt -
Extract the public key from the private key.
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pubKeep both
rsa_key.p8(private key) andrsa_key.pub(public key) files.
3. Assign the Public Key to the Snowflake User
- Open
rsa_key.pubin a text editor and copy the entire content, excluding the-----BEGIN PUBLIC KEY-----and-----END PUBLIC KEY-----headers/footers. -
Execute the following SQL in Snowflake, pasting the copied public key content as the value for
RSA_PUBLIC_KEY.-- Use a role with sufficient privileges USE ROLE ACCOUNTADMIN; -- Assign the public key to the user ALTER USER FLOWS360_USER SET RSA_PUBLIC_KEY='your_public_key_string_here';
4. Configure the Flows360 Connection
- Navigate to the connections page in Flows360 and add a new Snowflake connection.
- Fill in the required fields:
- Account Identifier: Your full Snowflake account identifier (e.g.,
xy12345.us-east-1). - Username:
FLOWS360_USER - Role:
FLOWS360_ROLE - Warehouse: The name of the warehouse you granted access to (e.g.,
"your_warehouse_name"). - Private Key: The full content of the
rsa_key.p8file, including the-----BEGIN PRIVATE KEY-----and-----END PRIVATE KEY-----lines.
- Account Identifier: Your full Snowflake account identifier (e.g.,
- Save and test the connection.
Limitations
- Read-Only Metadata: The connector can read warehouse metadata (schemas, tables, etc.) but cannot create or modify them.
- Query-Based Writes: Writing data is not a direct action. To insert or update data, you must execute a SQL statement with the appropriate privileges using the "Run SELECT query" action (which can execute DML).
- Permissions: All operations are constrained by the permissions granted to the service role in Snowflake. Insufficient privileges will result in connection or query failures.
- Query Timeouts: The "Run SELECT query" action has a default timeout of 90 seconds. Long-running queries may be terminated.
- Private Key Format: The RSA private key must be in PKCS#8 PEM format and must not be password-protected.