01
身份:独立只读账号
02
范围:库表列允许清单
03
语句:解析与危险操作阻断
04
资源:扫描、并发和超时
05
审计:问题、查询、结果与版本
结论:数据库权限是最后防线
模型可能受歧义、提示注入或生成错误影响,因此不能把“不要修改数据”只写在系统提示词里。连接账号本身应没有写入、建表、授权和管理权限。
生产源优先通过只读副本、受控视图或查询服务访问,减少分析负载和原始敏感字段暴露。
执行前解析而不是只搜关键词
关键词拦截容易被注释、方言和嵌套语句绕过。使用 SQL 解析器检查语句类型、目标对象、函数、子查询和多语句,并拒绝无法安全解析的请求。
同时限制可查询的库、表、列和关系路径;不存在于允许清单的对象不应自动开放。
控制资源和结果规模
设置扫描量、返回行数、执行时间、并发和成本上限,先执行估算或解释计划。超限时建议缩小时间或使用聚合,而不是让查询拖慢业务系统。
对明细导出和大范围查询设置单独审批,避免一个合法问题造成不必要的数据复制。
缓存也必须继承权限
缓存键包含用户、组织、项目、数据范围、语义和策略版本。权限撤销后使相关缓存和分享失效。
审计记录问题、生成查询、执行身份、数据截止、策略命中和结果摘要,但避免在日志中复制完整敏感数据。
用攻击性查询验收护栏
测试写入、删除、系统表、超大扫描、跨库、注释绕过、嵌套危险函数和权限变化后的缓存。确认数据库与执行层都能阻断。
AskTable.ai 的数据连接与权限管理可进入这套验证;具体数据库方言、查询代理、资源限制和审计字段需按部署确认。
