Skip to content

Consolidate sandbox provider contributions #333–#337 / 收敛沙箱 Provider 贡献 #342

Description

@Maplemx

目的 / Purpose

#324 继续负责本地沙箱与 ExecutionResourceProvider 的总体架构方向。本 Issue 负责收敛同一贡献者提交的 provider 草案、维护贡献归属,并按一次一个 provider 的顺序完成真实机制验收。

This issue tracks the contributor sandbox-provider drafts, preserves attribution, and requires one-at-a-time integration with real mechanism evidence.

当前状态 / Current status

Provider 原贡献 / Original contribution 接受结果 / Accepted result 状态
gVisor/runsc #335 / #345 #350;Skills AgentEra/Agently-Skills#12 ✅ 已合入 dev,原提交与作者保留
macOS Seatbelt #327 / #333 #351;Skills AgentEra/Agently-Skills#13 ✅ 已合入 dev#327/#333 已按 superseded 关闭
Linux Landlock #337 #353;Skills AgentEra/Agently-Skills#15 ✅ 已合入 dev,原提交与作者保留
Linux Bubblewrap #336 维护者参考草案 #352;Skills 参考草案 AgentEra/Agently-Skills#14 ⏳ 修改权已交回 contributor,等待真实环境证据

已接受实现统一遵守:

  • code_execution / 既有 ExecutionResourceProvider owner 边界;
  • TaskWorkspace grant、immutable bundle、bounded stdout/stderr、timeout/cancellation、health/release;
  • 明确 fail closed,不静默回退到 trusted_local 或其他 provider;
  • capability 只上报真实观察到的隔离轴;
  • 贡献者原提交优先保留,维护者修正追加在其后;
  • 用户文档收敛到 execution-environment,Agently-Skills 同步更新。

这些 provider 不属于 4.1.4.6;已接受项进入当前 dev,后续随正常 dev -> main 发布流程处理。

最新 Todo / Updated todo

已完成 / Completed

  • gVisor:Docker runtime registry、真实 runsc probe、ensure/health/result metadata 一致、错误/取消清理和 Ubuntu runsc CI。
  • Seatbelt:grant-only write policy、真实 macOS sandbox-exec evidence、bounded lifecycle、能力限制如实上报。
  • Landlock:移除 preexec_fn 和无界 communicate(),使用独立 helper + bounded process,Ubuntu ABI v7 enforcement evidence。
  • 三个已接受 provider 均完成主仓库文档、Agently-Skills 同步及贡献归属说明。
  • Bubblewrap 维护者草案已完成结构修正与确定性测试;Ubuntu 24.04/22.04 hosted runners 均真实返回 bwrap_user_namespace_blocked
  • 未通过 sudo、privileged container、关闭 AppArmor 或修改 userns sysctl 伪造 Bubblewrap 成功。
  • feat: Bubblewrap (Linux) ExecutionResourceProvider #336 恢复为 contributor-owned active PR;feat: integrate grant-bound Linux Bubblewrap provider #352/Agently python v2.0.0 #14 关闭但保留分支和可复用提交。

需要 contributor 支持 / Contributor support required

@drscrewdriver,请继续负责 #336,或提交一个基于当前 dev 的明确 successor,并完成:

  • 确认使用 feat: Bubblewrap (Linux) ExecutionResourceProvider #336 继续,或给出 successor PR 链接;不要同时扩展多个 Bubblewrap PR。
  • rebase/merge 当前 dev,保持 provider_id="bubblewrap"supported_kinds=("code_execution",)
  • 评估并复用维护者参考提交:
    • 1b3cdea3:grant-only mounts、受控 child env、真实 probe/health、truthful capabilities;
    • 33d843d6:统一文档与机制 workflow;
    • e8c2f978:Ubuntu 22.04 默认策略 characterization。
  • 在你的 Ubuntu homeserver 或其他代表性普通 Linux host 上记录只读环境事实:
    • OS / kernel:uname -a
    • Bubblewrap:bwrap --version
    • 当前 AppArmor / userns 状态(只读取,不修改);
    • 是否在正常用户、正常宿主策略下运行。
  • 在未使用 sudo bwrap、privileged container、关闭 AppArmor、修改 userns sysctl 的情况下运行:
    • python -m pytest tests/test_bubblewrap_isolation.py -q
    • python -m pytest tests/test_bubblewrap_execution_provider_integration.py -q -rs
  • 提供真实观察结果,证明:
    • granted output write 成功;
    • grant 外宿主 read/write 被拒绝;
    • 默认 network namespace 与宿主不同;
    • probe、ensure、health、release 与 result metadata 一致;
    • timeout/cancellation 后无遗留进程或临时资源。
  • 附上命令、branch/commit、Python 版本、测试摘要和必要的 bounded 日志;不要只提交手工结论或模拟结果。
  • 如正常宿主策略仍不允许 unprivileged Bubblewrap,请原样报告 blocker,不降低安全策略。

维护者后续 / Maintainer follow-up

Bubblewrap 当前已知限制 / Known blocker

GitHub-hosted Ubuntu 24.04 与 22.04 在默认策略下均阻止 unprivileged Bubblewrap;仓库当前没有 self-hosted Linux runner。因此 #336 需要 contributor 提供代表性普通 Linux 环境证据。环境不允许本身是有效结论,不是要求绕过宿主安全策略的理由。

Related architecture tracker: #324.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions