指南●●●5 分钟 · +50 XP
智能体与数据库:安全而非冒险
拥有数据库访问权限的智能体,几秒钟内造成的破坏可能比人几小时造成的还多——先只读能保护你免受此害。
为什么数据库特别危险
智能体写错代码,产生的是一个 bug。智能体执行了错误的数据库查询,可能会删除或篡改真实数据——而且往往无法撤销。因此,数据库适用的规则要比普通代码严格得多。
先只读
用于调研和调试的智能体,只给它只读权限。一个只能执行 SELECT 查询的智能体,可以帮你理解数据和表结构,但不会破坏任何东西。写权限只有在真正需要的时候才添加——而且要有限制。
迁移纪律
结构变更(迁移)绝不能直接作用于正在运行的数据库。它们应该通过版本化的迁移文件进行,经过检查、测试之后才能应用。智能体可以提出并编写一个迁移方案——但执行它应该通过一个受控的流程,而不是一条随意的 Bash 命令。
生产环境绝不能没有关卡
访问生产数据库始终需要一个明确的授权步骤:一个确认的人、一个单独的访问令牌,或者两者兼有。智能体绝不应该能够自动从预发布环境切换到生产环境。
别忘了备份
在执行任何写操作之前,不管多小:必须存在一个最新的备份。这是在其他一切都失效时的最后一道保障。
示例
示例配置:智能体通过一个名为 `readonly_agent` 的数据库用户获得访问权限,该用户在预发布数据库上只有 SELECT 权限。对于结构变更,智能体编写一个迁移文件(比如借助某个迁移工具),这个文件只有在经过人工审查后,才会通过常规流水线被应用——绝不会直接用 Bash 命令作用于生产环境。
小测验
智能体访问数据库最安全的基本原则是什么?
来源
- Claude Code Doku: Permissions ↗ code.claude.com
- GitHub: modelcontextprotocol/servers ↗ github.com
- Claude Code Doku: Hooks Guide ↗ code.claude.com
- PostgreSQL Doku: Backup and Restore ↗ www.postgresql.org