All posts

Non-human identity: what it means for your blast radius (on Snowflake)

An offboarded contractor’s service account still lives in the CI pipeline, a nightly batch job runs with a static Snowflake user, and an over‑scoped API token is baked into a Terraform module. When the contractor’s access is revoked, the token remains active. When the batch job misbehaves, it can issue SELECT or INSERT statements across dozens of warehouses. When the Terraform module is reused for a new environment, the same credentials grant unrestricted read‑write rights to every database in t

Free White Paper

Non-Human Identity Management + Blast Radius Reduction: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

An offboarded contractor’s service account still lives in the CI pipeline, a nightly batch job runs with a static Snowflake user, and an over‑scoped API token is baked into a Terraform module. When the contractor’s access is revoked, the token remains active. When the batch job misbehaves, it can issue SELECT or INSERT statements across dozens of warehouses. When the Terraform module is reused for a new environment, the same credentials grant unrestricted read‑write rights to every database in the account. In each case the non‑human identity becomes a single point of failure, expanding the blast radius far beyond what a human operator could ever achieve.

Non‑human identities, service accounts, CI tokens, automation users, are essential for modern data pipelines. They enable scripts to run unattended, allow platforms to provision resources, and let monitoring tools query metrics without a person at the keyboard. The convenience, however, comes with a hidden cost: the permissions granted to a single credential often apply to many workloads, and those permissions are rarely revisited when the original use case changes.

Why non‑human identities inflate blast radius

When a service account is created with a role that can read and write across all schemas, any process that authenticates with that account inherits the full set of privileges. If the credential leaks, through a repository commit, a misconfigured environment variable, or an abandoned VM, an attacker instantly gains the same reach. The blast radius is the sum of all resources that could be impacted by a single compromised identity.

Typical safeguards focus on the setup phase: using OIDC or SAML to issue short‑lived tokens, assigning the least‑privilege role, and rotating secrets regularly. Those steps decide who the request is and whether it may start, but they do not stop the request from reaching Snowflake directly. The connection still travels straight from the client to the Snowflake endpoint, bypassing any checkpoint that could log the exact query, mask sensitive columns, or require an additional approval before a destructive command runs.

What remains exposed after basic scoping

Even with strict IAM policies, the request path lacks a central enforcement point. The data plane, Snowflake’s query engine, receives the raw SQL string and executes it. If a malicious actor obtains a token, they can issue a DROP TABLE or export an entire customer dataset without any intermediate audit record. The system cannot retroactively mask a column that was returned, because the data has already left the gateway. Likewise, there is no built‑in workflow to pause a high‑risk operation for a human reviewer.

This gap means that the promised reduction in blast radius from tighter roles is incomplete. The setup gives you confidence that only authorized identities exist, but without a data‑path checkpoint the actual impact of a compromised identity is still uncontrolled.

How hoop.dev closes the gap

hoop.dev acts as a Layer 7 gateway that sits between every non‑human identity and Snowflake. By proxying the connection, hoop.dev becomes the only place where enforcement can happen. It inspects each SQL statement, records the full session, and applies inline masking to any column marked as sensitive. When a query matches a policy that requires human oversight, such as a DROP DATABASE command or bulk export of personally identifiable information, hoop.dev triggers a just‑in‑time approval workflow before the command reaches Snowflake.

Continue reading? Get the full guide.

Non-Human Identity Management + Blast Radius Reduction: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.

Because hoop.dev holds the Snowflake credential, the client never sees it. The setup still decides which identities are allowed to request a connection, but the data path provided by hoop.dev is where the real protection lives. The gateway records every session, so auditors can replay the exact sequence of statements that led to a data breach. It masks sensitive fields in query results, ensuring that downstream logs or screen captures never expose raw PII. And it can block dangerous commands outright, reducing the blast radius to a single approved operation instead of an unrestricted session.

In practice, an engineer defines a policy that limits a CI service account to SELECT on a specific warehouse. When the same account attempts an INSERT, hoop.dev intercepts the request, logs the attempt, and returns an error unless an authorized reviewer grants a temporary exception. The result is a dramatically smaller blast radius: a compromised token can only read the data it is explicitly allowed to, and any deviation is recorded and requires explicit approval.

Key enforcement outcomes provided by hoop.dev

  • Session recording for full replay and forensic analysis.
  • Inline data masking on columns marked as sensitive.
  • Just‑in‑time approval workflows for high‑risk commands.
  • Command‑level blocking of prohibited statements.
  • Audit logs that tie each query to the originating non‑human identity.

These outcomes exist only because hoop.dev sits in the data path. Remove hoop.dev and the same policies vanish, leaving the raw Snowflake connection exposed.

Getting started with hoop.dev for Snowflake

To adopt this model, deploy the hoop.dev gateway in the same network segment as your Snowflake endpoint. Register Snowflake as a connection, configure the gateway to hold the service account credentials, and map your OIDC groups to the appropriate Snowflake roles. The official getting started guide walks you through the deployment steps, while the learn section provides deeper coverage of masking policies and approval workflows.

Once the gateway is running, any automation that previously connected directly to Snowflake now points at the hoop.dev proxy. The change is transparent to existing scripts because the client libraries continue to speak the native Snowflake protocol, while hoop.dev enforces the additional controls.

FAQ

Does hoop.dev replace Snowflake’s native role‑based access control?

No. hoop.dev complements Snowflake’s RBAC by adding a data‑path enforcement layer. The underlying roles still define what each identity can do, but hoop.dev can further restrict, log, and mask actions before they reach Snowflake.

Can I still use short‑lived OIDC tokens with hoop.dev?

Yes. hoop.dev validates OIDC tokens at the gateway, so you can continue to issue short‑lived tokens for your service accounts. The gateway then maps those tokens to the appropriate Snowflake credential.

What happens to existing audit logs in Snowflake?

hoop.dev adds its own audit stream that records every proxied query. You can correlate those logs with Snowflake’s native query history for a complete view of activity.

Explore the source code and contribute to the project on GitHub.

Open source

Save the open-source gateway for agent data access

Hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.

Star and save the repo →More posts