修复隔离实库审计故障注入并更新互斥开发计划

This commit is contained in:
xuans 2026-10-03 20:02:52 +08:00
parent 17eb2fc295
commit d801fb3833
7 changed files with 59 additions and 1 deletions

View File

@ -5,6 +5,8 @@ import (
"strings"
"testing"
"github.com/go-sql-driver/mysql"
"git.pcux.cn/xuans/Scert/backend/internal/database"
"git.pcux.cn/xuans/Scert/backend/internal/deployment"
"git.pcux.cn/xuans/Scert/backend/internal/testsupport/mysqltest"
@ -56,7 +58,12 @@ func TestRecoveryDispositionMySQLReal(t *testing.T) {
t.Fatal(err)
}
if auditFailure {
if _, err := raw.ExecContext(t.Context(), `CREATE TRIGGER reject_finish BEFORE INSERT ON recovery_events FOR EACH ROW SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'injected'`); err != nil {
parsed, err := mysql.ParseDSN(cfg.DSN)
if err != nil || !strings.HasPrefix(parsed.DBName, "scert_test_") {
t.Fatal("invalid isolated database configuration")
}
schema := "`" + strings.ReplaceAll(parsed.DBName, "`", "``") + "`"
if _, err := server.Admin().ExecContext(t.Context(), `CREATE TRIGGER `+schema+`.reject_finish BEFORE INSERT ON `+schema+`.recovery_events FOR EACH ROW SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'injected'`); err != nil {
t.Fatal(err)
}
}

View File

@ -1,5 +1,14 @@
# Linux 生产流程测试记录
## 2026年10月3日20:04 MySQL 修复复测与磁盘复核
- [x] 原任务 `scert-disposition-extra-20261003-1945.service` 已失败终止:补充竞态通过,MySQL 迁移十二场景通过;仓储三个审计注入因错误 1419 失败。原日志保留,不记整组通过。
- [x] 修复任务 `scert-disposition-fix-20261003-2000.service` 成功结束;`disposition-mysql-fix.log` 显示三动作及三个审计失败回滚全部通过,`DISPOSITION_MYSQL_FIX_EXIT=0`,仓储约 32.197 秒。
- [x] 故障触发器仅由本次隔离实例管理连接创建,限定测试数据库;仓储继续使用受限业务连接,严格 TLS 与回环监听保持。
- [x] 第二台 `45.136.13.241` 根分区 29 GB,已用 2.9 GB,可用 26 GB,使用率 10%,inode 3%;Scert、scert-nginx、nginx、mysql、pmail 均 active,`nginx -t` 通过。本次只读复核。
- [ ] 上述证据仅证明专项和主机状态,不代表正式安装包、公共 HTTPS 或生产验收通过。
## 2026年10月3日19:43 自动回归及实机边界
本节覆盖先前仍标运行中的结果;这些是第一台隔离目录中的原生 Linux Go 回归,不是正式候选包验收。未清理生产数据库、未手工改历史事务、未创建辅助验收脚本。

View File

@ -1,5 +1,13 @@
# Scert 开发任务清单
## 2026年10月3日20:04 开发与回归状态
- [x] MySQL 审计故障注入改用隔离实例管理连接,受限业务连接仍执行全部仓储操作;六场景复测通过。
- [x] MySQL 迁移十二场景及补充竞态通过;`17eb2fc` 已推送。
- [~] 开发部署全生命周期互斥和持久化人工占用防护,包含取消及并发回归。
- [ ] 一次性本机确认、真实动作执行、本机交互、PostgreSQL 实库及最新后端全量仍待完成;不宣称生产可上线。
## 2026年10月3日19:43 当前开发进度
- [x] R3 只读准备与重新核验基础已编码并通过 Linux 三包竞态;HTTP 全包竞态与完整静态检查通过。原后端最新全量也已通过。

View File

@ -1,5 +1,13 @@
# Scert 整改任务执行清单
## 2026年10月3日20:04 当前执行状态
- [x] 隔离 MySQL 迁移十二场景通过,仓储三动作及三个审计失败回滚场景修复后通过。
- [x] 补充竞态通过;此前权限失败日志未覆盖,未放宽生产数据库权限。
- [~] 接入部署完整互斥及自动恢复占用检查,随后执行最新全量。
- [ ] R3/R4 整体与 R5 正式包、真实邮件、三数据库首次流程及双机验收仍未完成。
## 2026年10月3日19:43 当前执行状态
- [x] 修改前检查点 `ed0c97b` 已提交并推送,根目录 `=` 未暂存、未删除。

View File

@ -1,5 +1,16 @@
# Scert 整改、合并与优化清单
## 2026年10月3日20:04 最新执行进度
本节覆盖下方历史状态;仍仅处理 Linux,生产验收未通过。
- [x] MySQL 迁移 22—24 的十二个中断重入与结构冲突场景通过;补充数据库重开及准备绑定竞态专项通过。
- [x] MySQL 三动作正向及三个审计失败回滚场景全部通过,修复后专项退出码零,约三十二秒。原权限失败记录保留;仅隔离实例管理连接创建触发器,业务账户权限未提升。
- [x] 检查点 `17eb2fc` 推送重试成功;第二台实机复核根分区可用 26 GB,五项服务运行,Nginx 配置通过,本次未再删文件。
- [~] R4 下一批:进程内互斥覆盖普通部署、HTTPS 校验、恢复和收尾;自动恢复识别持久化人工占用,查询失败时拒绝操作且不改原事务。
- [ ] R3 一次性本机确认、动作执行器及本机协议接入,R4 PostgreSQL 实库与完整回归,R5 正式候选包及生产门禁仍待完成。
## 2026年10月3日19:43 最新执行进度
本节覆盖下方历史状态。范围仍为 Linux;第一台部署测试,第二台仅证书推送,Smail 地址为 `web.cdis.cn`。状态标记:[ ] 未开始;[~] 进行中;[x] 已完成等待复审;[✓] 复审通过;[!] 阻塞。

View File

@ -1,5 +1,13 @@
# 部署事务人工处置设计
## 2026年10月3日20:04 实现与待接入边界
- [x] 持久化 MySQL 迁移十二场景、仓储三动作及审计失败回滚六场景通过。
- [~] 下一步把普通部署、HTTPS 核验、异常收尾和自动恢复纳入可取消的进程内互斥;人工执行器必须复用同一互斥。
- [~] 自动恢复遇到持久化占用或占用查询失败时不连接远端、不更新原事务,保留人工处置绑定及现场。
- [ ] 进程内互斥不替代数据库占用和远端文件锁;一次性确认、动作专属核验、协议接入及多进程/重启验证仍需完成。
## 2026年10月3日19:43 持久化基础实现状态
- [x] 准备与重新核验基础已通过原生 Linux 竞态;HTTP 全包竞态与完整静态检查通过,准备对象仍不代表执行授权。

View File

@ -1,5 +1,12 @@
# 部署事务人工核查任务清单
## 2026年10月3日20:04 最新任务状态
- [x] 持久化补充竞态、MySQL 迁移十二场景和仓储六场景通过;仓储审计故障注入权限问题已在测试夹具层修复。
- [~] R4-A:完整部署互斥、自动恢复占用识别及失败关闭;尚未形成执行器端到端链路。
- [ ] R3 一次性本机确认和三类动作、本机协议与终端接入、PostgreSQL 实库及正式包验收仍待完成。
## 2026年10月3日19:43 最新任务状态
- [x] R1/R2 底层及本机入口的最新 Linux 三包竞态、完整静态检查、HTTP 全包竞态通过;仍待正式包复审。