feat: CHV 审核修复(P0+P1,堆叠于 #230)
P0:seed 磁盘 CIDATA ISO 挂进 VmConfig 第二块只读盘; restore provisioned 下复用钉死 known_hosts、缺失 fail-fast 绝不 keyscan;preflight 拦截 CHV_DISK_MODE=reuse(显式 实验二次确认 + 审计放行);SSH 目标选客机 IP 方案(显式 host > net 静态 ip > 显式转发宣称回环,三者皆无 fail-fast)。 P1:网关 extra_env 经 SSH env 前缀注入、worker 守卫收窄到 Local/CHV;取消/清理/看门狗接 CHV 通用路径;WarmPool acquire 内 resume;容量门持久化计数;磁盘配额总量+余量 与已存在磁盘校验重拷;API 按 Content-Length 验完整性; 快照 file:// 验落盘再 shutdown;execute 死端口归类 vm_not_running。 P2 全部排除未做(用户范围收窄令,留待以后一轨)。 测试:原 84 + 新增 29 = 113 项,mock,无真 VM。
This commit is contained in:
1 parent
22b83f118a
commit
9771ed9e8c
13 files changed
+1231
-128
No files matched your search
@@ -36,7 +36,7 @@
|
||||
shutdown,同一任务重复 wake 先关旧 VM;VM 名、api-socket、
|
||||
每任务磁盘路径均按任务派生,互不相同(测试断言)。
|
||||
- ✅🧪 每任务磁盘独立:copy 模式复制基础镜像为每任务磁盘;
|
||||
reuse 模式仅单租户实验,生产禁用(代码与文档双写)。
|
||||
reuse 模式仅单租户实验,preflight 拦截(须显式实验二次确认并审计放行,feat-chv-fix 起代码真正拦截;此前“代码与文档双写”的说法是错的,代码当时并不拦截)。
|
||||
- ✅🧪 租户无共享路径:执行器不挂载宿主根、宿主代码目录或含
|
||||
密钥目录;客机代码在镜像内 `/app`,不在宿主共享挂载上。
|
||||
- ✅🧪 密钥不进镜像/代码/prompt:SSH argv 只有 key 文件路径;
|
||||
@@ -44,7 +44,7 @@
|
||||
命令中不含哨兵密钥值。
|
||||
- ✅🧪 SSH host key 按 VM 钉死(优化轨,#216 的 no + /dev/null
|
||||
已废除):每 VM 在 state_dir/<vm>/known_hosts 有独立文件,
|
||||
首次启动经 ssh-keyscan 在本机回环端口捕获 key 写入该文件,
|
||||
首次启动经 ssh-keyscan 在解析出的 SSH 目标上捕获 key 写入该文件,
|
||||
此后 SSH 一律 StrictHostKeyChecking=yes + 该文件校验;
|
||||
非 root 客机用户(CHV_SSH_USER,显式空串直接拒绝)与端口
|
||||
(CHV_SSH_PORT,1-65535)为显式配置。mock 只验证捕获→
|
||||
@@ -209,3 +209,33 @@
|
||||
chv-guest 镜像构建发布 → 真实 VM 启动/快照恢复/任务端到端
|
||||
验证 → 压测 → 安全审计 → CI 变绿后按当时 main 头复核 diff
|
||||
再合并部署。缺一不可。
|
||||
|
||||
## 10. 审核修复轨 feat-chv-fix(堆叠于 #230 之上)
|
||||
|
||||
- ✅🧪 P0 已修:seed 磁盘(CIDATA ISO,第二块只读盘)挂进
|
||||
VmConfig;restore 不回落 keyscan(provisioned 下复用已钉
|
||||
死 known_hosts、缺失 fail-fast,快照内 host key 不重预置);
|
||||
reuse 由 preflight 拦截(显式实验二次确认 + 审计放行);
|
||||
SSH 目标选客机 IP 方案(显式 host > net 静态 ip > 显式
|
||||
转发宣称下的回环,三者皆无 fail-fast;vsock 与纯 NAT 方案
|
||||
未选,理由见 config.py)。
|
||||
- ✅🧪 P1 已修或有结论:网关 extra_env 经 SSH env 前缀注入,
|
||||
worker 守卫收窄到 Local/CHV;取消/清理/看门狗接 CHV 通用
|
||||
路径;WarmPool acquire 内 resume(但 worker dispatch 前查
|
||||
池仍未接线,预热收益仍不是已交付特性);容量门改持久化
|
||||
计数(socket 联合计数);磁盘配额改总量+余量、已存在磁盘
|
||||
校验重拷;API 客户端按 Content-Length 验完整性;快照
|
||||
file:// 目标验存在且非空再 shutdown;execute 死端口归类
|
||||
vm_not_running。
|
||||
- ⚠️ 仍未接线/未验证(不得声称已交付):worker dispatch 前查
|
||||
WarmPool;CHV + 网关真实任务;真机 wake/boot/SSH(含 seed
|
||||
注入与 NAT/客机 IP 实测);快照恢复端到端;压测;安全审计;
|
||||
CI 账单恢复。另:P0-2 审计原说法“restore 须把 seed 接入
|
||||
VmConfig”已纠正——restore 不走 vm.create,seed 无从挂盘,
|
||||
正确不变量是复用钉死 known_hosts。
|
||||
- ⛔ P2 全部排除、未做(用户紧急范围收窄令,留待以后一轨):
|
||||
长函数拆分、第二启动路径清理 / Docker goal 解析注释、
|
||||
test_chv_gaps.py 的 grep 文本断言改行为断言、build.sh 与
|
||||
README 口径对齐、stop_vm 吞异常改审计、配置校验时机统一。
|
||||
本轨的 grep 文本测试、README/build.sh、stop_vm 吞异常、
|
||||
preflight 校验口径均保持 #230 原样。
|
||||
Reference in new issue
Block a user