生产环境与写入安全
DBX 将写入安全拆成多个相互独立的层级:数据库账号权限、连接只读、生产环境保护、危险操作确认、AI 执行规则和 MCP 策略。它们共同降低误操作风险,但不会替代数据库自身的权限、审计、备份和变更审批。
保护层级
| 层级 | 作用 | 是否可以被上层工具绕过 |
|---|---|---|
| 数据库账号权限 | 由数据库服务器最终决定允许读取、写入和管理哪些对象 | 不可以 |
| 连接只读 | 在 DBX 核心查询路径阻止可识别的写入,并禁用多个修改入口 | AI、CLI、MCP 和普通界面都不能放宽 |
| 生产环境保护 | 对整个连接或指定数据库启用生产标记,写入时要求每次重新确认 | 普通确认和 Agent 授权不能永久跳过 |
| 危险 SQL/命令确认 | 对 DDL、无条件修改、Redis 高风险命令等额外提示或阻止 | 取决于对应设置,但不会放宽只读或生产保护 |
| MCP 全局策略 | 用连接 allowlist 和三档执行权限约束所有 MCP 客户端 | 客户端环境变量不能扩大已保存的中央策略 |
配置只读连接
创建或编辑连接时,启用只读连接。保存后,DBX 会把该标记带入核心查询执行和数据库专属操作中。
只读连接适合:
- 生产查询账号和只允许排查的共享连接
- 只需要浏览 Schema、表数据、文档、键或监控指标的场景
- 提供给 CLI、MCP 或 AI 使用,但不希望产生任何数据修改的连接
只读保护不只是隐藏按钮。对于可识别的 SQL 写入,DBX 会在核心执行路径拒绝请求;MCP、MongoDB、Redis、消息队列和多个专项工作台也会重新检查连接只读状态。
配置生产环境保护
打开连接设置
新建或编辑连接,在连接设置中找到生产环境。
启用保护
打开启用生产环境保护。单数据库连接会直接保护整个连接;支持多个数据库的连接可以选择保护全部数据库或指定数据库。
检查保护范围
如果只保护部分数据库,确认列表中包含实际生产库。数据库列表变化后应重新检查配置。
验证写入提示
在测试语句或测试环境中确认生产水印和写入确认对话框符合预期,再把同样的设置用于真实连接。
生产保护启用后,工作区会显示生产环境提示。DBX 检测到当前连接、当前数据库或 SQL 显式目标属于生产范围且语句会修改数据或结构时,会打开统一确认对话框。
每次生产写入都需要新的明确决定。确认状态不会保存,也不会因为关闭普通危险 SQL 提示而被跳过。
不同入口如何处理写入
| 入口 | 只读连接 | 生产环境保护 |
|---|---|---|
| SQL 编辑器 | 核心执行路径拒绝可识别写入 | 写入前显示目标连接、数据库、入口和 SQL,逐次确认 |
| 数据表格 | 禁用或拒绝保存、删除等修改 | 保存行、删除行等操作进入统一生产确认 |
| 表结构与对象操作 | 隐藏或禁用可识别的修改入口 | DDL、对象源码保存、数据库管理等进入统一确认 |
| Schema 对比、SQL 文件、数据生成 | 目标只读时不允许写入 | 执行生成 SQL 或脚本前进入统一确认 |
| Redis、MongoDB、etcd、消息队列等 | 按系统命令和操作重新检查只读 | 写入入口继续受生产保护和专项危险操作规则约束 |
| AI Ask | 不执行 SQL | 不执行 SQL |
| AI Agent | 不能绕过只读 | 生产 SQL 返回编辑器,由用户检查并手动执行 |
| MCP | 连接只读是所有权限模式的上限 | 生产保护始终是 MCP 策略的上限 |
AI 的执行边界
Ask 模式
Ask 模式用于生成、解释、优化或修复 SQL。模型返回的 SQL 不会自动执行,可以复制或放入编辑器后再检查。
Agent 模式
Agent 可以根据用户意图执行读取操作,并在满足策略时处理有限写入。即使用户对一次普通写入作出确认,授权也只对当前目标和当前操作生效。
当活动数据库处于生产保护范围时,Agent 不会获得自主写入权限。DBX 会把建议 SQL 放回编辑器,并要求用户在生产写入对话框中手动确认。
更多 SQL 分类和模式差异见 AI 助手。
MCP 权限
DBX 在设置 → MCP中保存一份统一策略,所有 MCP 客户端请求都重新读取这份策略。
| 模式 | 允许的代表性操作 |
|---|---|
| 只读 | 查询、元数据读取、列出连接和对象 |
| 数据读写 | 普通插入、带有效过滤条件的更新/删除、范围明确的 MongoDB 修改、普通 Redis 写入和连接管理 |
| 完全访问 | 额外允许大范围更新/删除、DDL、TRUNCATE、清空数据和高风险管理命令 |
除了执行模式,还应配置允许的连接。没有进入 allowlist 的连接不会暴露给 MCP。无论选择哪一档,以下限制始终有效:
- 连接只读
- 生产环境保护
- 数据库账号权限
- 已保存的连接 allowlist
完整配置、客户端示例和兼容行为见 MCP 集成。
危险 SQL 与专项命令
生产保护之外,DBX 还会对部分高风险操作应用额外规则:
- 查询编辑器可以在执行危险 SQL 前显示确认对话框
- Redis 可以阻止或确认高风险命令
- 数据表格、表结构、Schema 对比和数据生成会尽量先展示 SQL
- MCP 的“数据读写”会拒绝无有效范围的更新/删除、DDL、
TRUNCATE和无法可靠分类的高风险请求 - 跨引擎传输和批量导入需要单独检查类型映射、目标表和清空选项
推荐配置
| 场景 | 建议 |
|---|---|
| 本地开发库 | 使用普通连接;保留危险 SQL 确认;需要自动化时给 MCP“数据读写”而非“完全访问” |
| 测试/预发 | 设置明显的连接名称和颜色;开启危险 SQL 确认;限制 MCP allowlist |
| 生产只查 | 使用数据库只读账号,同时启用 DBX 只读和生产保护;MCP 使用“只读” |
| 生产变更 | 使用独立最小权限账号;启用生产保护;先预览 SQL;保留备份和审批记录;避免给 MCP“完全访问” |
| 共享 Docker | 设置登录密码、持久化 /app/data、限制网络访问,并为每个数据库使用独立账号权限 |
已知边界
- SQL 和命令分类采用保守策略,但无法代替数据库服务器权限。
- 存储过程、厂商扩展语法或动态 SQL 的真实影响范围可能无法仅通过文本完全判断。
- 生产保护关注 DBX 内发起的操作;其他客户端仍需要独立权限和审计。
- 配置同步和导出用于迁移 DBX 配置,不是业务数据库备份。