Complete guide for setting up secure CloudLink connection between Snowflake and Elementum
Get your CloudLink connection up and running with our comprehensive setup guide. This document covers security architecture, IP whitelisting, automated scripts, and configuration steps.
Elementum provides secure, in-place data access to your Snowflake instance:
Authentication
Credentials are provided by Snowflake to permit Elementum access to defined tables. You retain full control over the data and can terminate access at any time.
In-Place Access
Data stays in your Snowflake instance. No data is copied or moved to external systems.
Configure your Snowflake network policies to allow connections from these IP addresses:
US Region
Europe Region
Copy
Ask AI
44.210.166.13644.209.114.11452.72.254.246
Copy
Ask AI
-- Create network policy for US regionUSE ROLE ACCOUNTADMIN;CREATE NETWORK POLICY IF NOT EXISTS ELEMENTUM_ACCESS_POLICY ALLOWED_IP_LIST = ( '44.210.166.136', '44.209.114.114', '52.72.254.246' ) COMMENT = 'Network policy for Elementum platform access';-- Apply to Elementum userALTER USER ELEMENTUM SET NETWORK_POLICY = ELEMENTUM_ACCESS_POLICY;-- Verify policy is appliedDESC USER ELEMENTUM;
Important: If you’re using multi-region access or want to allow connections from both US and Europe, use the combined policy above.
Creates a user and role for Elementum Platform access with proper security configuration.
2
Create Snowflake Warehouse
Provisions a warehouse for all Elementum Platform activity and actions. This warehouse provides processing power for workflows, queries, and data operations.
3
Create Elementum Database & Schema
Database: Dedicated space for Elementum state managementSchemas:
ELEMENTUM_PLATFORM - Private schema for platform operations (do not modify)
PUBLIC - Schema for data exchange tables
Requirements:
Each integrated table/view must have a primary key or unique key column
Domain whitelist: [your-org].elementum.io
Additional access policies can be applied in Elementum for team/individual restrictions
4
Grant Permissions
Grant the newly created role permissions to specific databases for relevant use cases and processes.
5
Turn on Change Tracking (Optional - only if using change-based Element automations)
Enable change tracking for each table to ensure changes made in Snowflake are reflected in Elementum in real-time.
6
Grant Cortex Access (Optional - only if using AI/ML features)
Grant the Elementum role access to Cortex to leverage ML models and LLMs for AI-powered features.
USE ROLE ACCOUNTADMIN;CREATE ROLE IF NOT EXISTS ELEMENTUM;GRANT ROLE ELEMENTUM TO ROLE SYSADMIN;
2
Create User for Elementum
Copy
Ask AI
USE ROLE ACCOUNTADMIN;CREATE USER IF NOT EXISTS ELEMENTUM TYPE = SERVICE RSA_PUBLIC_KEY = '<PASTE_PUBLIC_KEY_FROM_ELEMENTUM_UI>';-- Get your public key from: Elementum > Settings > Cloud Links > Add ConnectionGRANT ROLE ELEMENTUM TO USER ELEMENTUM;
Where to find your RSA public key: Navigate to Elementum Settings > Cloud Links > Add Connection > Copy Public Key
3
Create Warehouse for Elementum
Copy
Ask AI
USE ROLE SYSADMIN;CREATE WAREHOUSE IF NOT EXISTS ELEMENTUM WITH WAREHOUSE_SIZE = 'MEDIUM', MIN_CLUSTER_COUNT = 1, MAX_CLUSTER_COUNT = 10, AUTO_SUSPEND = 60;GRANT USAGE ON WAREHOUSE ELEMENTUM TO ROLE ELEMENTUM;
Configuration Details:
Size: Medium (adjust based on workload)
Min Clusters: 1
Max Clusters: 10 (auto-scaling enabled)
Auto-Suspend: 60 seconds (reduces costs)
4
Create Database for Elementum
Copy
Ask AI
USE ROLE SYSADMIN;CREATE DATABASE IF NOT EXISTS ELEMENTUM;GRANT OWNERSHIP ON DATABASE ELEMENTUM TO ROLE ELEMENTUM;
Tip: Elementum uses this database to store the platform’s state information, including configuration, metadata, and operational data.
5
Create Schema for Platform Operations
Copy
Ask AI
USE ROLE ELEMENTUM;USE DATABASE ELEMENTUM;CREATE SCHEMA IF NOT EXISTS ELEMENTUM_PLATFORM;
Do not modify or add tables to the ELEMENTUM_PLATFORM schema. This is reserved for internal platform operations.
6
Grant Usage to Other Databases/Tables
Copy
Ask AI
USE ROLE SYSADMIN;-- First, grant database usageGRANT USAGE ON DATABASE <INSERT_DATABASE_NAME_HERE> TO ROLE ELEMENTUM;-- Then grant schema usageGRANT USAGE ON SCHEMA <INSERT_DATABASE_NAME_HERE>.<INSERT_SCHEMA_NAME_HERE> TO ROLE ELEMENTUM;-- Finally, grant table permissions (fully qualified)GRANT INSERT, UPDATE, DELETE, SELECT ON TABLE <INSERT_DATABASE_NAME_HERE>.<INSERT_SCHEMA_NAME_HERE>.<INSERT_TABLE_NAME_HERE> TO ROLE ELEMENTUM;
Examples:
Full Access (Read/Write)
Read-Only Access
Schema-Level Access
Copy
Ask AI
-- For transactional tablesUSE ROLE SYSADMIN;-- Grant database and schema usageGRANT USAGE ON DATABASE SALES_DB TO ROLE ELEMENTUM;GRANT USAGE ON SCHEMA SALES_DB.PUBLIC TO ROLE ELEMENTUM;-- Grant full permissions on specific tablesGRANT INSERT, UPDATE, DELETE, SELECT ON TABLE SALES_DB.PUBLIC.CUSTOMERS TO ROLE ELEMENTUM;GRANT INSERT, UPDATE, DELETE, SELECT ON TABLE SALES_DB.PUBLIC.ORDERS TO ROLE ELEMENTUM;
7
Enable Change Tracking (Optional - only if using change-based Element automations)
Copy
Ask AI
-- Enable change tracking for each table (use fully qualified table names)ALTER TABLE <INSERT_DATABASE>.<INSERT_SCHEMA>.<INSERT_TABLE_NAME> SET CHANGE_TRACKING = TRUE;
Example:
Copy
Ask AI
-- Enable change tracking on specific tablesALTER TABLE SALES_DB.PUBLIC.CUSTOMERS SET CHANGE_TRACKING = TRUE;ALTER TABLE SALES_DB.PUBLIC.ORDERS SET CHANGE_TRACKING = TRUE;-- Verify change tracking is enabledSHOW TABLES LIKE 'CUSTOMERS' IN SCHEMA SALES_DB.PUBLIC;
Skip this step if: You don’t plan to use automations triggered by data changes on Elements in Snowflake. Change tracking allows you to start workflows when data is added or updated in Snowflake.
8
Create Schema for Customer Data
Copy
Ask AI
USE ROLE ELEMENTUM;USE DATABASE ELEMENTUM;CREATE SCHEMA IF NOT EXISTS PUBLIC;
Note: Put any tables specifically created for use in Elementum (such as “Data_Exchange” tables) in the PUBLIC schema or another customer schema. Do not put them in the ELEMENTUM_PLATFORM schema.
9
Grant Cortex LLM and ML Access (Optional - only if using AI/ML features)
Copy
Ask AI
USE ROLE ACCOUNTADMIN;-- Enable cross-region Cortex accessALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'ANY_REGION';-- Grant Cortex user roleGRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE ELEMENTUM;-- Grant Cortex Search Service creationGRANT CREATE CORTEX SEARCH SERVICE ON SCHEMA ELEMENTUM_PLATFORM TO ROLE ELEMENTUM;-- Grant ML model creation capabilitiesGRANT CREATE SNOWFLAKE.ML.ANOMALY_DETECTION ON SCHEMA ELEMENTUM.ELEMENTUM_PLATFORM TO ROLE ELEMENTUM;GRANT CREATE SNOWFLAKE.ML.CLASSIFICATION ON SCHEMA ELEMENTUM.ELEMENTUM_PLATFORM TO ROLE ELEMENTUM;GRANT CREATE SNOWFLAKE.ML.FORECAST ON SCHEMA ELEMENTUM.ELEMENTUM_PLATFORM TO ROLE ELEMENTUM;
Skip this step if: You don’t plan to use AI Search, AI Automations, or ML forecasting features in Elementum.
Cortex Capabilities Enabled:
Anomaly Detection: Identify unusual patterns in your data
Classification: Categorize and label data automatically
Forecasting: Predict future trends and values
LLM Access: Use large language models for natural language processing
If you’re using License Patrol, follow these additional setup steps:
1
Install Native App from Snowflake Marketplace
Navigate to the License Patrol listing in the Snowflake Marketplace
Select the app and click “Get” to install it
Using the ACCOUNTADMIN role, select “Manage Access”
Add the ELEMENTUM role to the app’s access list
2
Setup Permissions for License Patrol Application
Copy
Ask AI
USE ROLE ACCOUNTADMIN;-- Grant database and schema accessGRANT USAGE ON DATABASE <YOUR_DATABASE> TO APPLICATION LICENSE_PATROL;GRANT USAGE ON SCHEMA <YOUR_DATABASE>.<YOUR_SCHEMA> TO APPLICATION LICENSE_PATROL;-- Grant access to relevant tablesGRANT SELECT ON TABLE <YOUR_DATABASE>.<YOUR_SCHEMA>.APPLICATION_LOGINS TO APPLICATION LICENSE_PATROL;GRANT SELECT ON TABLE <YOUR_DATABASE>.<YOUR_SCHEMA>.EMPLOYEE_DATA TO APPLICATION LICENSE_PATROL;GRANT SELECT ON TABLE <YOUR_DATABASE>.<YOUR_SCHEMA>.SOFTWARE_CONTRACTS TO APPLICATION LICENSE_PATROL;-- Grant Elementum access to License Patrol dataGRANT SELECT ON TABLE LICENSEPATROL.APP_DATA.REVOCATION_EXCLUDE TO ROLE ELEMENTUM;
Example:
Copy
Ask AI
-- Example with actual valuesUSE ROLE ACCOUNTADMIN;GRANT USAGE ON DATABASE HR_DB TO APPLICATION LICENSE_PATROL;GRANT USAGE ON SCHEMA HR_DB.PUBLIC TO APPLICATION LICENSE_PATROL;GRANT SELECT ON TABLE HR_DB.PUBLIC.APPLICATION_LOGINS TO APPLICATION LICENSE_PATROL;GRANT SELECT ON TABLE HR_DB.PUBLIC.EMPLOYEE_DATA TO APPLICATION LICENSE_PATROL;GRANT SELECT ON TABLE HR_DB.PUBLIC.SOFTWARE_CONTRACTS TO APPLICATION LICENSE_PATROL;GRANT SELECT ON TABLE LICENSEPATROL.APP_DATA.REVOCATION_EXCLUDE TO ROLE ELEMENTUM;
Replace <YOUR_DATABASE> and <YOUR_SCHEMA> with your actual database and schema names containing the License Patrol data.
After completing the setup, verify everything is working correctly:
1
Test User Login
Copy
Ask AI
-- Switch to Elementum roleUSE ROLE ELEMENTUM;USE WAREHOUSE ELEMENTUM;USE DATABASE ELEMENTUM;-- Verify role and warehouseSELECT CURRENT_ROLE(), CURRENT_WAREHOUSE(), CURRENT_DATABASE();
Expected result: Should show ELEMENTUM role, warehouse, and database.
2
Test Data Access
Copy
Ask AI
USE ROLE ELEMENTUM;USE WAREHOUSE ELEMENTUM;-- Test access to your tablesSELECT COUNT(*) FROM SALES_DB.PUBLIC.CUSTOMERS;-- Verify change tracking is enabledSHOW TABLES LIKE 'CUSTOMERS' IN SCHEMA SALES_DB.PUBLIC;-- Look for "change_tracking" = "ON" in the results-- Test change tracking (if enabled)SELECT *FROM SALES_DB.PUBLIC.CUSTOMERSCHANGES(INFORMATION => DEFAULT)AT(TIMESTAMP => DATEADD(HOUR, -1, CURRENT_TIMESTAMP()))LIMIT 5;
Replace SALES_DB.PUBLIC.CUSTOMERS with your actual database, schema, and table names.
3
Test Cortex Access (Optional - only if you configured AI/ML features)
Copy
Ask AI
USE ROLE ELEMENTUM;USE DATABASE ELEMENTUM;USE SCHEMA ELEMENTUM_PLATFORM;-- Test Cortex LLM accessSELECT SNOWFLAKE.CORTEX.COMPLETE( 'mistral-large', 'What is machine learning?') AS response;-- Test Cortex Sentiment AnalysisSELECT SNOWFLAKE.CORTEX.SENTIMENT( 'Elementum is an amazing data platform!') AS sentiment_score;
If these queries execute successfully, Cortex access is properly configured.
4
Test in Elementum
Verify the connection shows as “Connected” in CloudLink settings
Browse to the integrated table in Elementum
Verify data loads correctly
Test creating/updating a record (if write access was granted)