如何为 AI Agent 提供安全的数据库访问权限

给 AI Agent 访问生产数据库的权限具有巨大的风险。仅使用只读用户是不够的。Agent 无法判断意图或数据的敏感性。如果你授予写权限,提示词注入(prompt injection)可能会让一个原本有帮助的 Agent 变成具有破坏性的 Agent。

你需要两层保护来确保数据安全。

第一层:静态数据库控制

这些是数据库引擎内部的基础设置。请首先使用这些设置:

  • 最小权限角色:为 Agent 创建一个特定的角色。绝不要使用管理员账号。
  • 只读副本:将分析型 Agent 指向副本,以免它们拖慢生产环境。
  • 行级安全性 (Row-level security):使用策略来限制 Agent 可以查看的数据。
  • 语句超时:防止失控的查询导致服务器崩溃。
  • 白名单:将连接限制在特定的主机上。

第二层:运行时控制平面 (The Runtime Control Plane)

静态控制仅检查身份。它们无法阻止 Agent 窃取数据或执行恶意指令。你需要一个位于 Agent 和数据库之间的控制平面。

这一层必须完成四件事:

  • 分类:将每个查询标记为读取、写入或模式(schema)变更。
  • 执行默认拒绝:除非你明确允许,否则拦截所有操作。
  • 拦截高风险操作:要求人工审批批量删除或模式变更。
  • 记录一切:保留每项操作和每次审批的不可篡改日志。

为什么这很重要:

如果你将规则放在提示词(prompt)中,Agent 可能会忽略它们。控制平面存在于 Agent 的上下文之外。它看到的是实际的查询,而不是 Agent 的计划。这可以保护你免受提示词注入的攻击。

使用此清单来实现安全访问:

  • 每个 Agent 使用专用角色。
  • 使用只读副本进行探索。
  • 实现行级安全性。
  • 设置语句超时。
  • 将所有流量路由通过控制平面。
  • 使用默认拒绝策略。
  • 高风险任务需要人工审批。
  • 保留不可篡改的审计日志。

静态控制完成其职责,而控制平面完成剩下的工作。两者缺一不可。

Source: https://dev.to/maxime_dalessandro_28171d/how-to-give-an-ai-agent-safe-access-to-your-production-database-1ami

Optional learning community: https://t.me/GyaanSetuAi