wunianxiao
|
142efb070f
|
refactor(sandbox): 长期容器 + docker exec 替代一次性 docker run
容器策略从"每次 docker run 一次性容器"改为"长期容器 + docker exec":
- 统一产物目录 tools/bin/:build.sh 和 tool_manager 编译后复制产物到
此目录,registry 解析路径优先用 tools/bin/<tool>。
- 长期容器 ias-sandbox:daemon 启动时 ensure(已运行则复用),
tools/bin 只读挂载到 /tools,无网络/只读根/cap-drop ALL/资源限制。
- docker exec 调用:工具执行改为 docker exec -i ias-sandbox
timeout -k 5 <secs> /tools/<name>,省去容器创建开销。
timeout -k 5 确保超时 SIGTERM→SIGKILL,无孤儿进程。
- 新增 src/tools/sandbox.rs:ensure_container + build_exec_cmd。
- executor 删除 build_docker_cmd/sandbox_enabled,docker 分支改用
sandbox::build_exec_cmd。
- env 按 spec 白名单 -e 注入(容器启动时仅有 PATH)。
验证:本地执行 hostname=debian,docker exec hostname=容器ID,
证明确实走长期容器 exec;25 测试通过。
|
2026-06-22 17:11:05 +08:00 |
|
wunianxiao
|
092f3b78f2
|
refactor(sandbox): 按威胁模型精确化——仅不受信任代码进容器
http/db 类工具的子进程是瘦壳(纯计算),危险操作全在受信任主进程,
套容器是纯开销无隔离收益。调整为:
- 开发者预写工具:移除 spec 的 sandbox: profile: stdio,回默认 local
本地执行(仍保留 env_clear + 白名单注入)
- tool_manager 产出的工具:spec_yaml 自动写 sandbox: profile: stdio,
不受信任代码(LLM 提供 rust_code)默认进 stdio 容器
- tool_manager 编译:仍走 builder 容器
- 移除 ias-network-runner Dockerfile(当前无工具直接联网)
- executor docker 分支仅保留 stdio/builder,删 network 分支
验证:datetime 本地执行 +08:00;tool_manager 产出工具 spec 含
sandbox: profile: stdio 且容器内执行成功;25 测试通过。
|
2026-06-22 16:53:36 +08:00 |
|
wunianxiao
|
4a5b21a69e
|
docs: 两层安全边界设计文档
授权边界(统一审批)+ 隔离边界(Docker 一次性容器)+ 审计
的设计、实现与验证记录。
|
2026-06-22 11:51:05 +08:00 |
|
wunianxiao
|
99c1e9cd6c
|
Refactor tool execution pipeline
|
2026-06-21 14:30:40 +08:00 |
|