03安全与信任
您的数据仓库密码绝不会传到我们的engine。
SQL由我们编写,由您网络中的Query 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)
✗engine直连数据仓库:不存在这样的路径。
- 01
编译不等于执行
如果编写SQL的进程同时持有密码,您就不得不把生产环境托付给它。
- 02
智能体扩大了影响范围
智能体数量多且始终在线。它们都不应离您的密码只有一步之遥。
- 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
凭证
提问者的身份来自经过验证的令牌或密钥。请求体无法冒充他人。
- 2
访问模式
每个密钥都固定为governed或explore,客户端无法切换。
- 3
Metric与字段授权
密钥只能看到您授权的Metric和字段。
- 4
行规则
行级安全在编写SQL之前就过滤每一次读取,租户之间永远看不到彼此的数据行。
- 5
成本上限
每个工作区的行数上限与成本上限,防止一个失控的调用方拖累其他人。
随后,SQL以绑定、参数化的形式发送到您的Runner。
凭证与审计
易于分发、也易于收回的密钥
是Runner密钥,而不是密码
我们保存的是您Runner的密钥。仅凭它无法打开您的数据仓库。
智能体通过OAuth登录
短期有效、限定范围的令牌。配置文件里不会留下长期有效的密钥。
每个密钥一个负责人、一种模式
任何密钥都可以在不停机的情况下撤销或轮换。
每次查询都会计量
每次查询都会记录扫描量,因此可以按团队或客户汇总成本。