查看类别

如何将 Snowflake 数据库作为安全的 REST API 公开

阅读时间:13分钟

雪花标志 雪花 REST API

将 Snowflake 查询转换为安全查询 REST API — 无需连接 SQL API,无需共享账户席位。

保存针对 Snowflake 数据仓库的 SQL 查询,生成每个收件人的 API 密钥,并将实时 JSON 端点提供给合作伙伴。 Snowflake SQL API 集成构建,无需密钥对 OAuth,无需共享仓库席位——仅需受控的只读权限 Snowflake REST API 几分钟之内。

没有账户座位可供共享 每个收件人的密钥 强制只读 无需部署

Query Streams 是一个安全的实时数据库集成平台,可将任何已保存的 Snowflake 查询转换为合作伙伴可用的 REST API 端点——具有每个收件人的密钥、只读强制执行和完整的审计跟踪。 你获得一个现场直播 Snowflake REST API 无需使用 Snowflake SQL API 进行构建,无需提供帐户凭据,也无需托管网关。 了解更多信息,请访问 QueryStreams.com免费注册 几分钟内即可发布您的第一个 Snowflake 端点。

为什么要将 Snowflake 数据库作为 REST API 公开?

您精心整理的数据存储在 Snowflake 中,迟早会有团队以外的人需要使用其中的一部分——客户希望在仪表盘中查看数据,供应商需要实时数据流而不是每日导出,合作伙伴的应用程序需要读取一个结构清晰的结果集。所有原生选项都需要您额外付费。Snowflake 自带的 SQL API 功能强大,但这意味着您需要搭建密钥对或 OAuth 身份验证、运行数据仓库,并在客户端处理分页。为合作伙伴提供 Snowflake 登录名(或读者帐户)可以让他们获得比单个报告更大的访问权限,但每个权限都需要付费。反向 ETL 管道则会将数据完全移动到其他地方。 Snowflake REST API 这是简洁版本:合作伙伴会收到一个 URL 和一个令牌,而不是您的帐户。查询流则会保存一个查询并添加一个密钥。

无需注册即可赠送座位

收件人无需获取 Snowflake 登录信息、读者帐户或 OAuth 客户端。网络代理以您的只读角色运行查询;合作伙伴仅持有 API 密钥。

每个接收者的 API 密钥

每个受赠者都会得到自己的 qsapi_* 关键在于:撤销其中一个凭据,而不影响其他凭据,也不轮换您的 Snowflake 凭据。

默认只读

只读验证器会在非 SELECT 语句到达 Snowflake 之前将其拒绝。不会出现意外情况。 更新, 合并,或 降低 通过 API 的路径。

您的 SQL 语句将保持私密。

接收者可以看到端点 URL、JSON 响应以及您公开的任何过滤器——永远不会看到您的 SQL、您的仓库、您的帐户标识符或您的架构。

无需托管或修补

无需集成 SQL API,无需 OAuth 服务器,也无需反向 ETL 流水线。该端点作为托管功能运行,因此无需维护部署流水线或令牌刷新代码。

永久性的、过期的或自毁的

将端点设为永久端点,设置其在某个日期过期,或者为其设定一个固定的调用预算,使其在达到设定的请求次数后自动销毁。

通过 REST API 使用 Snowflake SQL——常用方法及其弊端

在 Snowflake 上实现 HTTP 接口确实有多种方法,而且它们各自的效果都不错。但问题在于,每种方法都需要您自行维护身份验证、基础设施或数据副本。以下是常见方法与 Query Streams 共享端点的比较,前提是目标仅仅是“允许特定合作伙伴读取特定结果集”。

忧虑 Snowflake SQL API(原生) 反向 ETL / DIY 服务 查询流
收件人持有 账户级密钥对或 OAuth 客户端 在另一个工具中保存您的数据副本 一个用于单个查询的单用途键
暴露的表面 该角色可以运行任何 SQL 语句 无论管道同步什么 仅保存了一个查询,别无其他。
您设置的身份验证 密钥对 JWT / OAuth + 仓库 管道两端的凭证 仅限外呼客服,只读角色
每个接收者的密钥 + 撤销 自己动手做 自己动手做 内置
每次通话的审计日志 通过 ACCOUNT_USAGE 进行自组装 自行添加 内置
您操作/修补/轮换身份验证 是的,永远 是的,永远 为您管理
到达第一个终点的时间 数小时至数天 分钟

正在寻找 Snowflake SQL API 的替代方案,用于合作伙伴共享?

如果您能够同时掌控数据收发端,并希望以编程方式完全访问您的帐户,那么 Snowflake 的 SQL API 非常出色。但如果您希望向指定的合作伙伴提供一个受控的只读结果集(带有独立的密钥、审计跟踪,且无需构建任何身份验证集成),那么 Query Streams 正好可以满足您的需求。两者可以共存:SQL API 用于您自己的应用程序,Query Streams 用于对外共享。

查询流如何将 Snowflake 查询转换为 REST API

