Skip to content

feat(sandbox): Docker 产品准入、网络默认关闭与权限控制 #40

Description

@Qiyuanqiii

Parent: #32

问题概述 / Summary

在生命周期和 I/O 合同完成后,需要把 Docker Sandbox 接入 Run、Policy、Approval、Budget、Tool Gateway、CLI/HTTP/Desktop,并确保默认网络关闭、任何放宽都可解释。

当前基线 / Current baseline

  • 四档 Run 权限、Approval、Policy、预算、Tool Gateway、事件流和 Desktop capability projection 已存在。
  • Docker foundation 目前不授予任何产品执行权。
  • Noop/Unavailable 路径必须继续作为明确的 fail-closed 状态。

范围 / Scope

  • 定义 sandbox.readiness.v1 与产品准入判定。
  • 默认 network=none;仅允许 Go 验证的目标/端口/协议 Scope。
  • 将 CPU、内存、PIDs、磁盘、wall-clock、日志和工具调用纳入总预算。
  • 通过同一应用服务接入 CLI、HTTP/OpenAPI 和 Desktop。
  • 模型只能提出结构化 Tool 请求,不能提交 Docker flags、mount 或 daemon 地址。
  • Activity 展示准备、启动、运行、取消、失败、清理和 Artifact 事实。
  • readiness 失败时禁用入口并返回稳定原因与修复建议。

非目标 / Non-goals

  • 不提供 privileged、host network、Docker socket mount 或任意宿主目录 mount。
  • 不把 Full Access 等同于自动批准 Docker。
  • 不启用 CTF 自动攻击工具链。

涉及目录 / Affected directories

  • internal/sandbox/
  • internal/application/
  • internal/domain/
  • internal/toolgateway/
  • internal/policy/
  • internal/approval/
  • internal/store/
  • internal/events/
  • internal/httpapi/
  • cmd/cyberagent/
  • cmd/cyberagent-desktop/
  • web/src/
  • docs/adr/

依赖 / Dependencies

  • 依赖同父项的生命周期所有权与安全 I/O 两个子 Issue。

验收条件 / Acceptance criteria

  • 默认配置下容器无网络,且无法通过 IPv4/IPv6、DNS、host gateway 或代理变量绕过。
  • 目标放宽精确绑定 Run/Workspace/Attempt、时限、审批与当前进程 capability。
  • CLI、HTTP 和 Desktop 对同一输入得出一致准入结论。
  • 重启后高权限授权不会从 SQLite 自动恢复。
  • 超预算、取消、daemon 断连和清理失败均产生稳定状态与审计事件。
  • 无 Docker 环境显示明确不可用;不会回退到宿主机执行。
  • 真实 Docker smoke、fake daemon、并发、恢复和权限回归测试通过。
  • OpenAPI、双语 UI、README 和 ADR 与实现一致。

安全边界 / Security boundaries

只有 Go 控制平面可以组合 image、mount、network、limits 与 command。前端选择、模型文本、Skill 或仓库配置只能缩小权限,不能扩大。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestgoPull requests that update go codehelp wantedExtra attention is neededjavascriptPull requests that update javascript codesandboxSandbox, container, and execution isolationsecuritySecurity boundary or high-risk capability高难度

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions