Skip to content

存量 CA 权限差异、旧服务账号退役与本机操作验收 #70

Open

Description

@LIghtJUNction

当前范围 · 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

  1. LIghtJUNction commented on Sep 27, 2026

    @LIghtJUNction
    ContributorAuthor

    PR #112 已修复一个明确的根轮换存储错误:完成轮换时原代码写入 config/root/key.json,而独立布局从受保护根目录读取。现在沿实际根目录写入,并在中断恢复时保留原旧钥历史,避免把已安装的新钥误归档成旧钥。

    新增 v2 待处理日志,签名绑定旧/新信任锚、在线 CSR、加密封装及先前封装摘要;恢复时校验 CSR 持钥证明、服务/主体/钥绑定和已提交数据库状态,重复完成不重复写审计。新增“数据库已提交、私钥或信任锚尚未写完”的故障注入回归。旧 v1 待处理日志明确拒绝并要求经审查的本机恢复,不静默当作 v2 批准。

    34 个独立测试已在本地及 GitHub Python 3.15 通过,真实数据库集成及完整 CI 已在 PR 请求执行。没有绕过本机控制台边界,没有自动扩充已有证书授权,也没有操作生产 CA。

    本 issue 保持开放:真实操作系统控制台验收、既有 CA 治理/迁移,以及经操作者批准的信任过渡和回滚方案尚未全部完成。

  2. LIghtJUNction commented on Sep 28, 2026

    @LIghtJUNction
    ContributorAuthor

    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。没有生产密钥、资金或外发。

  3. added 4 commits that reference this issue on Sep 28, 2026
  4. LIghtJUNction commented on Sep 29, 2026

    @LIghtJUNction
    ContributorAuthor

    2026-09-29 当前接续(#185 已合并)

    main 5cdaeba2b7b191a27684093cce7b5a153c99c88d / tree 3ad68f2012896310abfa9bcaf800c9ab05f6c886 已实际读回,等于最终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。本评论更新证据归属,不降低原验收范围或扩大现场权限。

  5. LIghtJUNction commented on Oct 3, 2026

    @LIghtJUNction
    ContributorAuthor

    2026-10-03 收敛剩余范围:当前已部署版本保留默认 Root 本机门槛,同时指定的 money/bank 操作已经支持显式 --allow-ssh;OS root、交互终端、PIN、精确确认、Root 签名与审计要求仍在。不能继续把“所有 Root money 操作一律不得显式 SSH”当成尚待实现的旧要求;非获准操作和默认拒绝路径不放宽。

    本 issue 继续追踪实际存量 Root/online CA/下级链的有限授权差异、显式迁移与撤销方案,以及相应实际控制台/信任治理证据。#219 的客户端主体选择修复按功能收口;旧服务账号的合法退役/归档仍是独立存量治理待办,本次没有执行。升级代码不自动扩充任何旧凭据或 CA 权限。

  6. changed the title [-][P1] 存量 CA/Root 授权治理与真实本机控制台验收[/-] [+]存量 CA 权限差异、旧服务账号退役与本机操作验收[/+] on Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions