• 请不要在回答技术问题时复制粘贴 AI 生成的内容
albin504
V2EX  ›  程序员

如何让 AI 安全可控地查询生产库数据?

  •  
  •   albin504 · 2 days ago · 1894 views

    在大公司办公网一般是不能直连生产数据库的,公司一般会搞一个数据库查询网站(简称 DMS 系统),开通权限后程序员可以在系统中执行 sql 查数据。 在 AI Coding 背景下,这种方式效率很低。纯手工拼写 sql ,涉及到分库分表、多步查询、数据分析的场景下非常低效。

    我在想:是不是有安全可控的方案,比如搞一个数据库 mcp ,然后设置防护栏(如最大执行时间不超过 2s )、并对数据做脱敏的情况下,让 codex 这样的工具可以通过 mcp 执行数据查询。

    最终效果:用 codex 打开代码仓库,下发指令“帮我查询用户 xxx 的什么数据”,AI 会基于代码生成 sql ,并调用 mcp 执行查询。 对于常用查询也可以封装一些 skills 加速执行速度。

    不知道是否可行? 业界是如何解决之类问题的?

    23 replies    2026-07-29 14:00:32 +08:00
    samIIsun
        1
    samIIsun  
       2 days ago
    开源的 archery+自开发了 mcp
    zhongzhaoguo
        2
    zhongzhaoguo  
       2 days ago
    Skills+MCP ,Skills 描述 MCP 的接口,如何获取表关系,MCP 接收执行,加一些权限限制。
    AutumnVerse
        3
    AutumnVerse  
       2 days ago via iPhone
    我们线上数据也不能直接访问。但是我们有专门的后台,有单独的审计。因此可以跟 ai 说,数据库后台网址是 xxxx ,你用 chrome 打开查询 xxx 数据。

    ai 操作 chrome 打开后台地址,登录信息是用的研发自己的,危险 sql 没 dba 和研发 leader 审批他也执行不了
    refear99
        4
    refear99  
       2 days ago
    测试环境走不通流程,或者缺数据,说明是研发流程的问题,不是 ai 的问题;就好像有的公司,代码本地跑不起来,比需要去某个公共的远程开发服务器跑一样,本质上是懒
    mouseman
        5
    mouseman  
       2 days ago
    skill 限制+只读权限账号
    lujiaosama
        6
    lujiaosama  
       2 days ago
    只读权限账号好像也能搞出大件事出来吧
    AkaGhost
        7
    AkaGhost  
       2 days ago
    只要 AI 能看到,它就敢给你都抖出去。
    只要 AI 能修改,它就敢给你全都删改。

    你只能外部限制,别指望 ai 自己有底线。
    justseemore
        8
    justseemore  
       2 days ago
    6 生产数据扔 ai 数据泄露 就等着追责吧
    kasusa
        9
    kasusa  
       2 days ago
    让 AI 生成查询语句,然后你自己来查。
    kasusa
        10
    kasusa  
       2 days ago
    https://github.com/MingoZacwu/DataNexa 前段时间收藏了这个 MCP 好像符合你要求。
    yinmin
        11
    yinmin  
       2 days ago via iPhone
    建议让 ai 生成 sql ,然后自己用 sql 取数据。

    先把 create_table.sql 和 create_view.sql 保存在项目目录,然后把数据库类型和版本信息、数据库的表字段说明和 sql 文件路径发给 ai agent ,让 ai agent 写数据库项目文档。

    之后就可以直接提复杂需求给 ai agent ,ai 就能生成对应的 sql 语句了。

    如果你希望 agent 自动化访问数据库,大概率会涉及泄密,解决方式:要么 ai 本地化,要么让 ai 写程序-程序去取数据显示。
    cellsyx
        12
    cellsyx  
       2 days ago
    最多只能让 AI 接触测试数据库,让他帮你生成查询指令,然后你通过可信方式用生成的 sql 到生产库查询。
    如果让 AI 直接接入生产环境,先不说会不会搞出点事故,就算设置了只读账户可以正常查询,万一数据泄露怎么办?生产环境的数据脱敏放在哪里做,额外工作量有多少,有应急预案吗?

    总之我感觉这不是一个人能搞定的事情,除了方案落地还得要上级批准流程。但是上级大概率不会仅仅为了你的方便来背可能出现的数据泄露这口大锅,想推动这件事情必须有更正当的理由。
    JasonYip
        13
    JasonYip  
       1 day ago
    应该决不允许 ai agent 有任何 DML 和 DDL 权限吧 最多宁可让他看建表的 DDL 但是不能让他执行,太危险了
    shmilypeter
        14
    shmilypeter  
       1 day ago
    如果你不能让 DBA 帮你开只读账号,十分奉劝你别省这个事儿,别拿自己工作开玩笑
    shmilypeter
        15
    shmilypeter  
       1 day ago
    我一直让 AI 访问测试库,并且还把测试库的配置都集成到 skill 里,并且在 skill 里加了只允许查询的约束,但还是有一次 agent 突破边界直接给我插入数据了。
    flyqie
        16
    flyqie  
       1 day ago via Android
    问题是怎么做脱敏?

    这种脱敏方案不好做吧
    skuuhui
        17
    skuuhui  
       1 day ago
    没有大语言模型没留下的时候我就做过一个 chrome 插件。可以通过外部程序控制页面内容。
    你自己写 chrome 插件,暴露一个 mcp 。给 ai 调用。然后插件把 sql 塞到 dms 的那个 input 框里面。
    changz
        18
    changz  
       1 day ago
    archery 二开加接口,权限和脱敏复用 archery 的能力就行,让运维结合业务场景做处理
    killva4624
        19
    killva4624  
       1 day ago
    只要给 AI 账号和直连,AI 就会一定会思维发散;
    必须要用 MCP 或者接口服务来限制查询 SQL ,不要幻想。
    cstj0505
        20
    cstj0505  
       1 day ago
    @lujiaosama 当然可以,写个慢查询把 cpu,内存,io 都占了
    albin504
        21
    albin504  
    OP
       1 day ago
    收到兄弟们的建议谢谢。 当前是只读账号、dms 系统是部署的开源 archery 。
    接下来计划 开发 mcp ,并且在数据脱敏、慢查询拦截方面做优化。
    albin504
        22
    albin504  
    OP
       1 day ago
    @kasusa 收到,谢谢
    albin504
        23
    albin504  
    OP
       1 day ago
    @flyqie 脱敏确实不好做。 我也在考虑这件事的风险。 如果不能处理好脱敏问题,可能这个 mcp 就不做了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2990 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 13:15 · PVG 21:15 · LAX 06:15 · JFK 09:15
    ♥ Do have faith in what you're doing.