Scert/doc/部署事务人工核查任务清单.md
xuans 84f766a0fc 记录历史事务仅记录处置结果
补充两条无可信恢复基线事务的正式本机处置编号、菜单查询证据和未改写原事务的安全边界。
2026-10-04 15:38:40 +08:00

246 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署事务人工核查任务清单
## 2026年10月4日00:40 重新核查与人工处置实机复核
- [✓] R6-A 至 R6-D:实现、五包专项与竞态、后端全量、静态检查及三数据库持久化复核通过;审计失败、重开、历史不变与危险场景拒绝仍有断言。
- [✓] R6-E:`e00a757` 经官方安装器升级第一台,schema25;正式菜单五收尾原 uncertain 成功,菜单四独立查询确认结果。
- [✓] 新核查 `798e7235b4491c6ca6fc4e49b2e03f98a68ece86fd40a836df451a0931477d1f` 为 succeeded/committed,关联原处置;开始和结束审计完整,原事务 committed,处置占用为零。
- [✓] 原 uncertain 历史保留,没有直接修改数据库、重放原动作或手工删锁;第二台严格 HTTPS 200。
- [✓] 人工回滚处置 `c341a3afffa758cc2773ff26ae436e4ef4df3e4d6da08b9ec0cd03e3b53042e3` 为 succeeded/rolled_back,正式菜单查询一致,审计完整、占用释放。
- [✓] 人工提交处置 `a7b2b4d03b6e6768b793d930acc0b6ff577d77a51a139324edba46711e24ce2a` 在 running 时断开 SSH,重新密码登录通过菜单四查询 succeeded/committed;未重复提交,审计完整、占用释放。
- [ ] 不同版本证书回滚仍须实测;本次两个动作都使用同一张有效正式证书,不扩大结论。
- [!] 两条缺可信旧基线历史事务仍为 recovery_required,不因本次成功解除。
## 2026年10月3日23:58 重新核查任务进度
- [x] R6-A:绑定原处置、方向、服务器和现场摘要,拒绝运行中或缺失可信证据的来源。
- [x] R6-B:迁移二十五、原子占用交接及新审计已实现,保留原 uncertain;正在补充实库重开验证。
- [x] R6-C:只读文件及残留核验、严格 HTTPS 后复核、关闭检查完成;专项负向和竞态通过,不执行远端写操作。
- [x] R6-D:本机菜单五、完整确认、单次令牌、会话绑定、断连查询已实现,五包专项和竞态通过;三数据库门禁仍待本批结果。
- [~] 最新后端全量、静态检查和隔离 MySQL/PostgreSQL 正在运行。上批严格 umask 全量已通过,不再沿用旧的“等待权限回归”状态。
- [ ] R6-E:正式 Linux 包升级和实机 uncertain 收尾尚未执行,其他无可信基线历史事务继续保留。
本节优先于下方历史清单。未清理生产数据库、未创建辅助验收脚本、未开放新网络端口。
## 2026年10月3日23:30 不确定处置重新核查任务
沿用已确认的 Linux 范围,不增加网络入口,不直接修改现场事务或删除占用。
- [✓] 上轮静态检查通过;后端全量唯一失败已定位:宿主 umask 为 0077,测试创建的父目录从开始就是 0700;原代码在显式 umask 0022 下通过,不能归因于备份修改权限。
- [x] 测试显式建立 0755 权限基线,不修改进程 umask 或产品权限策略,等待 Linux 严格 umask 回归。
- [~] R6-A 独立重新核查动作:绑定原 uncertain 处置编号、原方向、服务器身份和本次现场摘要;只允许已完成审计的 uncertain,不以超时接管 running。
- [ ] R6-B 持久化关联与占用原子交接:新增处置审计,保留原 uncertain;拒绝或核查失败恢复原占用,结束审计失败保留新占用;成功才原子结束原事务并释放占用。
- [ ] R6-C 只读远端重新核验:仅限原方向对应的 verified 阶段,核验全部文件、临时文件与备份不存在、锁不存在、严格 HTTPS 和关闭结果;不得重载、删锁、重写或重放原动作。
- [ ] R6-D 受保护本机终端单独入口、完整确认、一次性绑定、断连查询及三数据库回归。
- [ ] R6-E 正式 Linux 包升级和当前真实 uncertain 处置收尾;其他不满足严格收尾条件的历史事务继续保留,不能用本功能冒充完成。
## 2026年10月3日23:08 实机关闭误判整改任务
- [✓] 真实 SIGKILL 中断部署后,两条事务自动回滚,第二台正常 DNS 严格 HTTPS 仍通过。
- [✓] 短暂限制 Scert 用户到第二台 SSH 后形成真实待恢复事务;限制已撤销,未改变历史证据或手动删锁。
- [!] 正式人工提交完成远端收尾,却持久化 uncertain;该记录及占用保留,不直接改终态或重放。
- [✓] 第一台 Linux 真实 SSH/SFTP 协议回归复现:健康连接主动关闭后返回连接已关闭错误,原用例失败。
- [~] 修复主动关闭的预期 SFTP 错误分类和并发幂等,保留既有断连及非预期关闭错误。
- [ ] 完成 Linux 竞态、执行器负向及后端回归,构建干净候选包并重新实机验证人工提交、回滚和断连查询。
本轮复用同一有效证书,不表示不同证书版本切换已验收;原两条无可信旧基线事务不在本次修复中解除。
## 2026年10月3日22:44 真实恢复拒绝证据
- [✓] 对事务 `20261003-142919.192475924-417b9bcc5b09`,真实本机终端选择恢复基线并完整确认;因历史 `previous_fingerprint` 为空,返回处置已拒绝,未执行远端变更。
- [✓] 处置 `278d050dc33d6775d8eb453b74e0a0691f8cff9be2531476678b34b423fc9e85` 的数据库结果为 action=restore_baseline、status=rejected、result_code=rejected。
- [!] 目标站点未配置且可信旧 HTTPS 基线缺失;原事务及锁保留。既有另一 `.apmmk.cn` 站点的导入成功不能成为该事务的历史基线。
- [ ] 人工提交和回滚成功场景、执行中强制断连、历史无证据事务仍待直接证据;不得将本次拒绝算作恢复完成。
## 2026年10月3日22:32 正式终端真实事务验证
- [✓] 第一台已安装干净 `a5dfd42` 候选包;root 前台 `systemctl start Scert-admin` 显示四项菜单,非终端输入按预期拒绝。
- [✓] 第二域名实际推送失败后,菜单二列出两条有历史记录的待恢复事务;对 `20261003-142919.192475924-417b9bcc5b09` 核查显示三类目标文件均不存在,三个锁存在且归属匹配。
- [✓] 菜单三选择仅记录核查,经完整确认后返回已记录;处置编号 `dd256d2258a1a3a5e28d53593638a8997ed71b3d09420e20b5542a4037dd146d`。
- [✓] 退出后重新启动终端,菜单四按处置编号查询返回相同已记录结论;没有修改原部署事务终态。
- [!] 第二域名第一台站点返回 `*.salg.cn` 证书,不符合目标域名;两目标恢复未确认,保持锁和证据,继续检查实际站点配置。
- [ ] 实际完成提交、恢复基线、执行中强制断连及历史无证据事务仍待验证,不以仅记录或普通重新连接代替。
## 2026年10月3日22:03 本机处置回归终态
- [✓] R4 最新 PostgreSQL/MySQL 实库、SQLite 执行器竞态、静态检查及后端全量全部正常结束,五项退出码零。
- [~] R5 修正正式包管理员单元和操作说明中的旧网页重置流程,改为真实本机终端、邮箱验证、三动作及断连查询。
- [ ] R5 实际 systemd 交互和真实 SSH/TLS 动作尚未验证,不能把实库中的远端夹具记作生产通过。
## 2026年10月3日21:48 外部数据库复核
- [✓] R3-F/G/H 本机接入源码回归全部结束,HTTP 全包竞态通过;正式包入口尚待验证。
- [✓] R4-D PostgreSQL 14.24:迁移 22—24 中止事务后重入通过;三动作、开始/结束审计失败、连接池重开查询与占用,以及八并发幂等通过。
- [✓] R4-E MySQL 5.7.44:执行器同一十场景通过,不提升业务账户权限。
- [~] 新增测试后的 SQLite 执行器回归、静态检查与后端全量正在执行。
- [ ] R5 正式包、实际终端与双机文件/HTTPS 动作,以及完整首次 Web 与系统邮件门禁尚未完成。
## 2026年10月3日21:32 本机接入与下一批任务
沿用已确认需求,不增加恢复网络端口,不处理 Windows。
- [x] R3-F 会话准备、单次执行、持久结果查询;真实对端身份、过期、取消、关闭、管理员变化、错误令牌和跨会话执行拒绝。
- [x] R3-G 各动作字段互斥、严格响应验证、分片混合载荷拒绝、nonce 轮换和旧请求拒绝。
- [x] R3-H 终端明确选择三动作、展示风险、完整确认;令牌不输出,断连按处置编号查询而不自动重试。
- [✓] Linux 三包竞态、HTTP 本机恢复专项竞态、完整静态检查及普通全量通过,包含真实 Unix socket;不是 SSH 文件动作或真实数据库验收。
- [~] HTTP 全包竞态继续运行,等待权威终态。
- [ ] R4-D PostgreSQL 隔离实库:严格 TLS、仅回环、自建数据库;验证迁移、三动作、审计故障原子性、幂等冲突与重开占用/查询。
- [ ] R4-E MySQL 必要执行器实库补充;R5 正式 Linux 包、双机生产闭环和邮件门禁。
## 2026年10月3日21:00 本机协议接入任务
本节覆盖下方历史进度,需求沿用已确认范围:只处理 Linux,受保护本机通道,不增加公网恢复入口。
- [✓] 最新八份源码的部署竞态、SQLite 五场景、完整静态检查及后端全量通过;任务 `scert-executor-final-20261003-2052.service` 已结束,退出码全部为零。
- [x] 底层执行器检查点 `bf4caeb` 已提交并推送;根目录未跟踪文件保持不动。
- [~] R3-F 本机会话接入准备、执行和查询;只取对端身份,确认对象留在服务端,一次尝试即清空。
- [ ] R3-G 协议字段隔离、严格响应校验、分片混合载荷拒绝、防重放和会话失效测试。
- [ ] R3-H 管理员终端展示动作风险、事务和处置编号,明确确认后执行;断连不自动重放,支持重新连接后查询。
- [ ] R4/R5 必要外部数据库、正式 Linux 包、双机真实生产闭环;整体生产验收未通过。
## 2026年10月3日20:52 本轮执行任务
沿用已确认的 Linux 整改范围,不增加公网接口,不处理 Windows。本节优先于下面历史进度。
- [x] R3-B/R3-C:短时一次性确认、操作者/动作/准备摘要绑定,副本共享消费状态,失败确认不可重放。
- [x] R3-D/R3-E:记录、提交、回滚三个明确动作接入共同互斥及持久化开始/结束审计;增加不重放、不释放占用的脱敏查询。
- [✓] R4-C 部分回归:并发消费、取消等待、核验/连接收尾/审计期间互斥、失败不切换方向、历史核验阶段重新检查,以及 SQLite 审计失败后真实关闭重开数据库保留占用通过。
- [~] 最新未知临时文件漏项拦截与查询补充正在回归;尚未通过本机终端执行真实服务器动作,不将 R3/R4 整项标完成。
- [ ] R3 本机协议和管理员终端接入;完成之前不对用户开放写入口。
- [ ] R4 PostgreSQL 等必要实库与 R5 正式包生产门禁,仍未完成。
## 2026年10月3日20:20 最新复核结论
- [✓] 部署和自动恢复共同互斥、持久化占用检查及数据库重开拦截专项通过;本批后端全量、竞态和静态检查通过。
- [ ] 人工执行器尚未接入共同互斥;一次性本机确认、三动作、本机协议和终端以及 PostgreSQL 实库仍待完成,R3/R4 整体保持进行中。
- [~] 本节覆盖下方全量运行中状态;正式生产验收未通过。
## 2026年10月3日20:17 最新任务状态
- [x] R4-A 部署及自动恢复进程内互斥、持久化占用识别已接入;涵盖站点核验、提交、恢复核验和连接收尾,等待可取消。
- [x] 部署竞态、完整静态检查及数据库关闭重开后真实服务拒绝自动重放通过。
- [~] 最新后端全量仍运行中;R4-A 整体还需人工执行器接入同一互斥,不能标整项复审通过。
- [ ] R3 一次性本机确认、记录/提交/回滚三动作及本机协议与终端,R4 PostgreSQL 实库,R5 正式包验收。
## 2026年10月3日20:04 最新任务状态
- [x] 持久化补充竞态、MySQL 迁移十二场景和仓储六场景通过;仓储审计故障注入权限问题已在测试夹具层修复。
- [~] R4-A:完整部署互斥、自动恢复占用识别及失败关闭;尚未形成执行器端到端链路。
- [ ] R3 一次性本机确认和三类动作、本机协议与终端接入、PostgreSQL 实库及正式包验收仍待完成。
## 2026年10月3日19:43 最新任务状态
- [x] R1/R2 底层及本机入口的最新 Linux 三包竞态、完整静态检查、HTTP 全包竞态通过;仍待正式包复审。
- [~] R3-B/R3-C:准备绑定及重新核验基础通过;一次性确认凭据、本机终端和动作执行尚未接入。
- [~] R3-D/R4-A/R4-B:独立处置表、占用表、事件表和仓储已编码;原子开始/结束、幂等冲突、不确定占用保留的第一轮竞态通过。完整部署生命周期互斥尚未接入。
- [~] R4-C/R4-D:故障注入第一轮通过;补测真实数据库重开、MySQL DDL 中断与实库审计。PostgreSQL 实库尚无本轮证据。
- [ ] R3-E/R5:真实动作资格、执行链路、正式候选包和双机生产闭环未完成。
- [~] R6:同步总清单、开发清单、执行清单、设计和 Linux 测试记录;生产验收保持未通过。
## 2026年10月3日19:02 边界整改结果
本节优先于历史记录。
- [x] 长路径响应分片已实现,单帧 16 KiB、数据片 8 KiB、最多四十八片;保持一次采样,完整验证后才返回结果。
- [x] 长路径六倍 JSON 转义、后续请求、二十类异常分片、总量超限及取消用例通过;最新本机协议、管理员终端和部署三包竞态通过。
- [x] SQLite 截止时间专项重复二十次及后端完整静态检查通过。
- [!] 旧五包竞态四包通过,HTTP 依赖编译达到运行上限;整体退出码一。
- [~] 最新后端全量及 HTTP 竞态继续验证,R2 仍待完整和正式包复审。
- [ ] R3、R4 独立人工处置及持久化审计未完成,R5 未部署本轮候选包,总体验收未通过。
## 2026年10月3日18:52 本机核查响应边界整改
本节为最新执行入口,保留后续历史记录。需求确认:只处理 Linux,第一台用于部署、第二台用于推送;核查仍为只读,不增加公开接口,不改变历史事务。
- [x] 修改前检查点 `75b3b71` 已提交并推送,保存数据库截止时间修复及人工处置设计。
- [x] 修复后原生 Linux 后端全量退出码零;数据库、部署、本机协议及管理员终端四包竞态已通过,HTTP 包仍在编译,不能记为五包通过。
- [~] R2 边界整改:合法长路径可能使完整核查结果超过 16 KiB;保持单帧上限,采用有序、有总量上限的分片,仅采样一次,不截断路径,不暴露部分结果。
- [ ] 覆盖长路径及 JSON 转义膨胀、丢片、乱序、随机令牌变化、混合载荷、超限、取消及后续请求;完成原生 Linux 回归与静态检查。
- [ ] R3、R4 独立人工处置及审计尚未编码;不得将只读核查当作恢复闭环。
- [ ] R5 正式候选包部署与生产流程复审未完成,总体验收仍未通过。
## 2026年10月3日18:28 最新范围与执行状态
本节取代下方历史“当前”状态。第一台负责 Scert 部署测试,第二台仅负责证书推送测试;R5 不再要求双机部署 Scert 主服务,已有服务不擅自卸载。
- [x] R1:只读底层已完成,等待完整流程复审。
- [~] R2:入口与 Linux/HTTP 专项已完成;最新全量存在环境缺失及 SQLite 截止时间失败,正在修复。竞态、静态检查和正式包验证未完成。
- [ ] R3、R4:独立人工处置、再次核验、确认幂等、部署互斥、审计原子落库仍未完成。
- [ ] R5:第一台正式安装器部署新包,第二台作为推送目标验证恢复闭环;历史缺证据事务不得伪造提交成功。
- [~] R6:同步各清单。修改前检查点 `978f023` 已推送,生产验收未通过。
> 当前状态以文末 2026年10月3日17:22 补充为准:R1 已完成等待复审,R2 至 R5 未完成,R6 持续同步。
## 2026年10月3日 需求确认与执行顺序
依据现有整改清单的 P0-10 恢复门禁继续开发,仅处理 Linux。人工核查不能用当前正常状态补造历史部署证据;不能直接修改生产数据库终态。
- [~] R1:实现只读现场核查,读取目标、临时文件、备份及锁的状态,返回摘要与匹配情况,不返回私钥、密码或锁令牌。
- [ ] R2:通过现有受保护本机 IPC 接入列表与核查入口,不注册公网 HTTP 路由,不增加 TCP 监听。
- [ ] R3:设计独立人工处置记录、明确确认及再次核验;有可信历史证据才允许提交或回滚。缺历史证据的事务不得伪装为历史提交成功。
- [ ] R4:补齐确认幂等、并发部署互斥、审计原子落库、取消及失败保留现场测试。
- [ ] R5:构建 Linux 候选包,经正式安装器部署后,用两台服务器核查旧事务,验证真实 HTTPS 和恢复结果。
- [ ] R6:更新总整改清单和生产测试记录;人工核查功能完整复审之前,P0-10 和总体生产验收不得标为通过。
## 本轮边界
- 只读核查结果属于采样观察,不是事务快照,不构成远端 Nginx reload、HTTPS 或部署终态证据。
- 服务器身份或历史路径无效时拒绝读取;证据缺失时明确报告,不自动生成恢复证据、不删锁、不清理现场。
- 保留现有密码重置通道的身份校验及邮箱验证码要求,不因接入核查而降低密码重置安全边界。
- Git 修改前检查点为 ba57490;推送收到 Authentication failed,本地继续,远端同步仍待解决。
## 2026年10月3日17:22 当前进度补充
本节优先于下方历史状态;保留历史原文,不替换中文字符。
- [x] R1:只读核查底层已实现,待产品入口和完整流程复审。整体操作限制为 30 秒,尊重调用者更短的超时;读取失败或取消时返回空结果,不把部分观察当成成功。
- [x] 锁归属读取增加类型和大小检查:拒绝符号链接锁目录、符号链接归属文件及超过 128 字节的归属文件,限制实际读取长度。
- [x] 原生 Linux 专项通过:5 个取消边界、较早超时保留、9 个真实密码 SSH/SFTP 场景、原有只读核查和恢复预检用例。不可读文件场景以 nobody 用户运行并通过,没有因 root 权限跳过。
- [x] 部署包全量竞态测试通过:`go test -race -count=1 -timeout=240s ./internal/deployment`,退出码 0;`go vet ./internal/deployment` 退出码 0。
- [ ] R2:本机 IPC、终端列表及核查菜单尚未接入,不能将底层方法描述为用户已经可以使用的功能。
- [ ] R3、R4:人工处置、确认幂等、并发互斥和独立审计尚未完成;本轮取消测试不代表人工处置流程全部完成。
- [ ] R5:此次新代码尚未进入双机正式候选包,不改变线上历史事务状态。
- [~] R6:同步总清单、执行清单、开发清单和 Linux 测试记录;总体生产验收保持未通过。
修正历史 Git 状态:`ba57490` 后续已经推送成功;本轮修改前检查点 `80b6c0c` 也已推送成功,不再存在该检查点认证阻塞。
证据目录:第一台 `/var/tmp/scert-inspection-20261003-1714/`,专项 `inspection.log`、竞态 `deployment-race.log`、静态检查 `deployment-vet.log`。这里运行的是项目内 Go 测试,不是辅助验收脚本;未清理业务数据库、证书或恢复现场。后端全量测试已启动,结果另行记录。
### 17:35 全量验证状态跟进
联网全量运行因代理不可达中止;首次离线全量运行出现 SSH 响应异常后主动中止,均未记为通过。生产 Scert/nginx 已复核 active,本机严格 TLS 的 `/readyz` 返回 200。当前以受限 Linux 单元运行后端全量测试,内存上限 650 MiB、CPU 50%,结果仍待获取。R1 的专项、竞态和静态检查结论不变,R2 至 R5 仍未完成。
## 2026年10月3日18:06 当前执行状态
本节优先于后续历史记录。本轮仅处理 Linux;修改前检查点 `c9045a0` 已提交并推送。
- [x] R1:只读现场核查底层已完成,仍等待产品完整流程复审。
- [~] R2:本机入口已编码,正在执行原生 Linux 验证;尚未部署生产候选包。
- [x] 待恢复事务按标识排序、每页五条,仅返回摘要;不返回凭据、原始错误或历史证据内容。
- [x] 复用受保护的本机通道,未增加 HTTP 路由或 TCP 监听;核查与密码重置阶段互斥,逐次更换随机令牌。
- [x] 终端增加只读核查菜单、翻页及选择,转义终端控制字符,明确区分当前采样与历史部署证据。
- [x] 第一批原生 Linux 部署、本机协议、管理员终端三包测试退出码为零。
- [~] 新增真实 Unix socket 菜单集成测试、异常响应拒绝测试和 HTTP 会话边界测试,等待最新版本复跑及竞态检查。
- [ ] R3:独立人工处置记录、再次核验和可信证据限定的提交或回滚未完成。
- [ ] R4:人工处置幂等、并发互斥与原子审计未完成;R2 协议测试不替代这些门禁。
- [ ] R5:本轮修改未进入正式候选包和双机部署,不改变生产历史事务。
- [~] R6:同步总清单、执行清单、开发清单和生产测试记录。
上一轮后端全量测试触发二十分钟运行上限,退出码为一,不能记为通过。已确认对应单元终止、主进程为零。第一批 R2 专项日志为第一台 `/var/tmp/scert-local-recovery-20261003-1757/unit.log`;HTTP 专项尚在同目录 `http.log` 对应的受限单元中运行。未清理生产数据库、证书或恢复现场,未创建辅助验收脚本。
## 2026年10月4日15:36 两条历史事务仅记录处置
- [✓] 第一条事务 `20261003-142919.192475924-417b9bcc5b09` 完成正式菜单 3“仅记录核查”,处置编号 `f23507a439fb63e2c829ac9c01020af560ce46dd96b248da851991516195212d`;菜单 4 查询一致。
- [✓] 第二条事务 `20261003-142924.300953335-fac63bc92b1f` 完成正式菜单 3“仅记录核查”,处置编号 `0f65a3d3c4fe8cb881e61e6e39f86747767a8e21421b9d6ca02ea46bf7ad208b`;菜单 4 查询一致。
- [✓] 两次处置仅保存核查审计,均未改变原事务终态、未释放锁、未执行远端写操作。
- [!] 两条事务仍不能标记为历史部署成功;不同证书回滚和其余生产门禁不受该结果替代。