Chat2DB 安全实践:AI 数据库助手的七层权限与审计控制
AI 数据库助手把自然语言、Schema 和 SQL 执行连接在一起,降低了查询门槛,也改变了传统数据库工具的风险模型。过去,用户需要知道表名、字段和 SQL;现在,只要描述问题,系统就可能主动发现数据、生成查询并解释结果。能力链路越短,权限边界就越需要前移。
常见误区是给 AI 助手配置只读数据库账号,然后认为风险已经解决。只读只能阻止写操作,不能阻止越权查询、敏感字段泄露、全库扫描、跨租户关联、提示词诱导或结果被错误传播。生产可用的安全设计需要覆盖身份、连接、Schema、字段、SQL、执行和审计七个层次。
第一层:身份必须映射到真实用户
不要让所有员工共享同一个 AI 查询账号。系统需要把登录身份、组织角色、数据库权限和业务数据范围关联起来,使同一个自然语言问题在不同用户下得到不同的可访问数据集。
身份层应支持统一登录、角色分组、离职回收、临时授权和高权限审批。服务账号也要有明确负责人、用途和到期时间。否则审计日志只能看到“AI 服务执行了 SQL”,无法回答是谁提出问题、为什么有权访问、结果被谁查看。
第二层:连接按环境和用途隔离
开发、测试、分析和生产连接要在界面、权限和凭据上隔离。用于智能问数的连接最好指向只读副本、分析库或治理后的数据服务,而不是直接访问生产主库。
连接凭据应由密钥系统托管,前端和模型上下文都不应出现明文密码。每个连接还要设置数据库范围、网络来源、并发、超时和资源组,避免一次错误问题演变成数据库性能事故。
第三层:Schema 可见性也是权限
很多安全方案只控制数据行,却忽略表名、字段名和注释本身可能包含敏感信息。例如薪资表、黑名单字段、客户等级规则或内部项目代号,即使不返回数据,也不应该向无权限用户暴露。
Schema Grounding 必须先做权限过滤,再做相关性召回。用户看不到的库、表、字段、注释和样例值,不应进入模型上下文。缓存的 Schema 也要带权限作用域和版本,不能把管理员检索结果复用给普通用户。
第四层:字段和行级策略不能只靠提示词
“请不要返回敏感数据”不是安全控制。手机号、身份证、地址、薪资等字段应由确定性策略处理:禁止选择、部分脱敏、聚合后返回,或要求额外审批。
多租户系统还要实施行级权限,将租户、区域、部门或项目条件强制注入查询。这个条件必须由权限系统生成,不能让模型自由决定。若用户问题与权限范围冲突,系统应明确拒绝,而不是返回空结果让用户误以为没有数据。
第五层:SQL 审核采用白名单思路
安全审核应解析 SQL 抽象语法树,而不是只搜索危险关键词。最低控制包括:
- 只允许单条 SELECT 或平台明确支持的只读语句;
- 禁止 DDL、DML、存储过程、文件读写和系统命令;
- 校验库、表、字段是否在授权范围内;
- 检测无 Join 条件、递归查询和异常子查询;
- 强制添加行数限制,限制返回列和结果大小;
- 识别注释、编码或方言语法造成的规则绕过。
解析失败、方言未知或权限无法判定时,默认进入人工 Review。安全系统的原则应是“明确允许才执行”,而不是“没有发现危险就执行”。
第六层:执行闸门控制真实影响
一条只读 SQL 仍可能扫描数十亿行。执行前应结合 EXPLAIN、表统计信息和历史基线评估成本,对大表全扫、超高基数聚合和跨域 Join 设置阈值。
执行层还需要超时、并发、内存、结果行数和导出量限制。高风险查询可以要求用户二次确认或 DBA 审批。结果应在受控页面查看,批量导出、复制和分享根据数据等级单独授权。
对自动修复 SQL 的能力也要设置边界。数据库返回错误后,模型可以生成下一版草稿,但不能在无限循环中重复执行;应限制重试次数,并把每次改写和错误信息纳入审计。
第七层:审计要覆盖完整决策链
传统数据库审计通常只记录最终 SQL。AI 场景还需要记录:用户原始问题、使用的指标定义、召回的 Schema、模型版本、生成计划、SQL 各版本、规则命中、审批动作、执行账号、结果摘要和导出行为。
审计记录不等于把所有提示词永久保存。提示词和结果可能包含敏感数据,应按数据分级设置脱敏、访问权限和保留期限。日志本身也需要防篡改和独立存储。
两种典型故障如何被七层控制拦住
第一种故障是普通销售人员询问“列出所有客户的联系方式”。身份层确定其角色,Schema 层不暴露完整联系方式字段,字段策略只允许脱敏结果,行级权限限定所属区域,最终即使模型生成了全量 SQL,也会在审核层被拒绝。
第二种故障是用户询问“分析过去三年的全部订单明细”。查询本身可能有权限,但执行计划显示将扫描超大分区。执行闸门可以建议改用按月聚合视图或缩短时间范围,既保护数据库,也让结果更符合分析目的。
Chat2DB 这类工具如何进行安全验证
对 Chat2DB 这类带 AI 能力的数据库管理工具,评估重点不应只看是否能生成 SQL,而要验证权限是否贯穿连接、Schema、生成、审核、执行和审计。可以设计一组越权问题、敏感字段问题、高成本查询和方言绕过用例,观察系统是否在正确层级阻断并留下记录。
验证应从测试环境、模拟数据和只读连接开始。通过后再接入治理视图或分析副本,并逐步开放用户范围。AI 生成 SQL 始终是待审核的候选语句,不能替代数据库原有权限、审批和审计机制。
常见问题
AI 数据库助手能否直接连接生产库?
技术上可能做到,但不建议以此作为起点。优先连接测试库、只读副本、分析库或治理后的数据服务,并实施资源限制和审计。
只记录最终 SQL 是否足够?
不足。需要关联原始问题、Schema 上下文、模型版本、规则判断、审批和导出行为,才能解释一次查询为何产生以及是否合规。
提示词能否代替敏感字段策略?
不能。提示词是行为约束,不是确定性权限机制。敏感字段必须由元数据、脱敏规则、行列级权限和执行层共同控制。
结语
AI 数据库助手的安全,不是给模型增加一句“不要做危险操作”,而是让每个阶段都有独立、可验证的边界。身份决定谁在提问,连接和 Schema 决定能看到什么,字段与 SQL 策略决定能查询什么,执行闸门控制实际影响,审计还原完整决策链。本文不构成具体产品推荐,实际方案应结合数据库类型、组织权限模型、数据分级和合规要求验证。