feat-chv-muse-p9: 推理与遥测受限通道(Sentinel 预审 + 遥测最小化 + 训练退出开关)

- 受限推理通道:cloud/chv/inference_channel.py(origin 解析、
  allowlist、上限、Sentinel 预审),执行器 _run_with_vm 起 VM 前
  必过 _inference_gate(allow 才继续,deny/ask 审计 + fail-closed,
  任务级 extra_env 合并进预审);host.py 第二道防线(_server_command
  的 origin 结构校验 + Server.request 超时/重试走 env)。
  origin 规则:https 公网网关(只 443);http 只接受本地中继
  (字面环回/私网 IP,如 http://172.17.0.1:28084,端口保留,
  无 DNS、无重绑定,allowlist 与单次能力照常);未知 provider
  标签走默认网关(与 _server_command 一致)。
- sentinel.py:从 P5(25bcd35)取的超集版本 + 推理连接器条目
  (POST /v1/responses、GET /v1/models;scheme/端口只 https/443,
  本地中继不走 evaluate,不把 http 加进表)。
- 遥测最小化:cloud/chv/telemetry.py(字段白名单、确定性采样、
  落盘失败不影响任务、token 未回传记 null)+ 训练退出开关
  (默认开,本项目决定;关后轨迹不再产生;损坏 fail-closed;变更审计)。
- 访问边界:docs/chv-access-boundary.md(运营访问口径 + 审计钩子,
  不冒充技术不可访问;Confidential VM 明确未做)。
- 测试:cloud/tests/test_chv_muse_p9.py 51 组全过;5 个旧文件
  的 make_exec 配假 origin + 假解析器(新 fail-closed 门要求的
  测试配置);全量 cloud 套件 1918 OK(skipped=8)。
  详见 docs/chv-muse-p9-gap.md(含自定清单与真机待验证清单)。
This commit is contained in:
host committed 2026-11-06 23:03:06 +00:00
1 parent 06c3e172fe
commit c06ba50983
13 files changed
+1922 -11

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
# CHV VM 运营访问边界说明(feat-chv-muse-p9)
> 口径依据:Meta 官方安全文(security.muse.ai 2026-09-08)对 Muse 当前架构的
> 明确表述——当前架构**通过运营政策限制 Meta 人员访问用户数据,但并不阻止
> Meta 在必要时为支持、保障或运营服务而访问数据**;“连 Meta 也看不到”是未来
> Confidential VM 的目标,**截至 2026-11-01 的公开材料中未见 Confidential VM
> 已全面上线**。本文件把同一口径落到本项目:只写文档 + 审计钩子,
> **不冒充技术上不可访问**。
## 1. 谁能访问 VM 内数据
| 访问方 | 能访问什么 | 边界 |
|---|---|---|
| 用户本人(VM 属主) | 全部:工作区文件、记忆、凭证替身、审计记录 | 属主即所有者;可检查、编辑、下载 VM 内所有文件,也可要求忘记指定内容(见 P7) |
| Agent(codex,单元内) | 任务所需的工作区与工具输出 | 受 nspawn 单元(P2)、authd 替身凭证(P3)、Sentinel 出口审批(P3/P5)约束;真凭证与宿主侧数据对单元内不可见 |
| 宿主运维(部署机器的 root / codexsvc) | VM 磁盘镜像、state_dir、日志、审计 | **技术上可以访问**:宿主侧持有磁盘文件与进程,OS 账户即边界。本文件不声称运维看不到——只规定运维**应在什么情况下**访问(见 §2),并要求访问留审计 |
| Meta(对照口径) | 不适用——本项目无 Meta 侧运营方 | 本项目是用户自部署,不存在 Meta 人员访问;写这一行只为对齐口径:若未来托管化,边界按同一句话执行 |
## 2. 运维访问规则(政策,非技术强制)
1. **日常不看**:运维不主动翻看用户工作区文件、对话记录与记忆;只看任务级元数据(任务 id、起止、成败、耗时)与审计事件。
2. **排障可看**:任务失败、VM 异常、安全事件调查时,运维可查看相关 VM 的日志、审计记录与任务输出;查看行为本身记入审计(`chv_audit` + 操作日志)。
3. **凭证永不直接取**:真凭证(Gitea token、网关 key)只经 authd 替身释放;运维排障需要凭证时走替身铸发流程,不直接读 seed 文件;seed 文件 0600,属主 root/codexsvc。
4. **数据不出宿主**:排障取证不出部署机器;必须外发时先去标识化(任务 id 可留,对话原文、文件内容、密钥一律去掉),并记审计。
5. **删除即删除**:用户要求删除任务数据/记忆时,运维删除 VM 盘、state_dir 与相关遥测行,并记审计;备份里的副本按备份保留期滚动清除,不单点恢复。
## 3. 审计(可查的证据)
- 任务生命周期审计:`chv_audit`(执行器 `_emit`,失败落盘 `chv-audit-spill.jsonl`)。
- 出口审批审计:Sentinel 决策记录(`sentinel_egress_allow/deny/ask`,只含目标描述与原因,不含值)。
- 训练开关审计:`training-opt-audit.jsonl`(开关变更时间、开/关、操作方)。
- 遥测:`telemetry.jsonl`(只含任务级元数据字段,见 `docs/chv-muse-p9-gap.md` §2.1)。
审计记录里绝不含凭证值、对话原文与文件内容;审计失败不中断任务(worker 层 best-effort 语义,见执行器 `_emit` 注释)。
## 4. 广告隔离(口径,不用写代码)
- 本项目不把用户对话或 VM 数据分享给任何广告系统;遥测字段白名单里没有可用于广告画像的字段。
- Agent 浏览互联网时表现为用户活动,可能间接影响用户在别处看到的广告(与 Muse 官方口径一致)——这是浏览行为本身的副作用,不是本项目分享数据。
## 5. 明确未做的事
- **Confidential VM**:未做。Meta 自己也未交付(路线图),本项目不自研密码学隔离 VM;当前边界是 OS 账户 + 文件权限 + 审计,不是密码学不可访问。任何“连运维也看不到”的说法在本架构下都是错的,不要这样对外写。
- **端到端加密记忆**:未做。记忆文件在 VM 盘上明文存放(权限 0600),依赖磁盘与宿主访问控制。
- **操作审批 UI**:运维访问的审批流程目前是人工约定(本文件),没有强制审批卡;强制审批是后续工作,不在本轨冒充已实现。