Repository navigation
存量 CA 权限差异、旧服务账号退役与本机操作验收 #70
Description
当前范围 · 2026-10-03
当前主线已完成 CA/Root 的有限授权和轮换恢复实现,旧“#103 未合并”、轮换钥路径错误等条款不再适用。对应有限 grants、旧链撤销/显式 CSR 批准、中断重入、受保护文件、控制台拒绝和 bank fund 双批准的 38 个具体用例通过。
本 issue 收窄为这台部署的 CA 权限差异与一次真实本机控制台验收:读取现有公开证书摘要,列出有限 operations/constraints/TTL/depth 及显式重签/撤销方案,再由获准 VT/串口操作者记录确认和可靠保存。源码/非 root 拒绝测试不能冒称物理控制台成功,旧证书也不因升级自动获得新增权限。
剩余完成条件
- 取得脱敏且有来源时间的实际Root/Basic Online CA公开摘要和有限operation/constraints/TTL/depth差异;列出需要哪些显式CSR/重签/撤销,并由本机操作者决定。
- 记录获准操作者真实VT/串口的一次摘要绑定确认、无回显PIN复核与保存成功,加上已有网络/SSH/管道拒绝;无需为验收而实际资金注入或扩大grants。
- 核对旧 Codex 服务端账号是否仍应退役,明确证书/引用与保留资料后单独记录处理;客户端身份选择缺陷 客户端默认身份与 profile 恢复容易选错,操作前需明确当前主体 #219 已关闭。
- 指定管理操作的 --allow-ssh 已实现并部署;仅核验实际采用的操作路径及应保留的 PIN/确认/签名审计摘要。不为验收而进行资金操作或自动扩大旧证书权限。
本轮依据当前主线 105c2cf716c1179d49bc79224f10f44a3b031163、已完成 CI 和只读部署盘点更新范围。没有执行新的生产迁移、删除、Root/CA 变更或资金操作。旧的全章/全客户端人工矩阵不再作为本项永久门槛。
历史需求与旧验收记录(保留供查阅;当前待办以上述范围为准)
2026-09-28 串行集成:Root轮换加固已合并,存量治理与真实控制台验收仍开放
当前main 45fe2382c63d21eef2f76d4f59141111f7d5713c,tree 1a8a28f467183ccab029625b0524ae5c5b7f115f 实际读回与#118已测试tree相同;#112/#116历史均保留。组合CI36404029543有1544 core+8 conformance、四份SHA/JUnit精确核验、零失败/错误/跳过及wheel/sdist;Recovery safety36404029733成功。独立main push/真实现场验收另核。
已有与本轮合入的切片
- 既有admin/root.py、admin/rotation.py、CSR/OnlineIssuer、当前authority_source/委托边界及诊断继续保留;旧签名证书/白名单不因升级获得新增operation/capability。
- #112经#118集成:轮换实际受保护Root目录中的钥,v2 journal绑定旧/新trust、online CSR及加密envelope承诺;中断重入保留原历史与0700/0600,不兼容旧v1 journal保持fail closed。
- #116经#118集成:受保护no-follow 0600锁串行化prepare/complete;文件须有界、regular、属主/权限/link-count正确,历史文件与trust一致性先于DB authority提交检查。
- 集成修复真实非root CI的测试:OS-admin门槛先于console门槛,真实子进程按实际uid断言精确首个错误;未mock uid、未接受任意错误、未放宽生产检查。它不是物理控制台成功验收。
剩余验收
- 真实存量Root/Basic Online CA/下级链的只读清单、有限grants/issue_grants/operations/constraints/depth/期限差异及显式CSR/重签/拒绝方案,发行摘要与实际schema一致。
- 在线CA当前来源撤销/收缩、续签TTL、key lost/retired、根与在线issuer独立钥、issuer_not_ready、历史验证与当前授权分离的完整验证矩阵。
- Root轮换/恢复完整中断、旧/新trust原子一致性、历史链、旧授权撤销、重复/损坏journal、错路径/权限,以及[P1] 托管历史密文恢复与在线/备份旧钥退役 #68/#69防回滚联合验收;已合并窄测试不替代全部现场状态。
- 真实物理本机控制台完成确认→无回显PIN→复核→可靠保存;网络/回环HTTP、GET、GraphQL、MCP、本站SSH、远程shell/转发不可代替本机。
- 明确拒绝--yes/--pin/环境变量/管道、TTY/IP/client伪装、默认/弱PIN、明文临时材料;PIN只解锁不派生Root身份。
- Root money mint/burn/bank/transfer/offer同本机门槛;bank fund授角色/注资须两项明确操作。任务B实施市场命令,A核边界,#103最终组合未完成。
- doctor只读、独立Test Root selftest、Python3.15/PostgreSQL最终组合与现场证据;模拟proc/TTY或非root拒绝测试不得冒称真实控制台成功。
任务 A 与边界
A继续信任迁移/现场blocker,公共入口由C按#83串行集成,不改写他人市场实现。#112已合并;#116因完整纳入#118而关闭。生产Root/PIN/私钥/正式信任变更不在本轮授权范围,未取得现场证据保持open,增量只Refs。
依据:权威设计第04/14/15章,docs/TASK_A_RECOVERY_20260928.md,#118/#83组合证据。
Activity
LIghtJUNction commentedon Sep 27, 2026
PR #112 已修复一个明确的根轮换存储错误:完成轮换时原代码写入
config/root/key.json,而独立布局从受保护根目录读取。现在沿实际根目录写入,并在中断恢复时保留原旧钥历史,避免把已安装的新钥误归档成旧钥。新增 v2 待处理日志,签名绑定旧/新信任锚、在线 CSR、加密封装及先前封装摘要;恢复时校验 CSR 持钥证明、服务/主体/钥绑定和已提交数据库状态,重复完成不重复写审计。新增“数据库已提交、私钥或信任锚尚未写完”的故障注入回归。旧 v1 待处理日志明确拒绝并要求经审查的本机恢复,不静默当作 v2 批准。
34 个独立测试已在本地及 GitHub Python 3.15 通过,真实数据库集成及完整 CI 已在 PR 请求执行。没有绕过本机控制台边界,没有自动扩充已有证书授权,也没有操作生产 CA。
本 issue 保持开放:真实操作系统控制台验收、既有 CA 治理/迁移,以及经操作者批准的信任过渡和回滚方案尚未全部完成。
LIghtJUNction commentedon Sep 28, 2026
Refs #70 — A 的可审查修复在 #116,head
c97a5286c029aae298d66aa4c6390497f053e4c8,不操作生产Root。在#112实际Root目录/v2 journal完整性基础上,新增
security/root_files.py,以0700当前所有者目录、0600/no-follow/单硬链接普通文件描述符及非阻塞flock串行化prepare/complete。真实并发prepare只能一个成功,另一方busy/pending,不覆盖journal。历史旧envelope的权限、软/硬链接、摘要与当前old/new信任组合均在数据库Root变化前检查,原有崩溃重入及旧历史保留继续通过。新增5项先失败回归;修复后新旧Root/布局/恢复12项通过;最后包含托管与隔离交集的A组合58passed(真实PG17.11/age/Git)。目标环境完整head CI在#116,未使用旧#112绿灯充数。
与B只读复核#1039dc0d3d:MoneyAdmin.execute在load前走真实控制台检查,bank_fund分“授角色/转账”两个摘要绑定确认,全部在PIN解锁前,expected-state再入事务校验;此为源码交接,不是B组合或真实控制台验收。
没有新增TTY/环境变量/HTTP/SSH/回环/管道/PIN参数替代路径,没有升级自动扩grants。preflight只列CA公开库存/有限操作及签署策略摘要;旧CA逐项重签/撤销批准、真实物理控制台接受/拒绝证据仍缺失,继续open/blocked。没有生产密钥、资金或外发。
Merge #118: integrate recovery safety without weakening current autho…
Merge pull request #153 from TokenNotIncluded/fix/rotation-slice-2026…
fix: reject stale Root authority and replay bans without inherited ex…
Merge PR #185: Python 3.15 quality and verified deployment artifacts
LIghtJUNction commentedon Sep 29, 2026
2026-09-29 当前接续(#185 已合并)
main
5cdaeba2b7b191a27684093cce7b5a153c99c88d/ tree3ad68f2012896310abfa9bcaf800c9ab05f6c886已实际读回,等于最终PR通过的树。18个PR工作流全部success;8份ZIP摘要/JUnit node-ID独立核验 2531 core + 8 conformance,零失败/错误/跳过。精确来源和产物摘要见 #185证据,更新索引见#83。合并后main push是独立运行,正在核验,不预记成功。现有有限CA/Root/轮换/恢复/OS控制台拒绝矩阵重新通过;正式bank fund双批准/注资边界与official market_e2e已在main,不再以旧#103未合并作为当前缺口。隔离Test Root与真实非root拒绝不是物理控制台成功证据;实际有限存量CA清单、授权操作者VT/串口及PIN复核仍缺。没有Root/资金/信任变更。
各条款源码入口与独立现场材料见
docs/RELEASE_ACCEPTANCE.md。本评论更新证据归属,不降低原验收范围或扩大现场权限。LIghtJUNction commentedon Oct 3, 2026
2026-10-03 收敛剩余范围:当前已部署版本保留默认 Root 本机门槛,同时指定的 money/bank 操作已经支持显式
--allow-ssh;OS root、交互终端、PIN、精确确认、Root 签名与审计要求仍在。不能继续把“所有 Root money 操作一律不得显式 SSH”当成尚待实现的旧要求;非获准操作和默认拒绝路径不放宽。本 issue 继续追踪实际存量 Root/online CA/下级链的有限授权差异、显式迁移与撤销方案,以及相应实际控制台/信任治理证据。#219 的客户端主体选择修复按功能收口;旧服务账号的合法退役/归档仍是独立存量治理待办,本次没有执行。升级代码不自动扩充任何旧凭据或 CA 权限。
[-][P1] 存量 CA/Root 授权治理与真实本机控制台验收[/-][+]存量 CA 权限差异、旧服务账号退役与本机操作验收[/+]