我们的engine从不接触您的数据仓库密码
datahashi

03安全与信任

您的数据仓库密码绝不会传到我们的engine。

SQL由我们编写,由您网络中的Query Runner以只读角色运行,密码与审计日志也由它保管。

语义查询
绑定SQL + Runner密钥
只读角色

第 1 阶段,共 4 阶段

调用方

按名称请求Metric,绝不编写SQL。

✗不持有任何数据仓库密钥。

接收

# a question, asked by metric name

传出

{ "metrics": ["revenue"],
  "filters": [{ "region": "EU" }] }
Authorization: Bearer <JWT or API key>

第 2 阶段,共 4 阶段

Engine

校验凭证,应用授权与行级规则,然后编写SQL。

✗永远看不到数据仓库密码。

接收

semantic query + credential

传出

SELECT SUM(o.amount) ... WHERE o.region = $1
+ runner key

第 3 阶段,共 4 阶段

Query Runner · 归您

以只读角色运行SQL,保管密码、终止开关和审计日志。

✓保管:密码、终止开关、审计日志。

接收

bound SQL + runner key

传出

native connection
(read-only role)

第 4 阶段,共 4 阶段

数据仓库 · 归您

向Runner返回数据行,只有Runner能够连接。

✓您的数据不会以副本形式离开您的一侧。

接收

read-only connection

传出

rows
(not kept by the engine)
1 / 4

✗engine直连数据仓库:不存在这样的路径。

为何如此设计

编写SQL与执行SQL是两件事

大多数语义层都握着您的数据仓库连接。我们把它一分为二,让面向智能体的那部分永远不持有密钥。

完整说明请见 engine从不直接连接您的数据仓库 →

  1. 01

    编译不等于执行

    如果编写SQL的进程同时持有密码,您就不得不把生产环境托付给它。

  2. 02

    智能体扩大了影响范围

    智能体数量多且始终在线。它们都不应离您的密码只有一步之遥。

  3. 03

    保管权留在数据仓库旁

    密码、紧急停止开关和审计日志都归Runner所有。

Query Runner

在这里编译,在那里执行

engine把SQL发送到数据仓库旁的Runner。暂停Runner,所有查询随即停止。engine没有其他入口。

datahashi engine

编译校验访问权限,应用行级规则,编写SQL。
SELECT SUM(o.amount) AS revenue
FROM analytics.orders o
WHERE o.region = $1

Query Runner · 归您

执行保管DSN,并在数据仓库旁运行SQL。
✓ 已连接 · 只读角色
运行中,查询正常流转。
  • 只有您的Runner会连接

    除此之外,没有任何东西会打开到数据仓库的连接。

  • 只读,由您决定

    使用由您创建、随时可撤销的只读角色。

  • 不复制任何数据

    不抽取、不同步。数据行只经过、不留存。Rollup需主动开启。

每一个请求

每次都按此顺序执行五项检查

调用方只能指定Metric名称,无法请求原始表或隐藏列。

  1. 1

    凭证

    提问者的身份来自经过验证的令牌或密钥。请求体无法冒充他人。

  2. 2

    访问模式

    每个密钥都固定为governed或explore,客户端无法切换。

  3. 3

    Metric与字段授权

    密钥只能看到您授权的Metric和字段。

  4. 4

    行规则

    行级安全在编写SQL之前就过滤每一次读取,租户之间永远看不到彼此的数据行。

  5. 5

    成本上限

    每个工作区的行数上限与成本上限,防止一个失控的调用方拖累其他人。

  6. 随后,SQL以绑定、参数化的形式发送到您的Runner。

凭证与审计

易于分发、也易于收回的密钥

  • 是Runner密钥,而不是密码

    我们保存的是您Runner的密钥。仅凭它无法打开您的数据仓库。

  • 智能体通过OAuth登录

    短期有效、限定范围的令牌。配置文件里不会留下长期有效的密钥。

  • 每个密钥一个负责人、一种模式

    任何密钥都可以在不停机的情况下撤销或轮换。

  • 每次查询都会计量

    每次查询都会记录扫描量,因此可以按团队或客户汇总成本。

给智能体答案,而不是访问权限

打开控制台,或了解Runner如何把密码留在您这一侧。