先说结论
Text-to-SQL 应把自然语言解释、查询生成与数据库执行分开。服务端固定用户权限和指标定义,验证 SQL 结构、允许对象与资源预算,再以受限只读身份执行。查询能运行不代表指标正确,SELECT 也不自动代表无副作用或无泄露。
读完你会得到
- 指标先有业务定义,再允许生成查询。
- 权限在执行服务与数据库落实,不靠提示词限制。
- 正确性、访问边界和运行成本分别验收。
业务方问“上个月收入是多少”,模型可能给出一条能执行的 SQL,但把下单额当成已收款额,或者把两张明细表连接后重复累加。接入数据库的目标是得到可复核的业务答案,不能只验收是否生成了一段查询。
配套资料与延伸阅读
- 给 AI 接业务数据前,怎样写清主键、状态和数据合同(阅读)
继续阅读相关方法与边界。
- RAG 评测怎样定位问题:把检索、依据和答案完整性分开看(阅读)
继续阅读相关方法与边界。
- 企业 AI / FDE 服务(了解)
带上一个指标定义、脱敏数据样本和可见范围,可用于讨论企业数据查询的最小试点。
先确定一个指标的业务含义
| 项目 | 教学约定 | 需确认的例外 |
|---|---|---|
| 计入事件 | 已完成收款的交易 | 退款按何时发生抵扣 |
| 时间窗口 | 按业务时区的上月完整区间 | 跨时区与月底边界 |
| 对象范围 | 当前用户获准查看的部门 | 调岗后历史访问 |
| 金额单位 | 最小货币单位与币种分别保存 | 不直接相加不同币种 |
| 去重键 | 同一支付事件只计一次 | 订单多明细、部分支付 |
这些约定是示例,财务部门需要确认实际口径。没有统一收入定义时先列出可能解释,让用户选择;不能随机取一个字段再在自然语言里称它为收入。使用的数据日期与指标版本也应写入结果。
模型只获取受控的数据说明
给模型的数据目录包括获准查询的视图、字段含义、主键、关联方式和指标示例。避免一次暴露全部库结构,更不把真实密钥、用户令牌或未经许可的明细放入提示。业务系统认证后的部门和租户信息由服务端注入,不能从用户聊天里认领。
BigQuery 的官方指南提供自然语言生成、解释和改写 SQL 的能力,同时要求配置相应角色。该产品能力不是查询正确的证明。以下执行网关设计是本站建议,并非声明每个数据库或工具已经内置这些防护。
把候选 SQL 当作需要检验的输入
使用与实际数据库方言匹配的解析器,验证只包含允许的查询结构、表、列、函数和参数。拒绝多语句、写入、未经允许的动态执行和导出路径。字符串搜索 SELECT 不足以完成校验,合法查询里也可能调用带副作用或外部访问的函数。
可先生成业务查询计划:时间区间、分组维度、筛选范围和关联键,经规则核验后再生成参数化 SQL。模型生成的连接条件也要检查,禁止对高基数明细直接相乘后求和。用户补充范围后重新生成计划,不能在历史查询上机械追加片段。
在数据库落实可见行与最小权限
只读账号只允许所需视图与函数,不持有建表、导出、管理和写权限。需要租户或部门隔离时在可信执行层与数据库策略落实;连接池复用前清理授权上下文,防止上个用户的会话状态沿用。
PostgreSQL 文档说明行级安全可以按用户限制可见行,但超级用户和 BYPASSRLS 角色会绕过,表所有者通常也会绕过。不要用这些身份测试通过后就认为普通用户隔离有效。涉及视图与函数时,还要按实际版本核对执行身份及权限语义。
视图或 SECURITY DEFINER 函数可能以所有者身份访问数据。用实际应用角色、通过同一个视图或函数执行跨租户反例;直接表查询被隔离,不证明间接路径也被隔离。
汇总只覆盖当前身份可见的行与获准指标、维度,不为“全公司总数”改用更大权限账号。确需独立汇总结果时,使用单独授权的受控指标接口,并按其披露规则验收。
本节依据: [2] PostgreSQL
查询前后都限制资源与结果
限制语句时间、扫描或计算预算、返回行数、并发与允许执行的时段。LIMIT 主要限制结果行数,不保证聚合扫描很小。云数仓可利用查询计划和成本预估,具体能力以实际产品为准;预估通过后仍要有执行时的上限。
回传模型的数据应遵循字段最小化和脱敏规则。高敏明细不要因为 SQL 成功就展示。零行结果要区分权限范围内确实无匹配、条件未确认和资料未同步。错误提示保留诊断编号,面向用户避免暴露表名、凭证或内部连接地址。
用小样本验证业务结果和越权边界
收入问题的教学验收
- 准备参考数据
用脱敏或虚构记录包含部分付款、退款、多币种和月底交易。
产出:参考数据版本 - 写出参考答案
由业务口径和独立受控查询计算结果,记录中间汇总。
产出:参考 SQL 与金额 - 制造误差
加入同名部门、重复明细、模糊时间和另一个租户记录。
产出:不能遗漏的失败题 - 比较执行
分别检查计划、可见行、最终结果与资源消耗。
产出:每题证据和判定
再测试用户要求“忽略权限看全公司”、让模型调用导出函数、超大时间区间和多轮修改部门。所有拒绝都应在执行前或数据库权限层生效,而不是答案生成后删去敏感文字。也要检查拒绝后不会自动改用权限更大的备用账号。
上线范围从固定指标开始
先开放少数稳定指标与明确维度,记录每次问题、指标版本、执行身份、查询指纹、结果时间和失败原因。日志脱敏并限制查阅,不把原始结果无限保存。错误频繁的指标暂停开放,修复规则后用同一参考题回放。
不要一开始允许模型查询任意业务表。新增指标应同时更新目录、权限、预算和测试集;业务指标定义改变时保留版本,解释旧答案为什么不同。读者能复算且能发现权限边界,才算可用的数据库问答。
常见问题
只用数据库只读账号就够安全吗?
不够。还要限制可读对象、可见行、允许函数、结果字段与资源预算;只读查询仍可能泄露数据或消耗大量资源。
能执行的 SQL 为什么还会答错?
可能选错指标、时间、币种或关联方式。需要参考数据与独立答案检查业务结果,语法与执行成功只能证明查询可运行。
资料来源与核对说明
文章中的行业定义与技术方法尽量引用官方或标准组织资料;表格、清单和决策框架是基于这些资料形成的编辑性整理,不代表来源机构对本站服务的背书。
- Write queries with Gemini assistanceGoogle Cloud BigQuery
核验于2026-10-09。官方说明自然语言生成和解释SQL及所需角色;可执行不等于业务正确。本站执行网关与题集为教学设计,不声称产品默认具备全部防护。
- PostgreSQL 18: Row Security PoliciesPostgreSQL
核验于2026-10-09,当前页面为PostgreSQL 18。官方说明行安全、默认拒绝与超级用户、BYPASSRLS、所有者绕过条件;视图与函数需核对实际执行身份。
带上流程、样例和目标,添加企业微信沟通。先确定项目范围与验收方式,再安排实施。


