Use JumpCloud SAML Single Sign On (SSO) to give your users convenient but secure access to all their web applications with a single set of credentials. Provision, update, and deprovision users in Snowflake in real-time from JumpCloud using the Identity Management (SCIM) integration. Leverage this integration for centralized and automated user lifecycle management and improved security related to user changes and user offboarding.
Read this article to learn how to configure the Snowflake integration.
Prerequisites
- A Snowflake tenant.
- Snowflake account-name/alias
- A JumpCloud administrator account.
- A user account in Snowflake with Admin permissions.
Important Considerations
- SSO is recommended, but not required.
- If you have an existing SSO implementation that uses the SAML_IDENTITY_PROVIDER account parameter, you must migrate to a SAML2 Security Integration.
- Prior to configuring the JumpCloud IdP for Snowflake, decide whether users will access Snowflake through a public URL or through a URL associated with private connectivity to the Snowflake service. To learn more, see Managing/Using Federated Authentication.
- Email addresses are required to map the users in JumpCloud with the corresponding users in Snowflake, e.g., the email address you enter in JumpCloud value maps to the login_name value in Snowflake and the SAML NameID attribute.
- If you deactivate the Identity Management on your Snowflake application, previously bound users remain active in Snowflake and able to authenticate using SSO. No further updates will be made to user accounts via the Identity Management integration.
- Snowflake supports a maximum of 500 concurrent requests per account per SCIM endpoint (e.g. the /Users endpoint, the /Groups endpoint). After your account exceeds this threshold, Snowflake returns a 429 HTTP status code (i.e., too many requests). Note that this request limit usually only occurs during the initial provisioning when relatively large numbers of requests (i.e. more than 10 thousand) occur to provision users or groups.
- If your Snowflake account URL was created with underscores, you can access your Snowflake account with the account URL having underscores or hyphens.
- If your SCIM provider reuses the same account URL for both SAML SSO and SCIM, then URLs with underscores are not supported. Therefore, use the hyphenated account URL to configure SCIM.
- Snowflake account URLs that do not contain underscores are not restricted by this limitation.
- If you are using private connectivity to the Snowflake service to access Snowflake, ensure that you are not entering these URLs in the integration settings. Enter the public endpoint (i.e. without .privatelink), and ensure that the network policy allows access from the IdP IP address, otherwise you cannot use this integration.
- Groups are supported.
Group Management Important Considerations
Enabling Group Management
You must select the Enable management of User Groups and Group Membership in this application option to manage groups and group membership in the application from JumpCloud.
Group Provisioning and Syncing
- Empty groups are not created.
- JumpCloud takes over management of existing groups in the application when the user group name in JumpCloud matches the name of the group in the application.
- All user groups associated with the application in JumpCloud are synced. Syncing occurs whenever there is a membership or group change event.
- Group renaming is supported.
- If a user group is disassociated from the application in JumpCloud, syncing immediately stops and the group is left as-is in the application. All members of that user group are deactivated in the application unless they are associated with another active application group that is managed from JumpCloud.
Group Deletion
- Managed groups deleted in JumpCloud are deleted in the application.
- All members of the deleted group are deactivated in the application, unless they are associated with another active application group that is managed from JumpCloud.
Disabling Group Management
- You can disable group and group membership management by unchecking the Enable management of User Groups and Group Membership in this application option.
- The managed groups and group membership are left as-is in the application.
- JumpCloud stops sending group membership information for the user, but the user’s identity will continue to be managed from JumpCloud.
Creating a new JumpCloud Application Integration
- Log in to the JumpCloud Admin Portal.
- Go to USER AUTHENTICATION > SSO Applications.
- Click + Add New Application.
- Type the name of the application in the Search field and select it.
- Click Next.
- In the Display Label, type your name for the application. Optionally, you can enter a Description, adjust the User Portal Image and choose to hide or Show in User Portal.
- If this is a Bookmark application, enter its URL in the Bookmark URL field.
- Click Save Application.
- If successful, click:
- Configure Application and go to the next section.
- Close to configure your new connector at a later time.
Configuring the SSO Integration
To configure JumpCloud
- Create a new application or select it from the Configured Applications list.
- Select the SSO tab.
- In the SP Entity ID and ACS URLs sections, replace any instances of ACCOUNT_NAME with your Snowflake account’s name and add any needed attributes.
- Copy the IDP URL for the next section.
- Click save.
To download the certificate
- Find your application in the Configured Applications list and click anywhere in the row to reopen its configuration window.
- Select the SSO tab and click IDP Certificate Valid > Download certificate.
The certificate.pem will download to your local Downloads folder.
To configure Snowflake
- See Snowflake’s SAML configuration documentation at Configuring Snowflake to Use Federated Authentication.
- For new Snowflake URLs, you need to use Advanced SAML configuration.
- If you already have SSO setup with SAML_IDENTITY_PROVIDER parameter, you need to migrate over to Advanced SAML in Snowflake.
This topic describes the steps that you must perform in Snowflake after configuring JumpCloud. You must perform each step, unless otherwise noted, to enable federated authentication.
- Snowflake requires the following information to enable federated authentication:
- Entity ID
- IDP SSO URL
- JumpCloud’s certificate
This information is needed in the Security Integration for SAML in Snowflake.
- To configure the integration, as a user with the ACCOUNTADMIN role, run the command CREATE SECURITY INTEGRATION as shown in the example below.
use role accountadmin;
CREATE SECURITY INTEGRATION JUMPCLOUD INTEGRATION
TYPE = SAML2
ENABLED = TRUE
SAML2_ISSUER = ''
SAML2_SSO_URL = ''
SAML2_PROVIDER = JUMPCLOUD
SAML2_X509_CERT = ''
SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = JUMPCLOUD SSO
SAML2_ENABLE_SP_INITIATED = TRUE
- Edit the integration to add Snowflake ACS URL and Snowflake SAML2 Issuer URL. Since the Snowflake Organizations feature is used to generate a new URL format and the account is renamed to use the new Snowflake URL format, you should edit your security integration to add Snowflake ACS URL and Snowflake SAML2 Issuer URL:
use role accountadmin;
alter security integration my_integration set saml2_snowflake_acs_url = 'https://<organization name>-<account name>.snowflakecomputing.com/fed/login';
alter security integration my_integration set saml2_snowflake_issuer_url = 'https://<organization name>-<account name>.snowflakecomputing.com/fed/login'';
Authorizing User SSO Access
Users are implicitly denied access to applications. After you connect an application to JumpCloud, you need to authorize user access to that application. You can authorize user access from the Application Configuration panel or from the Groups Configuration panel.
To authorize user access from the Application Configuration panel
- Log in to the JumpCloud Admin Portal.
- Go to USER AUTHENTICATION > SSO Applications, then select the application to which you want to authorize user access.
- Select the User Groups tab. If you need to create a new group of users, see Get Started: Groups.
- Select the check box next to the group of users you want to give access.
- Click save.
To learn how to authorize user access from the Groups Configuration panel, see Authorize Users to an SSO Application.
Validating SSO authentication workflow(s)
IdP Initiated
- Access the JumpCloud User Console.
- Select the Service Provider icon.
- This should automatically launch and login to the application.
SP Initiated
- Navigate to your Service Provider application URL.
- You will be redirected to log in to the JumpCloud User Portal.
- The browser will be redirected back to the application and be automatically logged in.
Configuring the Identity Management Integration
To configure Snowflake
Create a Custom SCIM Security Integration and API Token
The Snowflake configuration process creates a SCIM security integration to allow users and roles created in the identity provider to be owned by the GENERIC_SCIM_PROVISIONER SCIM role in Snowflake and creates an access token to use in SCIM API requests.
Execute the following SQL statements in your preferred Snowflake client:
The example SQL statements use the ACCOUNTADMIN system role and the GENERIC_SCIM_PROVISIONER custom role is granted to the ACCOUNTADMIN role.
It is possible not to use the ACCOUNTADMIN role in favor of a less-privileged role. Using a less-privileged role can help to address compliance concerns relating to least-privileged access, however, using a less-privileged role can result in unexpected errors during the SCIM configuration and management process.
These errors could be the result of the less-privileged role not having sufficient rights to manage all of the roles through SCIM due to how the roles are created and the resultant role hierarchy. Therefore, in an effort to avoid errors in the configuration and management processes, choose one of the following options:
- Use the ACCOUNTADMIN role as shown in the example SQL statements.
- Use a role with the global MANAGE GRANTS privilege.
- If neither of these first two options are desirable, use a custom role that has the OWNERSHIP privilege on all of the roles that will be managed using SCIM.
- Use the ACCOUNTADMIN role.
- Create the custom role GENERIC_SCIM_PROVISIONER. All users and roles in Snowflake created by the IdP will be owned by the scoped down GENERIC_SCIM_PROVISIONER role.
- Let the ACCOUNTADMIN role create the security integration using the GENERIC_SCIM_PROVISIONER custom role. For more information, see CREATE SECURITY INTEGRATION.
- Create and save the authorization token and store securely for later use. Use this token for each SCIM REST API request and place it in the request header. The access token expires after six months and a new access token can be generated with this statement.
use role accountadmin;
create role if not exists generic_provisioner;
grant create user on account to role generic_provisioner;
grant create role on account to role generic_provisioner;
grant role generic_provisioner to role accountadmin;
create or replace security integration generic_provisioning
type = scim
scim_client = 'generic'
run_as_role = 'GENERIC_SCIM_PROVISIONER';
select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');
Enabling Snowflake-initiated SSO
The SCIM provisioning process does not automatically enable single sign-on (SSO).
To use SSO after the SCIM provisioning process is complete, enable Snowflake-initiated SSO.
Managing SCIM Network Policies
The SCIM network policy has its own setting so that the SCIM provider can be specifically allowed to provision users and groups without adding these IP addresses for normal user access.
Setting up a network policy specific to the SCIM integration allows SCIM to be distinct from other network policies that may apply to the Snowflake account. The SCIM network policy does not affect other network policies on the account nor do other account network policies affect the SCIM network policy. Therefore, the SCIM network policy allows the Snowflake SCIM integration to provision users and groups as intended.
After creating the SCIM security integration, create the SCIM network policy using this command:
alter security integration generic_scim_provisioning set network_policy;
Where:
generic_scim_provisioning
Specifies the name of the Custom SCIM security integration.
scim_network_policy
Specifies the Custom SCIM network policy in Snowflake.
For more information, see Network Policies and ALTER SECURITY INTEGRATION.
Using Secondary Roles with SCIM
Snowflake supports setting the user property DEFAULT_SECONDARY_ROLES to 'ALL' with SCIM to allow users to use secondary roles in a Snowflake session.
For a representative example, see PUT scim/v2/Users/{id}.
Replicating the Custom SCIM Security Integration
Snowflake supports replication and failover/failback with the SCIM security integration from the source account to the target account.
For details, see Replication of Security Integrations & Network Policies Across Multiple Accounts.
To configure JumpCloud
- Create a new application or select it from the Configured Applications list.
- Select the Identity Management tab.
- Click Configure to expand the Configuration Settings.
- You’re presented with two fields:
- Base URL: https://<account-name/alias>.snowflakecomputing.com/scim/v2
- Token Key: Paste the authorization token generated in the previous section.
- Click Activate.
- If successful, click save.
- You will receive a confirmation that the Identity Management integration has been successfully verified.
Attribute Mappings
The following table lists attributes that JumpCloud sends to the application. See Attribute Considerations for more information regarding attribute mapping considerations.
Learn about JumpCloud Properties and how they work with system users in our API.
Snowflake User Attributes
JumpCloud Property | JumpCloud UI | SCIM v2 Mapping | Snowflake Value | Type |
---|---|---|---|---|
id* | id | string | ||
Company Email | userName | userName, loginName | string | |
firstname | First Name | name.givenName | firstName | string |
lastname | Last Name | name.familyName | familyName | string |
Company Email | emails: value | string | ||
displayName | displayName | displayName | displayName | string |
password | password | password | password | string |
!suspended && !passwordExpired | N/A | active | disabled | boolean |
N/A | N/A | meta.created | createdON | string |
N/A | N/A | meta.lastModified | lastModified | string |
Group Attributes
JumpCloud Property | JumpCloud UI Field Name | SCIM v2 Mapping | Application Value |
---|---|---|---|
name | Name | displayName | Organization |
Importing Users
This functionality is helpful if users have already been created in the application but have not been created in JumpCloud.
- Log in to the JumpCloud Admin Portal.
- Go to USER AUTHENTICATION > SSO Applications.
- Search for the application and click to open its configuration panel.
- Select the Identity Management tab.
- Click manual import.
- Select the users you want to create in JumpCloud from the application from the list of users that appear. Users in the list have two import statuses:
- New – The user has not been imported.
- Imported – user has been imported and has an account in JumpCloud.
Tip: Try using the New Users-only filter when selecting users to import. This will move all of your new users to the top of the list, making them easier to identify and select.
- Click import.
- If you are importing less than 100 users, your import results will display in real time and you can continue onboarding your users.
- If you have more than 100 users being imported, JumpCloud will send you an email when your import is complete.
- You can now connect and grant users access to all their JumpCloud resources. Learn more in the Authorize Users to an Application and Connecting Users to Resources articles.
Warning: Imported users must be members of a user group bound to an application for JumpCloud to manage their identity in, and access to, the application.
Creating a New Access Token After Expiration
Access tokens expire after six months. Upon expiration, create a new access token manually using SYSTEM$GENERATE_SCIM_ACCESS_TOKEN as shown below.
- Invalidate the existing access token for a SCIM integration by executing a DROP INTEGRATION statement.
- Recreate the SCIM integration with a CREATE SECURITY INTEGRATION statement and generate a new access token using SYSTEM$GENERATE_SCIM_ACCESS_TOKEN.
Removing the Integration
To deactivate the IdM Integration
- Log in to the JumpCloud Admin Portal.
- Go to USER AUTHENTICATION > SSO Applications.
- Search for the application that you’d like to deactivate and click to open its details panel.
- Under the company name and logo on the left hand panel, click the Deactivate IdM connection link.
- Click confirm.
- If successful, you will receive a confirmation message.
To deactivate the SSO Integration
- Log in to the JumpCloud Admin Portal.
- Go to USER AUTHENTICATION > SSO Applications.
- Search for the application that you’d like to deactivate and click to open its details panel.
- Select the SSO tab.
- Scroll to the bottom of the configuration.
- Click Deactivate SSO.
- Click save.
- If successful, you will receive a confirmation message.
To delete the application
- Log in to the JumpCloud Admin Portal.
- Go to USER AUTHENTICATION > SSO Applications.
- Search for the application that you’d like to delete and click to open its details panel.
- Check the box for the application.
- Click Delete.
- Enter the number of the applications you are deleting
- Click Delete Application.
- If successful, you will see an application deletion confirmation notification.