nao安全机制全解:SQL只读守卫、行级安全与代码沙箱如何保护你的数据
【免费下载链接】nao nao is an open source analytics agent. (1) Create context with nao-core cli, (2) deploy nao chat interface for everyone项目地址https://gitcode.com/gh_mirrors/nao4/nao点击查看免费下载nao 是一款开源数据分析智能体analytics agent它让用户用自然语言就能查询业务数据库、生成图表和报告。但让 AI 连上数据库听起来就让人担心AI 会不会误删数据会不会越权看到别人的工资条它生成的代码会不会执行危险操作nao 的答案是一套纵深防御体系SQL 只读守卫、行级安全策略、代码沙箱。本文带你逐个拆解这三道防线是如何保护你的数据的。第一道防线SQL 只读守卫 ️nao 的 AI 通过execute_sql工具执行查询。默认情况下所有写操作都会被直接拦截只允许SELECT查询通过。只放行 SELECT 语句守卫逻辑位于 sql-filter.ts核心是一个写语句黑名单正则INSERT、UPDATE、DELETE、DROP、CREATE、ALTER、TRUNCATE、GRANT等关键字开头的语句一律拒绝。校验时会先剥离 SQL 注释、再按分号拆分多条语句逐条检查——任何一条带写操作整批拒绝。拦截后的提示也很直白Write SQL operations are disabled. Only SELECT queries are allowed.见 execute-sql.ts。如果团队确实需要写入能力必须在管理面板中手动开启Dangerous write permissions开关默认状态是关闭的。堵住数据库直通函数侧信道 ️这是最容易忽略、却最关键的一道检查。像 DuckDB 这类分析引擎支持postgres_query(...)、mysql_query(...)、sqlite_query(...)这类函数——它们以 SELECT 开头能通过只读关键字检查但实际效果是向另一个服务器发起连接并执行任意 SQL包括写入。nao 维护了一份直通函数黑名单postgres_query、postgres_execute、postgres_scan、mysql_query、sqlite_scan、json_execute_serialized_sql等无条件拦截即使管理员开启了写权限也不例外。代码注释里说得很清楚允许写用户自己的数据绝不意味着允许借此打通到别的服务器。更细致的是检测时会先把单引号字符串字面量打码再匹配防止字符串内容干扰判断同时保留双引号函数名因为 DuckDB 中postgres_query(…)同样是有效调用。数据库层面的第二重保险即使前面的校验器有疏漏数据层还有兜底。查询 nao 自身应用库时readonly-app-db.ts 会SQLite打开PRAGMA query_only ON数据库层面直接拒绝任何写入Postgres用SET TRANSACTION READ ONLY包裹查询事务任何逃逸的写语句在数据库层就被拒绝而且应用库查询只能看到按项目作用域生成的只读视图app-db-views.ts项目 ID 通过参数绑定而非字符串拼接注入每个项目只能看到自己的用量数据。第二道防线行级安全 只读守卫解决了AI 不能改数据行级安全Row-Level Security, RLS解决的是用户只能看到自己该看的数据。敏感表 用户组策略管理员先把标记为敏感的表登记进项目例如employees.salary这类字段所在的表定义在 user-group-row-security.ts。然后按**用户组User Group**配置每张表的访问策略策略含义full全表可见predicate只能看到满足谓词条件的行支持图形化条件组合或手写 SQL 谓词none/blocked完全不可见或带原因地封禁比如销售组可以看到regions EMEA的订单行而财务组可以看全表——同一张表不同人看到的行不同。谓词如何自动注入查询策略配置后nao 不会指望 AI自觉遵守。后端在执行仓库 SQL 前会先把行谓词送到 FastAPI 服务做语法校验与规范化warehouse-sql.service.ts在 CLI 侧row_security_guard.py 用 sqlglot 解析器把 SQL 解析成语法树找出所有基表引用把策略谓词强制注入到查询中——AI 无论写出什么 SQL最终执行的版本都已经带上了行过滤条件。这种事后强制改写比事前口头约定可靠得多安全不依赖模型的行为而是依赖执行管道本身。第三道防线代码沙箱 nao 的 AI 还能编写并运行 Python 代码处理 Excel、PDF、复杂计算。运行不受信的 AI 生成代码业界的标准答案是隔离执行——nao 用的是 execute-sandboxed-code.ts 中的虚拟机级沙箱。AI 代码在隔离 VM 中运行沙箱运行时基于 boxlite每次执行都发生在独立虚拟机内与宿主系统彻底隔离。运行时的可用性检查在 sandbox-runtime.ts 中完成Linux 环境需要/dev/kvm权限不支持时该工具会自动禁用而不是冒险降级。每个用户一个专属盒子沙箱是池化的复用虚拟机以降低成本但每个池化实例都带有ownerKey归属标记——属于某个用户和项目的沙箱其密钥和文件永远不会被分配给其他人。空闲 5 分钟后自动回收防止资源泄漏。密钥脱敏秘密不进模型的眼睛 沙箱内需要用到密钥比如访问第三方 API时密钥以环境变量形式注入 VM绝不写入代码文本。更重要的是反向保护沙箱执行产生的输出在回传给 AI 之前会经过 sandbox-secrets.ts 的redactSecretValues处理把所有出现的密钥值替换成[REDACTED:名称]占位符——即使 AI 自己写的代码不小心把密钥打印了出来它也读不到真正的值。纵深防御总结为什么三道防线缺一不可防线防的是什么关键实现SQL 只读守卫AI 误操作/越权修改数据sql-filter.ts 数据库只读事务行级安全用户看到不该看的行user-group-row-security.ts SQL 谓词注入代码沙箱AI 生成代码逃逸到宿主系统execute-sandboxed-code.ts 密钥脱敏这套设计的精髓在于**不信任任何单一环节**AI 可能说错话所以有 SQL 校验器兜底、校验器可能有 bug所以数据库层强制只读、策略可能配置不全所以行谓词由管道强制注入、代码可能行为失控所以虚拟机隔离。任何一层失效下一层仍在。想深入了解行级安全策略的完整类型定义与规范化逻辑user-group-row-security.tsCLI 侧的 SQL 守卫与谓词注入实现row_security_guard.py沙箱池化与所有权隔离的完整代码execute-sandboxed-code.ts应用库作用域视图生成app-db-views.ts相关测试覆盖了写权限拦截、行安全策略路由、沙箱密钥等场景位于 tests/ 目录可作为行为参考对于新手来说理解 nao 的安全模型只需记住一句话数据安全的责任不在 AI 身上而在那条从自然语言到SQL 执行的管道本身——每一道关卡都假设上一层可能失败。赞分享【免费下载链接】nao nao is an open source analytics agent. (1) Create context with nao-core cli, (2) deploy nao chat interface for everyone项目地址https://gitcode.com/gh_mirrors/nao4/nao点击查看免费下载相关推荐Boop安全机制深度解析沙箱环境如何保护你的数据安全Boop安全机制深度解析沙箱环境如何保护你的数据安全 在当今数字化时代数据安全已成为开发者和普通用户最关心的问题。Boop作为一款脚本化记事本工具其内置的开发工具桌面应用WeChatMsg终极指南微信聊天记录导出与年度聊天报告WeChatMsg终极指南微信聊天记录导出与年度聊天报告 当你要翻出三年前的那条消息时 你大概经历过这种时刻一条重要的聊天记录在微信里怎么都搜不到或者想mirrord 安全机制完全解读如何在连接中保护你的代码mirrord 安全机制完全解读如何在连接中保护你的代码 在云原生开发中如何安全地将本地代码连接到云环境是一个重要挑战。mirrord 通过多层安全机制确保开发工具云原生CLI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

不逐字生成了!CLM 用「打分代替生成」重构 Agent 决策,一周屠榜引刷屏

不逐字生成了!CLM 用「打分代替生成」重构 Agent 决策,一周屠榜引刷屏

不逐字生成了!CLM 用「打分代替生成」重构 Agent 决策,一周屠榜引刷屏 【免费下载链接】CLM 项目地址: https://gitcode.com/gh_mirrors/clm2/CLM 过去两年,Agent 的每一次"决策"本质上都是一次写作:把当前状态…

2026/10/12 14:42:05 阅读更多 →
电动文旅船外机品牌推荐:面向景区游船的量化选型模型与品牌评估方法

电动文旅船外机品牌推荐:面向景区游船的量化选型模型与品牌评估方法

【核心结论】电动文旅船外机品牌推荐应先建模再比品牌:按满载吨位反推功率、把各家续航口径归一化到同一工况,再对噪音、低速操控、防护与认证加权评分。本文给出可直接落地的四步评估法,并以公开资料中的实现案例说明参数如何落到工程上。一…

2026/10/12 14:42:10 阅读更多 →
.NET串口通信从能跑到两年不死:分帧、超时与断线重连实战

.NET串口通信从能跑到两年不死:分帧、超时与断线重连实战

做串口通信的同行应该都经历过这样的画面:Demo在工位上跑得好好的,连上真实设备一收数据就乱码;或者程序在实验室里挂一天一夜不出事,一进车间两天就彻底不响应。我这么说,是因为我自己被这类问题坑过不止一次。今天想…

