云选科普

Data Agent 如何安全接入数据库:语义网关架构与落地路径

面向需要把数据库接入多个 AI Agent 的开发者和小团队,梳理语义网关、MCP、权限隔离与受控工具的组合方式,给出从只读查询到轻应用的云上落地路径。

Data Agent 上云落地时,真正难的通常不是把自然语言转成一条 SQL,而是让数据能力能被不同宿主复用,同时把权限、审计和故障边界放在数据库之外统一管理。与其为每个场景单独做一个“问数应用”,更稳妥的思路是把数据库封装成带业务语义和安全策略的网关,再通过标准协议交给已有的 Agent 使用。

为什么单体式问数应用容易失效

一个从界面、对话编排、Text-to-SQL 到图表展示全部自建的 Data Agent,看起来功能完整,但会同时承担三类成本。

首先是入口成本。业务人员已经在协同工具、代码助手或企业内部工作台中工作,另起一个问数站点会形成新的信息孤岛。其次是能力边界:只读查询能回答“发生了什么”,却很难继续完成改派工单、标记对账或更新业务状态等动作。最后是维护成本,表结构、指标口径、权限规则和提示词都在变化,封闭应用必须自己维护一整套上下文。

NL2SQL 也不是万能解法。让模型直接访问生产库,可能出现表选错、字段含义误解、范围条件遗漏或生成高成本查询等问题;完全依赖固定指标 DSL,又会牺牲临时分析能力。更实际的方向是把自由查询限制在明确的数据边界内,并为高风险操作提供预定义工具。

数据库语义网关应该负责什么

语义网关可以放在 Agent 宿主和数据库之间,承担四项职责:

  1. 语义整理:将表、字段、枚举值、业务术语、指标定义和示例查询整理成可检索的上下文。模型先获得与问题相关的业务定义,再生成查询,减少把“已生效”“净收入”等业务词误映射到错误字段的概率。
  2. 协议适配:向上暴露统一的工具和资源接口,让代码助手、桌面助手、企业聊天机器人或自研 Agent 复用同一套数据能力。MCP 的 Streamable HTTP 适合远程部署场景,但协议接入本身不等于完成鉴权,服务端仍需校验身份、权限和请求来源。
  3. 执行隔离:查询连接、连接池、超时、限流、审计和错误处理集中放在网关,不把数据库凭据散落到每台客户端。对于分析类请求,可使用只读账号、只读副本、视图或固定查询模板。
  4. 动作控制:把写入操作拆成有明确参数的工具,例如“新增记账”“修改工单状态”,而不是开放任意 UPDATE 或 DELETE。工具应在服务端完成参数校验、租户绑定、影响行数检查和幂等控制。

从问数到轻应用的实现路径

以一个多用户记账服务为例,可以按下面的顺序落地。

先划分数据和动作

将账户、分类、流水等核心实体定义清楚,补齐字段注释、枚举含义和租户关系。查询工具只提供必要的聚合和明细能力;写入工具则分别对应记账、修改和删除,并为每个动作定义必填参数、允许范围和失败返回。

再建立语义检索层

把数据字典、业务术语、常用查询样例和权限说明建立索引。检索结果不是最终答案,而是提供给 Agent 的受控上下文。对于高价值指标,应同时保存口径、时间范围、过滤条件和反例,避免模型只记住字段名却忽略业务定义。

最后接入不同宿主

网关提供统一 MCP 服务后,不同宿主可以共享工具定义,但每个用户仍应使用独立身份和最小权限。比如,同一套服务可以被企业聊天机器人调用查询工具,也可以被代码助手调用开发库的只读工具;权限由网关按用户、组织、数据域和动作类型判定,而不是由提示词约束。

安全边界不能靠模型自觉

数据库 Agent 的关键风险是“模型生成了看似合理、实际越权的请求”。因此,安全策略至少应包括:

  • 参数化查询:用户输入和模型提取的参数不能直接拼接成 SQL;查询结构应由模板、预编译语句或允许列表控制。
  • 最小权限:查询、写入、管理操作使用不同身份;能访问视图就不要直接授予底表权限,能执行固定存储过程就不要开放任意语句。
  • 行级范围约束:租户、部门或用户范围由服务端从令牌身份注入,不能让模型自行填写。
  • 资源保护:设置查询超时、最大返回行数、分页、并发上限和大表访问告警,避免一次自然语言请求拖垮生产库。
  • 可审计和可回滚:记录调用者、宿主、工具、参数摘要、SQL 模板、影响行数和结果状态;写操作尽量支持幂等键、审批或撤销。

这些控制并不能让模型“永远正确”,但可以把错误限制在可观测、可拒绝和可恢复的范围内。

适合哪些团队,如何从云上开始

这种架构适合已经有多个数据库或多个 Agent 入口、又不希望重复建设数据连接层的团队。小团队不必一开始就搭建复杂的指标平台,可以先选一组低风险只读场景,在云服务器上部署网关,数据库放在受控网络中,通过私网访问;再逐步加入数据字典、审计和只读副本。

如果需要写入能力,应先从单一业务对象和少量动作开始,明确权限矩阵、超时策略和人工兜底。等调用轨迹和失败样本积累后,再扩展语义覆盖面。判断方案是否值得继续,不应只看 Demo 是否能生成 SQL,而应观察查询正确率、拒绝越权请求的能力、平均响应时间、数据库负载和故障恢复时间。

结语

Data Agent 不一定要以一个独立聊天窗口存在。对多数上云团队,更可复用的形态是“宿主 Agent + 数据库语义网关 + 受控工具 + 可审计执行层”:宿主负责交互,网关负责语义和权限,数据库负责持久化。这样既保留自然语言分析的灵活性,也避免把生产数据和高风险写操作直接交给模型。

继续浏览

还想继续看,可以再看这些文章

适合想继续在同一主题下横向阅读、对比不同切入角度的用户。