Tempkey Blog
Granting Snowflake Access Without Handing Over Warehouse Credentials
Learn how to give contractors and analysts the Snowflake data they need without passing around warehouse passwords — and how to prove the access is gone when the engagement ends.
Implementing snowflake access management without direct credentials requires separating identity, role assignment, and secret generation so external contributors avoid handling shared passwords or permanent administrative keys. By combining scoped roles, key-pair authentication, and time-bounded access reviews, operations and security teams can grant temporary access to data analysts without compromising warehouse security.
When you hire outside specialists, your warehouse contains some of your company's most sensitive operational records. Handing an agency or freelance engineer a direct username and password creates immediate compliance and security vulnerabilities. This guide explains how to design a credential-free access workflow in Snowflake, structure granular roles, and enforce verifiable offboarding when projects wrap up.
---Why Shared Warehouse Credentials Are the Wrong Default
The fastest way to onboard a data contractor is often the most dangerous: an administrator creates a shared account named analyst_contractor, sets a static password, and drops it into a private chat thread. Within months, multiple external specialists have used those same credentials across different projects. Nobody knows who ran which query, whether former agency staff retained access, or if the password remains valid on an unmanaged personal device.
Because Snowflake enforces discretionary access control based on roles, sharing a single human user collapses distinct external contributors into one identity. When multiple individuals execute queries under a shared account, query history attribution breaks down. If a sensitive table is queried or exported inappropriately, the audit log shows only the generic username, leaving operations leads unable to identify the responsible individual.
To safely provide snowflake data access for contractors, operations managers and security leads need three operational guardrails:
- A distinct, named identity per person: Every contractor must authenticate as an individual so warehouse query history maps to a specific human.
- A bounded window of access: Access permissions should exist only for the defined duration of the statement of work, with a planned offboarding date established at provisioning.
- A verifiable record of removal: When an engagement concludes, administrators need documentation confirming credentials were decommissioned and roles unassigned.
Snowflake provides native identity and authorization controls to implement granular permissions. However, managing lifecycle events—such as setting expiration windows and tracking revocation records across multiple systems—requires combining Snowflake's internal controls with structured offboarding procedures.
---How Snowflake Access Management Without Direct Credentials Actually Works
To establish Snowflake access management without direct credentials, you must understand how Snowflake models identity and access. Snowflake separates the identity logging into the platform (the USER) from the securable objects that identity can read or modify (governed by ROLES). Compute resources (WAREHOUSES) and storage structures (DATABASES and SCHEMAS) are accessible only when granted to a role currently assumed by a user, as detailed in the Snowflake Access Control Overview.
Under no circumstances should an external contractor receive access to the ACCOUNTADMIN system role. Snowflake Access Control Best Practices emphasize that ACCOUNTADMIN combines storage administration, user management, and billing operations, making it unsuitable for day-to-day analytics work. Routine engineering must be conducted through custom, least-privileged roles.
Instead of distributing static account passwords, operations teams can implement two primary authentication methods:
- Key-Pair Authentication: As documented in the Snowflake Key-Pair Authentication Guide, contractors generate a 2048-bit RSA key pair locally, submitting only the public key to the account administrator. The private key remains on the contractor's local workstation, eliminating password transit over email or chat. Snowflake also supports periodic key-pair rotation to cycle credentials safely.
- External Identity Federation: According to Snowflake's documentation on Federated Authentication and SSO, Snowflake supports external identity providers using standard protocols, allowing users to authenticate via your centralized identity directory without maintaining a separate Snowflake password.
Snowflake manages what an authenticated identity can inspect, query, or execute. However, it does not track contractor contract end dates or automatically deactivate user records when an external engagement concludes. The responsibility for monitoring project milestones, de-provisioning users, and confirming access removal remains with your internal team.
---A Step-by-Step Grant for a Contractor or Freelance Analyst
When provisioning secure data warehouse access for freelancers, avoid granting broad warehouse access. Follow this step-by-step workflow to provision a contractor using scoped roles and asymmetric keys.
Step 1: Create a Dedicated, Named User
Create an individual user entity for the contractor. Do not reuse an existing generic account. Set the user properties so no local password is created, requiring key-pair authentication.
CREATE USER alex_contractor
LOGIN_NAME = 'alex.contractor@partneragency.com'
DISPLAY_NAME = 'Alex Rivera (Contractor)'
DEFAULT_ROLE = role_contractor_reporting
MUST_CHANGE_PASSWORD = FALSE;
Step 2: Define a Scoped Role and Warehouse
Create a dedicated role limited to the specific database schemas and compute resources necessary for the project. Restrict the contractor role from reading raw application logs or sensitive financial tables.
CREATE ROLE role_contractor_reporting;
-- Grant usage on compute and storage
GRANT USAGE ON WAREHOUSE wh_contractor_small TO ROLE role_contractor_reporting;
GRANT USAGE ON DATABASE analytics_prod TO ROLE role_contractor_reporting;
GRANT USAGE ON SCHEMA analytics_prod.core_metrics TO ROLE role_contractor_reporting;
-- Restrict privileges to read-only access on specific views
GRANT SELECT ON ALL VIEWS IN SCHEMA analytics_prod.core_metrics TO ROLE role_contractor_reporting;
GRANT SELECT ON FUTURE VIEWS IN SCHEMA analytics_prod.core_metrics TO ROLE role_contractor_reporting;
-- Assign the scoped role to the user
GRANT ROLE role_contractor_reporting TO USER alex_contractor;
Step 3: Assign the Public Key and Network Policy
Have the contractor generate an RSA key pair locally and provide their public key. Apply the public key directly to their user profile:
ALTER USER alex_contractor SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BA...';
If your Snowflake edition supports network policies, bind the user account to specific IP addresses to prevent session establishment from unauthorized networks.
Step 4: Establish an External Expiration Record
Snowflake does not include a native calendar trigger to drop user profiles on a project deadline. Operations managers must document the contract end date outside Snowflake—such as within an onboarding tracker or access management registry—to ensure access is revoked when the project concludes.
Contractor Onboarding Security Checklist:
- [ ] Named user account created matching contractor's work email.
- [ ] No default password set; RSA public key assigned.
- [ ] Dedicated role created using principle of least privilege.
- [ ] Dedicated small warehouse assigned to prevent runaway compute resource consumption.
- [ ] Future table and view permissions scoped strictly to approved schemas.
- [ ] Project completion date logged in access management records.
Snowflake Data Access for Contractors: Choosing Between Roles, Shares, and Views
Direct role assignment is not the only way to expose data to external parties. Depending on engagement duration and whether the contractor operates within their own Snowflake environment, choose the approach that minimizes administrative exposure.
1. Scoped Role Grants
Assigning a scoped custom role inside your own Snowflake account is ideal for embedded engineers who need to interact with your data modeling pipelines or BI reporting layer. It provides complete internal query visibility but requires strict user management and credential decommissioning.
2. Secure Data Sharing
If your contractor or agency operates their own Snowflake account, you can use Secure Data Sharing. As explained in the Snowflake Secure Data Sharing Documentation, sharing allows consumer accounts to query database objects in a provider account without copying files or managing user credentials in the host environment. The contractor accesses data using their own credentials, and your administrators can revoke the share instantly with a single SQL statement.
3. Secure Views and Dynamic Data Masking
When an analyst requires access to a production database but should not view Personally Identifiable Information (PII), wrap tables in secure views or apply masking policies. Standard views can expose underlying SQL logic in query plans, whereas secure views ensure definition details and intermediate data transformations remain hidden from the querying role.
| Pattern | Primary Use Case | Key Benefit | Operational Tradeoff |
|---|---|---|---|
| Scoped Role Grant | Embedded analysts writing ETL pipelines or designing queries | Full access to platform tooling and assigned warehouses | Requires local user provisioning and credential revocation |
| Secure Data Sharing | Agencies with an existing Snowflake tenant doing independent modeling | No local user accounts or credentials created in your account | Requires the external party to operate their own Snowflake account |
| Secure Views | External contractors analyzing aggregate metrics without PII access | Restricts query visibility down to approved rows and columns | Adds upfront SQL modeling overhead for data engineering teams |
Secure Data Warehouse Access for Freelancers: The Revocation Half Nobody Plans
Most data access incidents occur after an engagement ends rather than during active development. A contractor departs, but their user entity, assigned roles, and public keys remain active in production indefinitely. Because the contractor no longer submits daily queries, their dormant access goes unnoticed.
A complete revocation process in Snowflake requires systematically dismantling the user's operational privileges:
- Disable the User Account: Prevent subsequent logins by setting the user profile to disabled (
ALTER USER alex_contractor SET DISABLED = TRUE;). - Revoke Scoped Roles: Strip functional role assignments from the user (
REVOKE ROLE role_contractor_reporting FROM USER alex_contractor;). - Remove Authentication Keys: Clear the public key from the profile (
ALTER USER alex_contractor UNSET RSA_PUBLIC_KEY;) so dormant keys cannot be used if the account is re-enabled. - Drop or Reassign Objects: If the contractor created temporary tables or stages, reassign object ownership to an internal administrator before dropping the user.
A critical step in secure de-provisioning is read-back verification. Do not assume that issuing a de-provisioning command successfully severed access. Operations leads should run verification queries (such as SHOW GRANTS TO USER alex_contractor) to confirm that assigned privileges resolve to zero active roles. In external systems, automated access verification helps prevent configuration errors.
For surrounding infrastructure, automated tooling streamlines offboarding. Tempkey natively enforces access on 10 providers: Slack, Google Workspace, Microsoft 365, GitHub, GitLab, Zoom, AWS IAM, Figma, Dropbox, and Asana. While Snowflake user permissions are managed within Snowflake itself or through the cloud directory that fronts it, tools like Tempkey automatically handle surrounding services like AWS IAM and GitHub on synchronized expiration timelines.
---What to Log So You Can Answer "Who Could Read This in March?"
During compliance reviews, customer security questionnaires, or internal audits, operations managers must account for historical data warehouse access. Typical review questions include: Who had access to our production analytics schemas six months ago, and what authorization approved that grant?
According to the Snowflake Access History Documentation, Snowflake logs query executions and object read events, recording which user queried a specific table or view. However, Snowflake's system tables do not record the business justification: they show that a query ran, but not who approved the account or when the contract was scheduled to end.
A complete, defensible contractor access log requires maintaining an operational audit trail documenting:
- The contractor's verified legal identity and corporate email.
- The internal manager who authorized the access request.
- The specific roles, schemas, and warehouses granted.
- The planned engagement start and termination dates.
- The timestamped verification confirming credential and role revocation.
Tempkey gives you an exportable, append-only audit trail to support your own compliance and offboarding records. Tempkey does not hold SOC 2, ISO 27001, HIPAA, or PCI certification. Keeping contractor access records centralized ensures you can export clean documentation for external auditors without piecing together chat logs and commit histories.
---Where a Grant-and-Revoke Tool Fits, and Where It Doesn't
When bringing on technical freelancers, data warehouse access is rarely isolated. A data analyst typically needs an interconnected toolchain: an AWS IAM role to inspect source S3 buckets, access to GitHub repositories containing dbt transformation models, and team channels in Slack.
Coordinating multiple access lifecycles across separate dashboards frequently leads to orphaned accounts. Tempkey natively enforces access on 10 providers — Slack, Google Workspace, Microsoft 365, GitHub, GitLab, Zoom, AWS IAM, Figma, Dropbox, and Asana. Notion and Trello are limited-native (tracked, not fully enforced) and Zapier/Make are best-effort webhook bridges without automated verification. Automatic Slack deactivation uses Slack's SCIM API, which Slack offers on its Business+ and Enterprise plans. On other Slack plans, Tempkey verifies that access was removed rather than removing it.
Understanding these integration boundaries is essential for designing your workflows:
- The Native Toolchain: As developers access AWS IAM or repositories in GitHub alongside project boards in Asana, an access manager tracks those accounts on a unified expiration clock, terminating privileges simultaneously when the project concludes.
- The Snowflake Boundary: Because Snowflake is not a natively enforced provider, administrators manage Snowflake database roles directly via SQL or directory groups, while using access managers to govern the surrounding toolchain and track offboarding dates.
- API Integration: Tempkey has a public REST API covering grants, extension, revocation with read-back verification, integrations, the audit trail, and API-key management. Keys are bearer tokens with read/write scopes; an OpenAPI 3 spec is published at api.tempkey.io/openapi.json and human docs at tempkey.io/docs/api. Teams can integrate these endpoints into internal deployment scripts to orchestrate custom Snowflake revocation steps alongside supported SaaS tools.
Provider admin tokens are write-only in the browser and encrypted at rest using AWS KMS in production; they are not displayed again after submission. This ensures administrators can configure integrations without exposing upstream service credentials across internal teams.
---Common Mistakes and How to Avoid Them
Managing warehouse security for temporary personnel involves avoiding several common operational traps:
1. Assigning Broad Administrative Roles for Speed
Granting SYSADMIN or ACCOUNTADMIN to an external analyst "just for initial setup" frequently results in lingering excessive permissions. Create purpose-built roles with explicitly bounded schemas instead of using administrative roles for convenience.
2. Disabling the User While Retaining Active Public Keys
Disabling a user profile halts active sessions, but failing to unset RSA_PUBLIC_KEY leaves credentials open to reuse if the profile is accidentally re-enabled. Make sure to strip assigned authentication keys and roles as part of your standard de-provisioning process.
3. Relying on Calendar Reminders for Manual Offboarding
Tracking contractor access via calendar events creates security gaps when staff take time off or notifications are dismissed. Without automated lifecycle tracking, access persists indefinitely after contract completion.
4. Ignoring Downstream Local Data Copies
Securing Snowflake does not help if an analyst exports query results to an unmanaged local drive or leaves database credentials hardcoded in development notebooks. Require contractors to use secure staging environments and forbid local CSV exports of regulated data.
---A Practical Checklist for Your Next Contractor Grant
Use this operational checklist before onboarding your next freelance data engineer or analytics contractor:
- Identity: Provision an individual, named Snowflake user for the contractor; do not share credentials across team members.
- Authentication: Configure RSA key-pair authentication or federated identity. Avoid setting static passwords.
- Authorization: Create an engagement-specific role with
USAGEandSELECTpermissions scoped exclusively to necessary schemas. - Resource Governance: Assign a dedicated, rate-limited virtual warehouse to maintain cost controls and monitor compute usage.
- Lifecycle Tracking: Document the project end date in an access management platform before issuing keys.
- Automated Toolchain Alignment: Align the contractor's companion tools (AWS IAM, GitHub, Slack) to an automated expiration schedule.
- Revocation Verification: At project close, disable the user, clear assigned keys, revoke assigned roles, and confirm zero active grants via query inspection.
- Audit Export: Archive the grant-and-revocation record in an exportable audit log for internal compliance documentation.
Frequently Asked Questions
How can operations users update snowflake data without direct warehouse credentials?
Operations teams can update data through curated application interfaces, automated ETL ingestion pipelines, or external stage integrations rather than granting direct DML access to underlying tables. Setting up staging tables managed by service pipelines ensures external users load structured records without exposing direct database write credentials.
Can I give a contractor Snowflake access without sharing a password?
Yes. Snowflake natively supports asymmetric key-pair authentication. The contractor generates a private-public key pair locally, and the administrator assigns only the public key to the contractor's user profile in Snowflake. The user authenticates through their private key, eliminating the need for shared passwords.
Does Snowflake support single sign-on for external contractors?
Snowflake supports federated single sign-on through external identity providers using standard protocols. If your organization provisions external contractors within your corporate identity system, they can authenticate into Snowflake via federated SSO without creating a separate, local Snowflake password.
How do I verify a contractor's Snowflake access was actually removed?
To verify access removal, execute SHOW GRANTS TO USER <username> to confirm all assigned roles have been severed, and run DESCRIBE USER <username> to verify that the user status is disabled and that the RSA_PUBLIC_KEY property has been cleared.
What should I keep in an audit record for contractor data access?
An audit log must record the contractor's legal identity, the approving manager, the roles and warehouses provisioned, the exact timestamp when access was initiated, the scheduled end date, and the verified timestamp when roles and credentials were decommissioned.
---Put every contractor on one expiry clock: start a free Tempkey workspace, connect the tools you already use, and see how a grant, an automatic revoke, and an exportable record look for your next engagement.