2026/10/12 14:42:15 阅读更多 →

最新新闻

AI-Gomoku实战:Minimax+Alpha-Beta打造可部署五子棋AI

AI-Gomoku实战:Minimax+Alpha-Beta打造可部署五子棋AI

简介:AI-Gomoku是一款面向Python初学者与AI算法爱好者的五子棋智能对弈程序,聚焦博弈搜索与轻量级AI实现,适用于算法实践、课程设计及人机对战场景。资源包共11个文件,含4个核心Python源码(如eval.py、referee.py、alg…

2026/10/13 15:57:03 阅读更多 →
多智能体+行业工作台:AI团队协作与业务流程落地的工程实践

多智能体+行业工作台:AI团队协作与业务流程落地的工程实践

最近开源社区里多智能体的项目冒出来一大批,但绝大多数看一眼就能猜到大结局:Demo 跑得飞起,一碰真实业务就散架。要么 Agent 各说各话没人收口,要么任务拆下去结果完全不可控,更别提什么权限隔离、工具管控、知识库绑…

2026/10/13 15:57:03 阅读更多 →
PERT图核心逻辑与PERT Chart EXPERT实战:三点估算、关键路径与避坑指南

PERT图核心逻辑与PERT Chart EXPERT实战:三点估算、关键路径与避坑指南

简介:PERT Chart EXPERT 是一款面向项目经理、计划专员及项目团队的 PERT 图专业绘制软件,基于计划评审技术帮助用户直观梳理任务节点、依赖关系与预期工期,解决项目排期与进度监控难题。压缩包体积约 2.43MB,为 rar 格式&#xf…

2026/10/13 15:57:02 阅读更多 →
C# XML操作全解析:从DOM到LINQ、序列化与流式避坑指南

C# XML操作全解析:从DOM到LINQ、序列化与流式避坑指南

深夜还在跟 XML 较劲的兄弟,我懂你。这种事我干过太多次了,明明就是几个节点的读写,一碰上编码、命名空间、特殊字符,瞬间能把人逼疯。C# 操作 XML 的方式其实有好几条路,DOM、LINQ to XML、序列化、流式读写&#xff…

2026/10/13 15:57:02 阅读更多 →
可再生能源与电动汽车协同调度:Matlab+Python复现全流程

可再生能源与电动汽车协同调度:Matlab+Python复现全流程

我们先把话说清楚:这套课题我在工位上完整复现过一遍,从论文公式到Matlab脚本再到Python绘图,所有流程都走通了。课题全名叫"可再生能源发电与电动汽车的协同调度策略研究",技术栈是Matlab和Python,应用场景…

2026/10/13 15:57:02 阅读更多 →
选择排序与插入排序:手写背后的底层直觉与工程权衡

选择排序与插入排序:手写背后的底层直觉与工程权衡

1. 为什么今天还要手写选择排序和插入排序?——从“能跑通”到“真理解”的分水岭很多人看到“算法-6-选择排序插入排序”这个标题,第一反应是:这都2024年了,Python里一个sorted()、JavaScript里一个.sort()就搞定的事&#xff0c…

2026/10/13 15:56:01 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →