Integrating SailPoint with Snowflake
The SailPoint Snowflake integration is capable of end-to-end user administration with the provisioning and password management capabilities of Snowflake, helping provide rich governance and control experience to your enterprise deployment.
This document is designed to give specific information about the requirements and field definitions needed to get a working instance of a Snowflake source.
Note
To view the latest features, enhancements, and fixes for all SaaS connectors, refer to the SaaS Release Notes page.
Supported Features
The SailPoint Snowflake connector supports the following features.
Note
Before you can use any item marked with an asterisk (*), SailPoint must activate the feature for your site. For more information on opening a support ticket, refer to Working With Services.
Account Management
- Manages Snowflake Users
- Aggregate and Refresh Accounts
- Create and Update Accounts
- Enable, Disable, Unlock, and Change Password
- Add or Remove Entitlements as Roles and Database Roles
Entitlement Management
- Manage Snowflake Entitlements as Roles and Database Roles
- Refresh and Aggregate Entitlements
For more information on features, refer to Source Features.
Prerequisites
-
Configure at least one virtual appliance cluster and successfully test the connection. For more information, refer to the Virtual Appliance Reference Guide.
-
To connect to Snowflake, you must have a public and private key or you must generate them. The keys are generated in the PEM format. For more information, refer to Generating Keys.
Note
- SailPoint only supports the encrypted private key for connecting to Snowflake to ensure maximum security.
- By default, Windows systems do not support OpenSSL. You may need to download and install the OpenSSL libraries to generate your keys. Apple systems support OpenSSL by default. Go to OpenSSL to download OpenSSL for Windows.
Generating Keys
To connect to Snowflake, you must have a public and private key or you must generate them. The keys are generated in the PEM format.
Note
- SailPoint only supports the encrypted private key for connecting to Snowflake to ensure maximum security.
- By default, Windows systems do not support OpenSSL. You may need to download and install the OpenSSL libraries to generate your keys. Apple systems support OpenSSL by default. Go to OpenSSL to download OpenSSL for Windows.
- The generated private key is required as an input on the Connection Settings page.
To generate the private and public keys, complete the following:
-
On your system, open a command prompt, terminal, or emulator and use the following command to generate an encrypted version of the private key:
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8The command to generate an encrypted key prompts you to enter a passphrase to regulate access to the key. SailPoint recommends storing the passphrase in a secure location.
-
Use the following command to generate an encrypted version of the public key:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub -
Copy the public and private key files to a local directory for storage. Record the path to the files.
Note
The private key is stored using the PKCS#8 (Public Key Cryptography Standards) format and is encrypted using the passphrase you specified in the first step. However, the file should still be protected from unauthorized access using the file permission mechanism provided by your operating system. It is your responsibility to secure the file when it is not being used.
Required Permissions
Configure the permissions required to grant necessary access rights to resources or data within the system to perform connector operations.
Administrative Account Permissions
Complete the following to set up a Snowflake administrative account with the minimum required permissions for the listed operation:
-
Log in to Snowflake with the
ACCOUNTADMINrole and execute the following command:Note
SailPoint recommends setting the user to the
Servicetype. -
Generate the public key. The public key is in the PEM format. For more information on generating the public key, refer to Generating Keys. The following is an example of the public key in PEM format:
-
In the following command, replace
PublicKeywith the key you generated (do not include theBEGIN PUBLIC KEYandEND PUBLIC KEYlines):For example:
ALTER USER MYUSER SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1hhZwJvU4+MiD92bLLmf zvdieU6TvuaSrjKJGtEndSWRR3p2pMFIzDWbbX1PHPqtt43C+meMtKtwMVl8JWEk IawC7ZnfjHROufWVhpb+8DwhHuH/r7GWXCNCyjJTH/Z+htdIYFM/pbSKW1Qdt5X0 Bf5TGINAe9XxL2Zp5kqo8pYMiPGudgUdYQlMGZ6y1AH0Rcb76KUkoHNrJQA/xRI8 LSDMNJQSJo6rPGARD1Rn9ns0Z3M1qnoH6LOOX0GX3T4GU+ERwPaMVcMjkweSA3a1 sqLhq+9hpC8piW+LaEv2clj1Sp73m70qh/0l8Cb2O4sq7Iov8G8Iahe0LGLVQX3+ uQIDAQAB'; -
Use the following command to grant the
ACCOUNTADMINrole to a user: -
Use the following command to verify the user's public key fingerprint:
SYSADMIN Role
Snowflake recommends creating a hierarchy of custom roles, with the top-most custom role assigned to the system role SYSADMIN. For more information, refer to the Snowflake documentation.
Note
The linked document is not maintained by SailPoint and is subject to change without notice.
-
Use the following command to create a role:
-
Use the following command to assign the SYSADMIN role to the new role:
Role Permissions
Use the following command to grant a role to a user:
Use the following command to set a user's default role:
Test Connection Permissions
By default, when you create a user, it is assigned a bare minimum role (PUBLIC). Only a bare minimum role is required for to test your connection.
Account Aggregation Permissions
This command can only be executed by users with a role that has the MANAGE GRANTS global privilege.
Create a new warehouse if one doesn't already exist.
Use the following command to set default_warehouse to a user.
Use the following command to provide warehouse usage on the role.
Group Aggregation Permissions
By default, when you create a user, it is assigned a bare minimum role (PUBLIC). Only a bare minimum role is required to perform a group aggregation.
Create Account Permissions
The CREATE command can only be executed by users with a role that has the CREATE USER global privilege.
Modify, Enable, Disable, Unlock, or Change Password Permissions
Note the following with the OWNERSHIP privilege:
- The OWNERSHIP privilege grants the ability to delete, alter, rename, and grant or revoke access to an object.
- OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred to a different role by the owning role (or any role with the MANAGE GRANTS privilege) using the
GRANT OWNERSHIPcommand. - The OWNERSHIP privilege grants full control over an object. Only a single role can hold this privilege on a specific object at a time. For more information on the GRANT OWNERSHIP command, refer to the Snowflake documentation.
Only the role with the OWNERSHIP privilege on the user, or a higher role, can execute this command to modify most user properties.
To grant ownership permissions, use the following command:
Where UserName refers to the name of the user that you are modifying.
Note
To modify, enable, disable, unlock, or change the password of a user, a minimum permission user assigned role should have ownership permission on the user who you are modifying.
Documentation Feedback
Feedback is provided as an informational resource only and does not form part of SailPoint’s official product documentation. SailPoint does not warrant or make any guarantees about the feedback (including without limitation as to its accuracy, relevance, or reliability). All feedback is subject to the terms set forth at https://developer.sailpoint.com/discuss/tos.