Snowflake Integration
Automating data classification and privacy requests fulfillment by integrating MineOS with Snowflake
Before you start
- Make sure your MineOS plan supports integrations.
- Make sure you have sufficient permissions on Snowflake to a new role.
Setup in your Snowflake account
Its best practice is to create a dedicated user and role for the MineOS integration. To do so, follow these steps:
-
From your Snowflake account admin, go to Worksheets
-
Open a new worksheet and run each of the following commands (Separately with the saymine user and password as you chose).
use role accountadmin;
CREATE ROLE MINEOS;
CREATE USER <mineosUser>
PASSWORD = '<mineosPassword>'
LOGIN_NAME = <mineosUser>
GRANT ROLE MINEOS TO USER <mineosUser>;
grant usage on database <my_db> to role MINEOS;
grant usage on schema <my_db>.<my_schema> to role MINEOS;
grant monitor on warehouse <warehouse_name> to role MINEOS;
grant usage on warehouse <warehouse_name> to role MINEOS;
grant select on all tables in schema <my_db>.<my_schema> to role MINEOS;
grant delete on all tables in schema <my_db>.<my_schema> to role MINEOS;
Or do the following steps instead:
-
- Create a new role named “MINEOS” (Note: You can use any name for this role).
- Create a new user for the integration, and grant the role MINEOS
- Grant ‘usage’ for the required database to the role MINEOS
- Grant ‘usage’ for the required schema to the role MINEOS
- Grant 'monitor' for the required warehouse to role MINEOS;
- Grant 'usage' for the required warehouse to role MINEOS;
-
- Grant ‘select’ and ‘delete’ on the required tables to the role MINEOS
Setting up in MineOS
Log in to your MineOS account, and follow these steps to setup the integration:
- On the left sidebar, click Inventory.
- Search for Snowflake. If you don't already have it, Click on Add data source and search for Snowflake from the catalog. Click Add.
- Open the Snowflake page from your inventory.
- Click the DSR & Integrations tab, scroll down and select Integration to reveal the integration setup section:
User and Account Details
- Under User Details: Insert your new Snowflake username, password and role in the following format:
username;password;role
- Under Account Details: Insert your Account Identifier, Region, and Warehouse in the following format:
accountIdentifier;region;warehouse
For more information on how to find your account identifier, please read here.
- The last section contains 3 queries you can provide: search, copy & delete. Refer to the section below explaining about the function of each of the queries. The queries are mandatory!
- To finalize the configuration click Test & Save. MineOS will check your Snowflake configuration and validate its working.
- If you want to add more connections, simply click the + Add Instance button at the top of the page.

Setting up for DSR workflow
To manage your DSR handling actions, you need to define the queries that will run in Snowflake for operation types you want to support. When creating privacy rights in DSR Setup, each right has an operation type associated with it (Delete/Copy) - you will need to provide a query for the operation types you want to support, one or both.
For example:
Rights such as deletion or opt out are considered Delete operation type.
Rights such as Copy are considered Copy operation type.
Note: The queries you use won't be validated. You should run them in your Snowflake account to make sure they are running as expected
Query used for search records & delete validation
The query will be used for showing how many records were found as well as showing a sample (preview) of the data. Also, it will be used as a validation for the delete action.
Example Query:
SELECT name, age, country FROM db.schema.table WHERE NAME = {{endUserEmail}}
* Preview will return the count of the number of records returned in the query response
* Preview will show the first 3 values from the query response, it supports strings and long types
* The variable is mandatory
Copy Query
The Copy query will be used for the Copy action. Copy action is running on the ticket processing page in ticket of type Copy when clicking on Generate Copy
Example Query:
SELECT * FROM db.schema.table WHERE NAME = {{endUserEmail}}
* Copy will show all records returned in the query response
* The variable is mandatory
Delete Query
The Delete query will be used for rights such as Delete my data or Opt Out. Delete action is running on the ticket processing page in ticket of type Deletion when clicking on Run X Sources
Example Query:
DELETE FROM db.schema.table WHERE NAME = {{endUserEmail}}
* You can also use UPDATE statements to perform data modifications.
* The variable is mandatory
Setting up Data Classification
If you want to setup Snowflake data classification, simply enable Scan this source using Data Classifier. You also need to make sure you have given the snowflake user the required permissions to the relevant tables and schemas .
Upon content discovery we will scan your tables, and analyze each row's data in our PII Processing Engine. These scan results will be added to the data types of your integration general info.
Troubleshooting
Error: "Must provide a Preview Query"
You must provide a preview query in order for the Snowflake integration to work. You can use `select 1` as a placeholder query.
Error: "Response status code does not indicate success: 403 (Forbidden)."
This usually means there is an authentication issue with the connection details. The problem can happen for a number of reasons:
- The username/password is wrong.
- Or, the required SAYMINE role was not created properly (described above).
- Or, the account ID or warehouse are wrong.
Error: "The SSL connection could not be established, see inner exception."
When this happens you should use a dashed (-) version of the account ID & region instead of an underscore (_) version. For example instead of `my_account_id;my_region;my_warehouse` use: `my-account-id;my-region;my_warehouse` (replacing _ with - in the accountId and region)
What's next?
Read more about the deletion process using integrations here.
Read more about the get a copy process using integrations here.
Talk to us if you need any help with Integrations via our chat or at portal@saymine.com, and we'll be happy to assist!🙂