-
Notifications
You must be signed in to change notification settings - Fork 1
Sandbox zh
上游进程沙箱和文件效果策略系统在 Edge 中的适配。
上游参考:Sandbox
沙箱子系统将子进程参数包装在文件效果策略中。分三层:
-
dsh-sandbox — 抽象接缝,定义
ctx.sandbox.confine(argv, policy)和升级词汇表。三种文件效果模式:只读、workspace 写入、危险完全访问。 - dsh-sandbox-local — 平台实现:Linux bwrap/Landlock、macOS Seatbelt、Windows ACL token。
-
消费者 —
dsh-bash-sandbox和dsh-pwsh-sandbox在执行前通过沙箱包装 shell 命令。
沙箱还提供 canonicalPath()(通过 node:fs.realpathSync 解析符号链接)和 writableRoots()(计算允许写入的目录,包含 os.tmpdir())。
dsh-sandbox 包导入了 node:fs(realpathSync)和 node:os(tmpdir),在 Cloudflare Workers 中不可用。Edge 应用了版本绑定的补丁,做了两处修改:
-
canonicalPath(path)— 直接返回路径,不调用realpathSync.native()。VFS 没有符号链接,解析即恒等。 -
writableRoots(policy)— 省略tmpdir()调用。可写根目录仅为 workspace 根和/tmp。
Edge 没有安装 ctx.sandbox 服务或任何沙箱后端。补丁的目的是让其他导入 dsh-sandbox 的上游包(如文件系统层)能在不崩溃的情况下加载。
EdgeFileSystem 报告 sandboxMode 为 undefined,表示无沙箱执行。Cloudflare Workers isolate 提供自身的安全边界——代码在 V8 隔离区中运行,除 Computer VFS 外没有文件系统访问,VFS 本身按构造限定在 workspace 范围内。
- 沙箱升级词汇表和审批编排
-
SandboxPolicy解析链 -
ConfinedArgv结果分类(拒绝签名、运行器失败规则)
| 方面 | 上游(Node.js) | Edge(Workers) |
|---|---|---|
| 进程隔离 | 每个命令 bwrap/Landlock/Seatbelt/ACL | V8 isolate — 无原生进程 |
| 文件系统范围 | 每个子进程的文件效果策略 | VFS 按构造限定 workspace 范围 |
| 写入限制 | 通过沙箱模式按命令配置 | 所有写入通过 VFS — 仅 workspace |
| 符号链接解析 | realpathSync.native() |
恒等 — VFS 无符号链接 |
| 组件 | 分类 | Edge 代码 |
|---|---|---|
| dsh-sandbox 接缝 | 补丁 | 移除 node:fs/node:os 导入(6 行补丁) |
| 沙箱服务 | 未安装 | V8 isolate + VFS 提供等效边界 |
| EdgeFileSystem.sandboxMode | 覆写 | 返回 undefined — 无进程级沙箱 |
关键观察:上游沙箱存在的目的是限制原生子进程。Edge 没有原生子进程——just-bash 在进程内运行,VFS 按构造限定 workspace 范围。补丁仅为防止 node:fs/node:os 导入崩溃而存在,不提供沙箱功能。如果采用 Cloudflare Containers 实现真正的子进程执行,沙箱接缝需要一个 Container 感知的后端,而非当前的无操作。
**评估 Container 感知的沙箱后端。**如果通过 Cloudflare Containers 实现子进程支持(#98),沙箱接缝应接入 Container 级别的限制后端,而非保持无操作。上游的 ctx.sandbox.confine() API 可以将文件效果策略应用于 Container 中启动的进程。
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发