n8n 数据库智能体怎么搭?用只读 Postgres 查询并限制参数

用 n8n 连接权限受限的 Postgres 查询工作流,只暴露允许的参数和结果字段,避免智能体任意执行 SQL。

数据库智能体最重要的设计不是让模型自由写 SQL,而是把可执行范围缩成少量审核过的查询。n8n 可以让 AI Agent 调用子工作流工具,子工作流再用 Postgres 节点执行固定 SQL 和参数绑定。 示例只演示订单状态查询,未连接你的数据库实测;数据库权限、租户隔离、隐私字段和审计必须由数据库及服务端强制执行,提示词不能承担安全边界。

本篇验收要点:数据库凭证使用只能 SELECT 指定视图的账号,工具内部执行固定 SQL,不把模型输出直接拼成查询。 智能体只可传入订单号和租户标识,子工作流校验格式后用 Query Parameters 绑定,结果只返回批准的字段。

n8n 数据库智能体怎么搭?用只读 Postgres 查询并限制参数

开始前准备

  • 一个专用只读数据库账号
  • 只含必要列的视图或查询
  • 5 条允许查询和拒绝查询的测试样例
  • 可定位租户或用户归属的可信字段

按顺序搭建

  1. 在 Postgres 创建或选择只读角色,只授予目标 schema 或视图的 SELECT 权限;用该账号手工验证 UPDATE、DELETE 必须失败。
  2. 新建子工作流,输入字段固定为 tenant_id 和 order_no。先检查非空、长度和格式,tenant_id 必须来自已认证的上游,不能让聊天用户自行声明。
  3. 加入 Postgres 节点,操作选择执行查询,SQL 保持固定,并用 Query Parameters 绑定值。限制返回行数,字段只保留订单号、状态和更新时间。
  4. 在主工作流把子工作流作为工具连接 AI Agent。工具描述明确“只查单个订单状态”,不要描述成“查询数据库”。
  5. 用存在、不存在、跨租户、注入字符串和超长参数五类用例执行,核对结果与数据库审计日志。

可复制的最小示例

固定查询的形状可以这样设计,参数占位方式以当前 Postgres 节点文档为准:

SELECT order_no, status, updated_at
FROM agent_order_status
WHERE tenant_id = $1 AND order_no = $2
LIMIT 1;

Query Parameters: {{ $json.tenant_id }}, {{ $json.order_no }}

怎样验收结果

验证标准是合法订单只返回批准的三列,跨租户查询和异常参数没有数据或被拒绝,数据库账号无法写入,并且工具的一次调用能在 n8n 与数据库日志中关联。

  • 只读账号执行 UPDATE 得到权限错误
  • 订单号中的引号不会改变 SQL 结构
  • 不同租户的相同订单号不会串数据
  • 没有命中时返回明确的未找到状态而非模型补写

常见失败与处理

  • Agent 生成整段 SQL:取消自由 SQL 输入,改为固定子工作流。
  • 参数表达式被当成文本:在节点执行数据中检查实际 Query Parameters。
  • 返回敏感列:建立专用视图,并在工作流输出层再次挑选允许字段。

读者下一步是先用只读账号和固定 tenant_id 在 Postgres 节点直接跑通一条订单查询,再把它封装成 AI Agent 工具。

相关问答

只在提示词里写“禁止删除”够吗?

不够。模型可能误解或被提示注入,数据库账号本身必须没有写权限。

能让智能体查询任意报表吗?

应为每类报表建立独立、参数明确的工具;不要把通用 SQL 控制台暴露给模型。

官方资料与适用边界

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32415.html

赞 (0)
AI小管家的头像AI小管家
n8n 智能体执行写操作前怎么人工确认?为工具调用增加审批
上一篇 1小时前
n8n 怎么整理多篇资料写综述?分篇摘要、合并证据再生成提纲
下一篇 1小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部