Open-Science安全模型:权限、沙箱与凭证的7大信任边界
【免费下载链接】open-scienceAIPOCH Open-Science is an open-source, local-first, model-agnostic AI research workbench for macOS, Windows, and Linux, with scientific agents, Python/R notebooks, data connectors, and reproducible provenance.项目地址: https://gitcode.com/GitHub_Trending/open/open-science
Open-Science(AIPOCH Open-Science)是一款开源、本地优先的 AI 科研工作台,支持 macOS、Windows 和 Linux。它让 AI 智能体帮你检索文献、运行 Python/R 笔记本、连接数据源,但"AI 能帮你干活"的前提是"AI 不能越权干活"。本文带你看清它的 7 大安全信任边界:权限审批、代码沙箱、界面隔离、远程访问控制、外部服务、凭证加密和发布签名,帮助你安全地使用这款 AI 绘图、AI 科研工具。
💡 完整安全说明见 docs/security.md,漏洞报告政策见 SECURITY.md。
边界 1:智能体权限审批系统(Permission Grants)
AI 智能体的每一个"副作用操作"(改文件、调外部工具、发消息)都要先过 Open-Science 的权限系统。权限授予可以限定在会话级、项目级或全局级三种范围,且低风险操作有"安全默认值",不会频繁弹窗打扰你。
- 默认权限是白名单:只有少数低风险能力(如检索本地文献库)默认放行,源码见 permission-grants/defaults.ts
- 批准即授权:一次批准 = 一次行动授权,批准后建议审查生成的命令、文件变更和外部目标
- 全访问是显式选择:想关掉审批提示,需要用户主动开启,而非默认行为
一句话总结:Open-Science 的默认姿态是"拒绝优先",而不是"放行优先"。
边界 2:代码与 Notebook 执行沙箱
这是整个安全模型中最硬核的部分。Python、R、REPL、Notebook Bash 和包管理器进程全部走"应用自有的 Notebook 执行路径",由独立的沙箱包 packages/notebook-network-sandbox/ 提供进程级隔离:
| 平台 | 强制机制 | 隔离内容 |
|---|---|---|
| macOS | Seatbelt | 文件系统 + 网络规则 |
| Linux | bubblewrap | 独立命名空间 + 私有网关 |
| Windows 保护模式 | AppContainer + WFP 过滤 | 按 SID 封锁出站连接 |
沙箱的关键设计(详见 notebook-network-sandbox/README.md):
- 网络默认拒绝:私有地址、元数据地址直接拒绝且不弹窗;只有用户批准的公共域名才能出站
- 文件系统写默认拒绝:主目录等敏感根目录默认隐藏,只有显式声明的根目录才可访问
- 环境变量白名单:Provider Token、云凭证等敏感变量不会跨进程传入沙箱
- 逐进程随机凭证:每个命令拿到独立的代理凭证,进程间无法复用彼此的批准
⚠️ 注意:Windows 默认是"标准模式"(兼容控制,非硬隔离),需手动开启保护模式后才构成真正的网络边界。
边界 3:桌面渲染与预览隔离
Open-Science 基于 Electron,渲染层堆叠了多层纵深防御:上下文隔离(context isolation)、渲染进程沙箱、受限的 preload 桥、默认拒绝的 Chromium 权限、导航守卫和 CSP 内容安全策略。文件与源码预览额外使用受约束的 frame 和应用协议。
这意味着:即使某个预览内容试图执行脚本或跳转危险页面,也会被多重机制拦住。相关实现在 src/main/renderer-csp.test.ts 等文件中可找到对应约束。
边界 4:本地 Web 服务与远程访问
除了桌面界面,Open-Science 还提供可选的本地 Web UI,其安全姿态非常克制:
- 默认只绑定
127.0.0.1,不监听外网 - 远程浏览器访问是显式开启功能,走 HTTPS 路由 + 六位数配对请求 + 授权客户端审批
- 服务令牌由 web-service/auth.ts 生成,随机 32 字节、文件权限
0o600存放
受信浏览器应像"账号会话"一样定期审查和吊销。
边界 5:模型、Connector 与外部服务
"本地存储"不等于"离线运行"。模型请求、网页搜索、Connector 调用、OAuth 流程和远程作业,都会把完成任务所需的内容发给选定的第三方。这里有两个容易误解的点:
- 只读 Connector 也会发数据:查询词、DOI/PMID 标识符、筛选条件都会发送到源端服务;元数据查询不等于上传你的本地 PDF
- 取消 ≠ 撤回:停止请求只能阻止后续工作,无法收回已被服务商接收的字节;删除本地会话也不会通知模型服务商删除其副本
官方建议:在项目内容、模型输出、下载文件、Skills、Specialist 包、自定义 Connector、MCP 服务器和远程计算主机上,一律"先审查、再信任"。
📌 场景模型(标题生成、视觉理解)可能使用不同的 Provider 端点,请在设置中核对 Provider 名称和端点。
边界 6:本地数据与凭证加密
你的数据放在哪里、密钥如何保护,是信任的基石:
~/.open-science:设置、应用数据库、会话状态、权限记录、Provider 配置、Skills~/OpenScience:产物、上传文件、Notebook 与工作区数据(可在设置中迁移根目录)
凭证保护方面(secure-storage.ts):
- API Key、Connector 密钥、OAuth 状态、GitHub Token、计算密码,默认全部用 Electron
safeStorage加密,底层由操作系统安全存储托管 - Linux 上若安全后端不可用(如未保护的
basic_text模式),直接拒绝写入新密钥,而不是悄悄降级 - 显式的文件回退模式(
--credential-store=file)存的是 base64,不是加密,且永远不会被自动选择
💼 实践建议:对研究数据有静态保护需求的设备,请开启全盘加密。
边界 7:发布分发与供应链
最后一个边界在"安装之前"。稳定版发布包含:
- SHA-256 校验和(
SHA256SUMS.txt),可逐字节比对安装器 - 签名 SLSA 构建溯源声明,把安装器字节与该仓库的构建流程和 commit 绑定
校验步骤详见 SECURITY.md。同时提醒:只从官方发布渠道下载安装器,Skills、Specialist 包、自定义 Connector 和远程计算配置也请只安装你信任的来源。
总结:7 大边界一图流
| # | 信任边界 | 核心机制 | 用户要做什么 |
|---|---|---|---|
| 1 | 智能体权限 | 白名单 + 分级审批 | 审查批准内容再点同意 |
| 2 | Notebook 沙箱 | Seatbelt / bubblewrap / AppContainer | Windows 用户开启保护模式 |
| 3 | 渲染与预览 | 上下文隔离 + CSP | 不预览来路不明的文件 |
| 4 | 本地 Web / 远程 | 仅 127.0.0.1 + 配对码 | 定期吊销受信浏览器 |
| 5 | 外部服务 | 数据去向透明化 | 理解"取消≠撤回" |
| 6 | 本地凭证 | safeStorage + OS 保险库 | 需要时开启全盘加密 |
| 7 | 发布分发 | SHA-256 + SLSA 溯源 | 只装官方渠道安装包 |
Open-Science 的设计哲学可以概括为一句话:每一条边界都写进了文档,每一个默认值都朝"更保守"的方向倾斜。对新手来说,只要记住三件事——批准前先看一眼、Windows 记得开保护模式、密钥永远走系统级加密——你就能安全地享受这款开源 AI 科研工作台带来的便利。
📖 延伸阅读:docs/security.md(安全模型全文)、ROADMAP.md(安全加固路线图)
【免费下载链接】open-scienceAIPOCH Open-Science is an open-source, local-first, model-agnostic AI research workbench for macOS, Windows, and Linux, with scientific agents, Python/R notebooks, data connectors, and reproducible provenance.项目地址: https://gitcode.com/GitHub_Trending/open/open-science
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考