网络代理安装完毕且 Snowflake 连接器配置完成后,将已保存的查询提升到共享 REST 端点大约需要三个步骤。如果您已经在使用 Excel、Google Sheets 或 MCP 服务器的查询流,则代理和连接器已经就位——您可以从第二步开始。

1

通过代理连接 Snowflake

安装网络代理,并添加一个具有专用只读角色和小型数据仓库的 Snowflake 连接器。该代理会建立与查询流的出站 TLS 连接——任何帐户凭据都不会到达接收方。

2

保存 SQL 查询

写下 选择 在针对 Snowflake 连接的查询构建器中,可以使用 JOIN、CTE、窗口函数和参数。命名并保存即可。任何可以使用 SELECT 语句查询的内容都可以成为端点。

3

推广它并分享一个密钥

打开“安装”选项卡,选择端点类型(永久、过期或呼叫预算)和输出格式,然后通过电子邮件邀请收件人。他们将获得一个魔法链接声明和他们自己的 qsapi_* 钥匙。

保持仓库信用额度较低

每次 API 调用都会在您为连接器指定的仓库上运行已保存的查询。将其指向一个小型、自动挂起的仓库,这样仓库会在每次调用之间停止运行,Snowflake 的结果缓存就能以低成本处理重复的相同调用。范围限定的已保存查询可以确保扫描的字节数和消耗的积分都可预测。

无共享账户,无暴露仓库

正是这种安全模型促使团队选择它,而不是 Snowflake 登录或公共 SQL API 集成。您的 Snowflake 凭据仅存储在您网络上代理的加密凭据存储中;它们绝不会传输到我们的云端,也不会对接收者可见。此外,每个端点都提供针对每个接收者的控制选项,您可以在共享之前加强这些控制。

仅外呼客服

特工到达 agent.querystreams.com 在 443 端口上,因此您的网络只能看到正常的出站 HTTPS——没有入站端口,没有 VPN,没有隧道。 仅出站连接的工作原理 →

只读强制执行

在任何语句到达 Snowflake 之前,验证器会在您网络上的 Agent 中运行。非 SELECT 语句会被拒绝。 只读违规.

IP + CORS 允许列表

将接收方的密钥绑定到特定的 IP 地址或 CIDR 范围,并限制哪些浏览器来源可以调用每个端点。任何 SQL 查询执行之前,都会拒绝列表外的调用。

速率限制 + 字节配额

两级速率限制(每个密钥和每个端点)加上可选的每月字节上限,可将嘈杂的接收者限制在安全的爆炸范围内,并使您的仓库积分可预测。

调用您的 Snowflake REST API

接收方调用此端点的方式与其他 REST API 类似:提供一个 bearer token 和一个 URL。您公开的任何已保存查询参数都可以在每次调用时进行设置——在查询字符串中。 得到 或者在 JSON 正文中 邮政代理会将这些值绑定为正确的绑定参数,而不是字符串连接,因此接收者无法突破过滤器注入 SQL。

带有筛选参数的 GET 请求
# 针对您的 Snowflake 支持的端点的接收方调用 卷曲 -H “授权:Bearer qsapi_K7…ZmQ” \ “https://api.querystreams.com/v1/endpoints/revenue-by-segment?segment=Enterprise&since=2026-01-01”

使用以下方式选择每次调用的输出格式: 接受 标题(或标题) ?format= 查询参数): JSON 对于单个数组, CSV 对于电子表格和 pandas,或者,在流式端点上, NDJSON (每行一个 JSON 数据)适用于按需解析的管道——非常适合 Snowflake 生成的大型结果集。对于带宽敏感型用户,请选择加入 LZ4 有效载荷压缩 Accept-Encoding: lz4未压缩的响应也采用标准格式。 gzip 自动传输到网络。有关静态模式与流模式、四种线路组合以及 OpenAPI 3.1 版本的完整详细说明,请参阅…… 适用于 SQL 数据库的即时 REST API 指导。

使用量如何计费

API 平台包含在每个计划中,并占用与 Excel、Sheets 和 MCP 相同的每月字节配额——查询仍然像往常一样在您自己的仓库中运行,Snowflake 计算积分也随之发放。 字节配额和压缩计费的工作原理 →

将其插入 Power BI、Tableau 以及任何可以读取 JSON 的工具。

因为每个端点都返回标准 JSON — 有了 CSV 和流式 NDJSON — 任何可以读取 REST 源的工具都可以直接使用您的 Snowflake 数据,无需在他们那边安装任何东西,也不需要 Snowflake 驱动程序。 Power Query 是进入微软 BI 技术栈最便捷的桥梁: Power BI 选择 获取数据 → 来自网页粘贴端点 URL,添加您的 授权 标题,Power Query 将 JSON 解析为可刷新的表格,该表格用于填充您的数据模型。(对于电子表格中的实时数据,可以使用原生方法。) 查询流 Excel 插件 更简单的方法是使用 Power Query,它能满足您在 Power BI 模型本身中获取数据的需求。)

微软 Power Query 徽标 Power Query 获取数据 → 从网页端,粘贴 URL 和 bearer token,将 JSON 数据展开为可刷新的表格
微软 Power BI 徽标 Power BI 相同的 Power Query 引擎——直接将终结点加载到模型中并安排刷新
Tableau 徽标 Tableau 将 Web 数据连接器或 JSON 源指向实时仪表板的端点
邮递员标志 邮差 导入 OpenAPI 3.1 规范,然后一键发送、检查和共享请求

它还提供饲料 n8n, Qlik, 卷曲, Python (请求pandas.read_json)、失眠症、跳房子游戏——或者任何可以发送 HTTP 请求和读取 JSON 的脚本或工作流程。

可在 AWS、Azure 和 Google Cloud 上运行

您的 Snowflake 账户运行在哪个云平台上并不重要。无论您的账户托管在 AWS、Azure 还是 Google Cloud 上,也无论跨任何区域,代理的连接方式都相同。为了获得最低延迟,请将代理部署在与您的 Snowflake 账户相同的云区域中;一个 Query Streams 账户可以跨区域和云平台运行多个代理,并且无论哪个代理提供服务,单个端点的行为都完全相同。

不止雪花

相同的流程可以将已保存的查询从 PostgreSQL、Microsoft SQL Server、MySQL、MariaDB、SQLite、Microsoft Access、Oracle、BigQuery 或 DuckDB 提升到 REST 端点。Snowflake 只是最常用的起点之一。浏览 连接器设置指南 适用于当前列表。

常见问题

我需要设置 Snowflake 的 SQL API 还是需要提供账户访问权限? +
不。您无需配置 Snowflake SQL API、颁发密钥对或为收件人创建读取器帐户。网络代理以您自己的只读角色连接到 Snowflake,并建立出站 TLS 连接。 agent.querystreams.com 在 443 端口上。接收者始终只持有一个 Query Streams API 密钥,该密钥的作用域限定为一个已保存的查询。
收件人可以看到我的 SQL 或 Snowflake 凭据吗? +
绝不。接收方可以看到端点 URL、响应正文以及您作为筛选器公开的任何参数。SQL 语句保留在查询流中,您的 Snowflake 凭据仅存储在您网络上代理的加密凭据存储中——它们绝不会传输到我们的云端。
这和 Snowflake 的 HTTP API 或 SQL API 一样吗? +
不。Snowflake 的 SQL API(即其 HTTP API)允许您通过编程方式完全访问您的帐户,并允许您编写自己控制的代码,该访问通过密钥对或 OAuth 进行保护。Query Streams 则采用了相反的、更窄的外部共享方式:您只需将一个已保存的查询公开为一个端点,每个接收者都会获得自己的可撤销密钥,每次调用都会被审计,而且您无需进行任何集成或维护。许多团队同时使用这两种方式——内部使用 SQL API,使用 Query Streams 与合作伙伴共享结果。
API可以返回哪些输出格式? +
JSON(默认)、CSV 或——在流式端点上——NDJSON,后者适用于 Snowflake 生成的大型分析结果集;接收方根据每次调用选择格式。 接受 标题或 ?format=. 输出格式、压缩和流媒体详解 →
这样会消耗我的 Snowflake 积分吗? +
每次调用都会在您分配给连接器的仓库上运行已保存的查询,因此它像其他查询一样使用 Snowflake 计算资源。为了降低成本,请将连接器指向一个小型、自动挂起的仓库,并编写一个范围较小的已保存查询;Snowflake 的结果缓存还可以处理重复的相同调用,而无需重新扫描。查询流中的速率限制和字节配额可以对端点的触发频率设置第二层上限。
端点可以过期或自毁吗? +
是的——端点可以是永久性的,也可以在某个日期过期,或者具有固定的调用预算,并且任何接收者的密钥都可以立即撤销,而无需轮换您的 Snowflake 凭证。 端点生命周期和每个接收者的密钥撤销 →
收件人是否需要 Query Streams 帐户? +
不——通过电子邮件分享给某人(他们会获得一个魔法链接声明和一个自动创建的免费层组织)以进行追溯,或者颁发一个服务密钥以进行无人值守的机器对机器访问。 接收者如何声明和使用密钥 →

开始

免费发布您的第一个 Snowflake REST API。

注册、安装网络代理、将 Snowflake 连接到只读角色、保存 SQL 查询,然后通过电子邮件向收件人发送魔法链接声明。从第一次调用开始,每个收件人的密钥、只读强制执行和完整的审计跟踪功能都将启用。

相关指南: 适用于 SQL 数据库的即时 REST API | 数据库 REST API 平台 | 将 BigQuery 公开为 REST API | 连接器设置指南

类别:API平台

标签:snowflake-rest-api、snowflake、snowflake-sql-rest-api、rest-api、expose-snowflake-as-api、snowflake-api-integration、share-snowflake-data、per-recipient-keys、no-code-api、database-rest-api

元描述:将 Snowflake 查询转换为具有每个收件人密钥的安全、只读 REST API——无需 SQL API 设置、无需共享帐户、无需代码。

更新 2026 年 6 月 16 日

Powered by BetterDocs