When to use Key-Pair: Key-pair authentication is the best fit for service (non-human) users and for accounts with MFA enforced, since JWT-based connections are not prompted for an interactive MFA challenge. If you prefer browser-based login with automatic token refresh, use Snowflake OAuth instead.
What This Guide Covers
Generate a key pair
Create an RSA private/public key pair in PEM (PKCS#8) format.
Register the public key
Assign the public key to your Snowflake user with
ALTER USER.Configure Gumloop
Add your Snowflake Key-Pair credential in the Connectors page.
Verify & troubleshoot
Confirm the connection and resolve common errors.
Which Authentication Method Should You Use?
Gumloop supports three ways to authenticate to Snowflake. You only need one.OAuth (Recommended)
Browser-based login with automatic token refresh and centralized control.
Set up OAuth →
Key-Pair
RSA JWT auth. Best for service users and MFA-enforced accounts. You are here.
PAT
Programmatic Access Token (username + token).
Set up PAT →
When multiple Snowflake credentials exist, Gumloop resolves them in this order: OAuth → Key-Pair → PAT. For a clean setup, configure just the one method you intend to use.
Prerequisites
Before you begin, ensure you have:- Snowflake account access — a user account you can run
ALTER USERon (or a Snowflake admin who can do it for you) - Account identifier — the first part of your Snowflake URL, e.g.
myorg-account123fromhttps://myorg-account123.snowflakecomputing.com - OpenSSL (or any tool that can generate an RSA key in PKCS#8 format) available on your machine
- Public internet access to Snowflake — Gumloop connects to your account over the public internet (see the PrivateLink note below)
Step 1: Generate an RSA Key Pair
Run these commands locally to create the key pair. Gumloop requires the private key in PEM (PKCS#8) format.1.1 Generate the private key
rsa_key.p8, a PEM file that begins with -----BEGIN PRIVATE KEY----- (unencrypted) or -----BEGIN ENCRYPTED PRIVATE KEY----- (encrypted).
1.2 Generate the matching public key
rsa_key.pub, which begins with -----BEGIN PUBLIC KEY-----.
Step 2: Register the Public Key in Snowflake
Assign the public key to the Snowflake user Gumloop will connect as.2.1 Assign the public key
In a Snowflake worksheet, runALTER USER with the contents of rsa_key.pub — excluding the -----BEGIN PUBLIC KEY----- / -----END PUBLIC KEY----- header lines:
Assigning a public key requires the
SECURITYADMIN role (or higher), or the OWNERSHIP/ALTER privilege on the user. If you don’t have this, ask your Snowflake administrator to run the command for you.2.2 Verify the key was registered
RSA_PUBLIC_KEY_FP property (the key fingerprint) is populated.
Step 3: Configure Gumloop
3.1 Add the Snowflake Key-Pair credential
- Go to the Connectors page (Snowflake Key-Pair) — this link pre-filters the list to Snowflake Key-Pair
- Click Add credential on the Snowflake Key-Pair option
3.2 Fill in the credential fields

- Click Save.
Only one Snowflake Key-Pair credential can be configured per account.
Step 4: Verify Your Connection
The quickest way to confirm the key-pair connection works is with an agent:- Create a new agent
- Click Add Connectors, search for Snowflake, add it, and click Save
- Ask it to run a simple query, for example:
- Confirm the agent returns your Snowflake username
PrivateLink and Network Policies
Snowflake network policies restrict which IP addresses can connect. If your account has network policies enabled, key-pair connections from Gumloop may be blocked unless Gumloop’s static egress IPs are added to your allowed list.- Production: Whitelist Gumloop’s static egress IPs in your Snowflake network policy.
- PrivateLink: Not supported on the standard cloud-hosted deployment unless the static egress IPs are whitelisted — otherwise a VPC deployment is required.
Troubleshooting
Could not parse the Snowflake private key
Could not parse the Snowflake private key
- Make sure you pasted the private key (
rsa_key.p8), not the public key (rsa_key.pub). - The key must be in PEM (PKCS#8) format — it should start with
-----BEGIN PRIVATE KEY-----or-----BEGIN ENCRYPTED PRIVATE KEY-----. - If the key is encrypted, confirm the Private Key Passphrase field matches the passphrase you set during generation.
JWT token is invalid / public key mismatch
JWT token is invalid / public key mismatch
- The public key registered on the Snowflake user must be the pair of the private key you added to Gumloop. Re-run Step 2 with the
rsa_key.pubthat matches yourrsa_key.p8. - Verify the fingerprint is set with
DESC USER my_service_user;and checkRSA_PUBLIC_KEY_FP. - Confirm the Username in Gumloop exactly matches the Snowflake user the key is registered on.
Connection refused or network policy error
Connection refused or network policy error
- Whitelist Gumloop’s static egress IPs in your Snowflake network policy.
- PrivateLink accounts require the static egress IPs to be whitelisted, or a VPC deployment.
Queries fail with a warehouse error
Queries fail with a warehouse error
- Ensure your user’s role has the
USAGEprivilege on the warehouse. - Specify the warehouse explicitly in the Snowflake Reader node, or set a default warehouse for the user.
FAQs
How is Key-Pair different from PAT and OAuth?
How is Key-Pair different from PAT and OAuth?
All three authenticate Gumloop to Snowflake, but differ in mechanism:
- OAuth — browser-based login with short-lived, auto-refreshed tokens. Best for interactive/human users.
- Key-Pair — RSA JWT authentication using a private key. Best for service users and MFA-enforced accounts, since it isn’t subject to an interactive MFA prompt.
- PAT — a Programmatic Access Token used like a password. Simple, but tied to token expiry and network-policy rules.
Does key-pair auth bypass MFA?
Does key-pair auth bypass MFA?
Key-pair (JWT) authentication does not trigger an interactive MFA challenge, which is exactly why it’s recommended for service users and accounts where MFA is enforced for interactive logins. Restrict the associated Snowflake user to least-privilege roles.
What key format does Gumloop require?
What key format does Gumloop require?
An RSA private key in PEM (PKCS#8) format — the output of
openssl pkcs8 -topk8. Both encrypted and unencrypted keys are supported. Line breaks are optional when pasting; Gumloop normalizes the formatting.Do I need the passphrase field?
Do I need the passphrase field?
Only if you generated an encrypted private key (without
-nocrypt). For unencrypted keys, leave the passphrase blank.Can I use more than one key-pair credential?
Can I use more than one key-pair credential?
No — only one Snowflake Key-Pair credential can be configured per account.
How do I rotate my key?
How do I rotate my key?
Generate a new key pair, register the new public key on your Snowflake user with
ALTER USER ... SET RSA_PUBLIC_KEY, then update the Private Key (and passphrase, if any) in your Gumloop credential. Snowflake also supports RSA_PUBLIC_KEY_2 for zero-downtime rotation.Security Best Practices
Least Privilege
Connect as a Snowflake user with only the minimum roles and warehouse access your workflows need.
Encrypt the Private Key
Prefer an encrypted key with a passphrase over an unencrypted one.
Rotate Keys Regularly
Periodically rotate the key pair, using
RSA_PUBLIC_KEY_2 for zero-downtime rotation.Secure Storage
Never share the private key in plain text. Gumloop encrypts stored credentials.
Additional Resources
- Snowflake OAuth Configuration — recommended for interactive users
- Snowflake PAT Configuration — token-based alternative
- Snowflake Reader node and Snowflake MCP integration
- Snowflake Key-Pair Authentication docs
- How to find your account identifier
- Gumloop Credentials Guide
Need Help?
If you encounter issues not covered here:- Review the Snowflake key-pair authentication documentation
- Contact your Snowflake administrator for account-specific issues
- Reach out to Gumloop Support for integration assistance
