Skip to content

docs: explain sandbox isolation lifecycle evidence - #21

Merged
XiaoCow666 merged 1 commit into
XiaoCow666:mainfrom
ggboyxkw666:docs/sandbox-lifecycle-explainer
Sep 7, 2026
Merged

docs: explain sandbox isolation lifecycle evidence#21
XiaoCow666 merged 1 commit into
XiaoCow666:mainfrom
ggboyxkw666:docs/sandbox-lifecycle-explainer

Conversation

@ggboyxkw666

Copy link
Copy Markdown
Contributor

摘要

本 PR 只新增 docs/sandbox-isolation-lifecycle.md,以主仓库 main 为基线,补充 PR #20 隔离生命周期原型的通俗说明、9 个现有测试的证据边界,以及真实 Windows/Linux 隔离尚未验证的事项。

目标是帮助后续审阅者区分:原型实际验证了什么、未来真实适配器应满足什么、哪些内容仍没有证据。本文不把内存模型描述成真实 OS 沙箱。

阅读范围

文档逐项解释 prepare -> enroll -> launch -> cleanup,列出 9 个测试各自的断言,并单独说明 Windows Job Object、Linux cgroup、权限、网络和资源限制未验证的内容。

验证命令与结果

在 PR #20 原型提交 cb67337 的独立工作树、Windows 工作区 Python 3.12.14 环境中执行:

  • python -m unittest discover -s experiments -t . -p "test_*.py" -v:9 tests passed,OK。
  • python -m experiments.sandbox_isolation.test_prototype:9 tests passed,OK。
  • python -m compileall -q experiments/sandbox_isolation:退出码 0。
  • git diff --cached --check:提交前通过。

这些是标准库单元级验证;没有启动生产应用、真实 C++ 编译、真实子进程或网络服务。

事实、推断与未验证

  • 事实:原型使用内存中的 RecordingIsolationBackend 记录边界准备、挂起创建、归组、恢复、后代继承、清理和空状态确认;9 个测试均通过。
  • 设计意图:未来真实适配器应在不可信代码执行前完成归组,失败时拒绝启动,并在所有结束路径清理整个隔离单元。
  • 未验证:当前没有创建/终止真实进程,没有调用 Windows Job Object、Linux cgroup/namespace/seccomp、网络防火墙或权限修改 API。

风险与未解决事项

  • Windows Job Object 的挂起创建、AssignProcessToJobObject 时序、权限、后代清理、输出句柄继承和资源配额未验证。
  • Linux cgroup v2 的创建时机、cgroup.procs 写入权限、迁移防护、cgroup.kill 后代清理和 CPU/内存/PID/I/O 限制未验证。
  • Windows/Linux 的低权限令牌、ACL、uid/gid、capability、no_new_privs、网络拒绝、DNS/IPv6/内网访问和文件系统边界未验证。
  • 原型的策略字段不是 OS 配额;真实超时、资源耗尽、管道背压、编码错误和回滚队列路由仍需目标平台测试。
  • 9 个测试未单独覆盖真实 runtime error、真实 timeout 或真实 OS 行为;“测试通过”不能解释为“生产评测已隔离”。

范围与审批

  • 只新增文档,不修改生产代码或配置
  • 不调用系统隔离 API
  • 不接入线上评测链路
  • 不包含密钥或凭据
  • 真实隔离适配和生产接入须另开 PR,并保留负责人审批

请负责人复审本文档的事实/推断边界和未验证项。

@XiaoCow666 XiaoCow666 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3 — docs/sandbox-isolation-lifecycle.md 第 77 行:将“磁盘/临时目录”列为 Job 限制,容易误导后续实现者认为 Job Object 能直接提供磁盘容量配额或临时目录访问隔离。Job 的进程资源限制不能替代文件系统权限和存储配额控制。

建议:将 CPU、内存、活动进程数保留为 Job 限制;把磁盘配额、临时目录访问控制和清理拆成独立验证项,注明需要额外机制。

其余内容明确区分了内存模型与真实 OS 隔离,未见阻塞性问题。本次仅审阅所提供的 diff;原型代码及测试输出未提供,无法独立确认九项测试的具体断言和运行结果。

@XiaoCow666
XiaoCow666 merged commit 6e65d48 into XiaoCow666:main Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants