Connect your Snowflake account to Scrut to sync user access data and run automated compliance checks against your applicable frameworks.
What This Integration Does in Scrut
User Access Data: Fetches user details, roles, and permissions from Snowflake for Access Reviews.
Automated Tests: Runs automated checks that continuously evaluate Snowflake for security misconfigurations and compliance checks against your applicable compliance frameworks.
Prerequisites
Before starting the integration, make sure the following are in place:
ACCOUNTADMIN or relevant role to fetch the required credentials from Snowflake
Permissions and Access Requirements
For Snowflake
Read access to user accounts, roles, and permissions in Snowflake
For Scrut
Admin access to Scrut, or Contributor access with the Integrations module enabled
Limitations
Snowflake has announced the deprecation of single-factor password authentication. Username and Password (Method 2) may already be restricted or unavailable depending on your organization's security policy.
Snowflake discourages embedding passwords in JDBC connection strings for production use.
Data Collected
User Name: Snowflake user display name
User Email: Snowflake user email address
User Role: Snowflake role assigned to user
Sync Frequency
Data is synced automatically once every 24 hours. You can also manually trigger a sync from the integration settings page using the Sync Now button.
Integration Setup
Scrut supports four authentication methods. Choose the one that fits your environment and complete only the steps for that method.
Heads Up!
Fill in only the fields that correspond to the method you choose. Leave all other fields blank.
Before You Begin: Fetch Your Account Identifier
Most authentication methods require your Account Identifier. To find it:
Log in to Snowflake and look at your browser URL. Everything before
.snowflakecomputing.comis your Account Identifier.Example:
https://<account-identifier>.snowflakecomputing.comAlternatively, run the following SQL in any Snowflake worksheet:
SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();
Note: The preferred format is orgname-accountname (for example, mycompany-prod123). The legacy account_locator.region.cloud format is still accepted, but is not recommended by Snowflake.
Quick Reference: Fields Required Per Method
Field | JDBC String | Username + Password | Key Pair | OAuth |
|---|---|---|---|---|
JDBC Connection String | Required |
| ||
Username | Required | Required | ||
Password | Required | |||
Private Key | Required | |||
Account Identifier | Required | Required | ||
Database | Optional | Optional | ||
Warehouse | Optional | Optional | ||
Role | Optional | Optional | ||
Schema | Optional | Optional | ||
Client ID | Required | |||
Client Secret | Required | |||
Token URL | Required | |||
Scope | Optional |
Step 1: Prepare Your Snowflake Credentials
Method 1: JDBC Connection String
Best for teams that already have a pre-built Snowflake JDBC connection string, or want to embed all connection parameters in a single field.
Fields required: JDBC Connection String only.
Build your connection string using the following format:
jdbc:snowflake://<account-identifier>.snowflakecomputing.com/?user=<username>&password=<password>&db=<database>&warehouse=<warehouse>&role=<role>&schema=<schema>Replace each placeholder with your actual values. The
db,warehouse,role, andschemaparameters are optional.
Important:
When using this method, leave all other fields in Scrut empty. The connection string contains everything Snowflake needs. Snowflake advises against using this method in production environments because embedded passwords can be inadvertently exposed. For production, use Key Pair (Method 3) or OAuth (Method 4).
Method 2: Username and Password
Best for quick setup in development or testing environments.
Fields required: Username, Password, Account Identifier. Database, Warehouse, Role, and Schema are optional.
Locate your Snowflake username by clicking your profile name in the bottom left of Snowflake's UI. Admins can also find it under Admin → Users & Roles → Users.
Use the password associated with your Snowflake user account.
Find your Account Identifier using the steps in the Before You Begin section above.
To find optional context values, run the following in a Snowflake worksheet:
Database:
SHOW DATABASES;Warehouse:
SHOW WAREHOUSES;Role:
SHOW ROLES;Schema:
SHOW SCHEMAS IN DATABASE <database_name>;
Heads Up!
Snowflake has announced the deprecation of single-factor password authentication. If you encounter authentication failures with this method, switch to Key Pair (Method 3) or OAuth (Method 4).
Method 3: Key Pair Authentication
Best for service accounts, automated integrations, and environments where password-based authentication has been disabled. This is Snowflake's recommended method for programmatic access.
Fields required: Username, Private Key, Account Identifier. Database, Warehouse, Role, and Schema are optional.
A Snowflake administrator must complete the following one-time setup before entering credentials in Scrut.
Generate the key pair:
Open a terminal and run the following command to generate an encrypted private key:
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 aes256 -inform PEM -out rsa_key.p8When prompted, enter an Encryption Password and re-enter it for verification. Save this passphrase securely. You will need to enter it in Scrut as the Passphrase field.
This generates a file called
rsa_key.p8in the current directory. Open it and copy the full contents, including the-----BEGIN ENCRYPTED PRIVATE KEY-----and-----END ENCRYPTED PRIVATE KEY-----lines. This is your Private Key.Run the following command to derive the public key:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pubOpen
rsa_key.puband copy its contents. You will need this in the next step.
Assign the public key to your Snowflake user:
In Snowflake, click your profile in the bottom left and confirm your current role is ACCOUNTADMIN. Switch to it if not.
Go to Projects → Worksheets and click the + icon to create a new worksheet.
Run the following command, replacing the placeholders with your username and the public key contents:
ALTER USER <Username> SET RSA_PUBLIC_KEY="<Public_key>"When pasting the public key value, exclude the
-----BEGIN PUBLIC KEY-----and-----END PUBLIC KEY-----header and footer lines. Paste only the key body.Confirm that the statement executed successfully.
Important:
The public key must be assigned to the Snowflake user before you attempt to connect in Scrut. The connection will fail if this step has not been completed.
Method 4: OAuth (Client Credentials)
Best for enterprise setups using an Identity Provider such as Okta, Microsoft Entra ID, or Snowflake's own OAuth server for machine-to-machine authentication.
Fields required: Client ID, Client Secret, Token URL. Scope is optional but recommended.
Prerequisite: A Snowflake administrator must create a Security Integration before this method can be used.
Log in to Snowflake with the ACCOUNTADMIN role and run the following SQL:
CREATE SECURITY INTEGRATION <integration_name>
TYPE = OAUTH
ENABLED = TRUE
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://api.gocobalt.io/api/v1/snowflake/callback'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = 86400;
After creation, retrieve your Client ID and Client Secret by running:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<integration_name>');The result returns
OAUTH_CLIENT_IDandOAUTH_CLIENT_SECRET. Store both securely.Your Token URL follows this format:
https://<account-identifier>.snowflakecomputing.com/oauth/tokenFor the Scope field, use one of the following values:
session:role:ROLENAMEto activate a specific role (for example,session:role:ANALYST)session:role-anyto use the user's default role
Note: The roles ACCOUNTADMIN, SECURITYADMIN, ORGADMIN, and GLOBALORGADMIN are blocked by default for OAuth. If one of these roles is required, a Snowflake administrator must run: ALTER ACCOUNT SET OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST = FALSE;
Step 2: Connect Snowflake in Scrut
Sign in to Scrut and click Integrations in the left navigation panel.
Go to the Integrations Library tab and select Database from the Categories section.
Scroll to the Snowflake tile and click Integrate.

On the Snowflake integration page, fill in the fields that correspond to your chosen authentication method. Leave all other fields blank.
Click Submit.

Once the connection is successful, you will see the "Integration Successful" message and the Connected status indicator on the integration page.
Important:
If you are using Key Pair authentication and enter a private key that exceeds the character limit, you will see a character limit warning. You can ignore this warning and click Submit to proceed.
What Happens Next?
Initial data sync
After the integration is connected, Scrut begins syncing user data from Snowflake automatically. The initial sync may take a few hours to complete. To monitor progress, go to the Audit Log tab on the Snowflake integration page in Scrut.
Review synced data
Once the sync is complete, review the data at the following locations:
Navigate to People → Access Reviews → Applications to view Snowflake user details, including names, emails, and roles.
Navigate to Automated Tests to view compliance tests that Scrut runs against your Snowflake data.
Common Errors and Troubleshooting
Authentication failure on submit
Possible solutions:
Verify that the credentials you entered match your chosen authentication method exactly.
For Key Pair: confirm the public key has been assigned to the Snowflake user using the ALTER USER command before submitting in Scrut.
For Username and Password: check whether your Snowflake account has disabled single-factor authentication. If so, switch to Key Pair or OAuth.
For OAuth: confirm the Security Integration was created successfully and that the Client ID, Client Secret, and Token URL are accurate.
Data not appearing in Access Reviews
Possible solutions:
Check the Audit Log on the Snowflake integration page to confirm the sync completed without errors.
Trigger a manual sync using the Sync Now button and wait for it to complete.
Confirm the Snowflake user account used for the integration has read access to user accounts, roles, and permissions.
JDBC connection fails
Possible solutions:
Confirm the Account Identifier in your connection string is correct and uses the preferred
orgname-accountnameformat.Check that all required parameters in the string (user, password) are present and correctly formatted.
Avoid using this method in production. Switch to Key Pair or OAuth for more secure authentication.
OAuth token request fails
Possible solutions:
Confirm the Token URL matches the format
https://<account-identifier>.snowflakecomputing.com/oauth/token.Verify that the Security Integration in Snowflake is enabled and that the redirect URI matches exactly.
If the required role is a privileged one (ACCOUNTADMIN, SECURITYADMIN, etc.), ensure a Snowflake admin has unblocked it.
FAQs
1: Which authentication method should I use?
Snowflake recommends Key Pair Authentication or OAuth for new integrations. Username and Password is being deprecated and may not be available depending on your organization's security configuration. If you are unsure, check with your Snowflake administrator before proceeding.
2: Can I change the authentication method after the integration is set up?
Yes. Go to the Snowflake integration page in Scrut, update the relevant credential fields to match your new method, clear any fields that do not apply, and click Submit to reconnect.
3: What happens if I rotate or change my Snowflake credentials?
The integration will stop syncing until you update the credentials in Scrut. Go to the Snowflake integration page, enter the new credentials, and click Submit to restore the connection.
4: How often does Scrut sync data from Snowflake?
Scrut syncs data from Snowflake once every 24 hours. You can also trigger an immediate sync by clicking Sync Now on the integration page.
5: What happens if a user is deleted in Snowflake?
The deleted user will not show up in Scrut in the next sync.
Reach out to support@scrut.io or contact your CSM for further assistance.