feat(chv): 对齐 Muse P3 收尾——authd 替身凭证 + Sentinel 出口审批
- 新测试 cloud/tests/test_chv_muse_p3.py 30 项:替身过期、真 token 泄露面、SSRF 挡截、deny/ask 路径、authd-seed 拆分、wake 预审、 客内 authd 守护进程、git credential helper 端到端(真 git fill) - 8 个旧测试按新 authd 行为改写(未删测试、未放宽断言): GITEA_TOKEN 改走 authd-seed,build_ssh_command 不再 source 进 codex 环境;wake 测试补 Sentinel 白名单 + 假解析器 - 7 处超 50 行函数拆到 50 行内(不改行为);补 authd/sentinel 公共 API 注解,mypy 在改动文件上干净 - 真问题修复:git 默认不把 path 发给 helper,chv-sync boot 加 credential.useHttpPath=true,否则 authd 路径每次都拒绝 - 全量 cloud 套件 1897 项 OK(skipped=8) 真机待验证(未做,等第三棒让出 WSL 测试机):见 docs/chv-muse-p3-gap.md §3.6 清单
This commit is contained in:
1 parent
06c3e172fe
commit
a90cf78d84
15 files changed
+2370
-93
No files matched your search
@@ -43,6 +43,26 @@ GITEA_SYNC_KEYS = frozenset({
|
||||
# _CHV_SECRET_ENV_NAMES)。
|
||||
GITEA_SYNC_SECRET_KEYS = frozenset({"GITEA_TOKEN"})
|
||||
|
||||
# 其中 authd 专用密钥(feat-chv-muse-p3):只进客内 authd 的
|
||||
# 独立 seed 文件 /etc/chv/authd-seed(见 hostkeys.AUTHD_SEED_PATH),
|
||||
# 不进 guest-env、不进 codex 进程环境。本期只有 GITEA_TOKEN。
|
||||
AUTHD_SECRET_KEYS = frozenset({"GITEA_TOKEN"})
|
||||
|
||||
|
||||
def split_authd_env(secrets: dict | None) -> tuple[dict, dict]:
|
||||
"""把密钥集拆成(走 authd 通道的子集,仍走 guest-env 的子集)。
|
||||
|
||||
authd 子集 = AUTHD_SECRET_KEYS 命中的键(本期只有 GITEA_TOKEN);
|
||||
其余密钥(如 SUB2API_API_KEY)仍走 guest-env(见差距表 §3.3,
|
||||
网关 key 的 privsep 改造是后续工作)。"""
|
||||
authd, rest = {}, {}
|
||||
for key, value in dict(secrets or {}).items():
|
||||
if key in AUTHD_SECRET_KEYS:
|
||||
authd[key] = value
|
||||
else:
|
||||
rest[key] = value
|
||||
return authd, rest
|
||||
|
||||
# 其中非密钥、但 boot 时就要用、也必须进 guest-env 的键
|
||||
#(SSH env 前缀到不了 cloud-init 时运行的 chv-sync boot)。
|
||||
GITEA_SYNC_PLAIN_KEYS = GITEA_SYNC_KEYS - GITEA_SYNC_SECRET_KEYS
|
||||
|
||||
Reference in new issue
Block a user