Files
vscode-workbench/SECURITY_DECISIONS.md
T

4.1 KiB
Raw Blame History

安全遗留拍板清单 / SECURITY_DECISIONS.md

日期: 2026-09-25 · 前置: 全局检测报告(架构/安全/业务/部署四方向)· 状态: 执行轮 R2

已执行(R2, 2026-09-25)

  1. D1 git 历史清理 ✅:git filter-repo 清除 docker.env 与 rustdesk-config-export/ 全部历史(验证命中 0),重写前备份 backups/vscode-pre-rewrite-20260925.bundle,已 force push(02d2740→d409606)。Gitea 服务端旧对象需等其 GC,短时间旧 SHA 仍可能直达,根治靠密钥轮换。
  2. RustDesk 永久密码 ✅:本机被控端已通过提权 CLI 更换(新密码见交付记录/本地 docker.env 同批)。服务器侧白名单仍待做(见 D2 余项)。
  3. 新密钥已生成 ✅:POSTGRES / REDIS / DJANGO_SECRET_KEY 三项新值已写入本地 docker.env(untracked),尚未在服务器生效(原因见「阻塞」)。
  4. D5 主工程归属 ✅:chunyu_project 与 chunyu_project_react 各有独立 gitea 仓库(root/chunyu_project、root/chunyu_prject_react——注意 react 仓 URL 拼写少 e,能用但建议改名)。
  5. D4 结论:registry 13 模型已有 grade;六维合计 42 vs total_max=36 的基准问题未动,需评分口径拍板(改哪边决定是否重算历史 grade)。
  6. B6 复核 ✅:88 项产物实际已在 6d22fb1 出库,跟踪数现为 0。

阻塞:生产密钥轮换暂缓(等磁盘修复,避免造成停机)

服务器事故(本轮发现,先于本操作存在):/dev/sdb1(挂载点 /mnt/sda)整盘目录级 I/O 错误;chunyu-backend 的代码卷 /mnt/sda/chunyu/chunyu_project → /app 在该盘上,容器已 unhealthy(健康检查 OSError: [Errno 5] /app,连败 2449 次),站点首页/SPA 路由 500、部分 API 仍 200。服务器未装 smartctl,dmesg 无输出,需现场检查盘/线/换盘 + fsck。

轮换不能现在做的原因:改 POSTGRES/REDIS/DJANGO_SECRET_KEY 必须重建 backend(env 变更),而 compose 文件在坏盘上(docker compose 读不到就无法回滚),重建失败=整站下线。

磁盘恢复后的轮换 runbook(约 5 分钟,期间 backend 短暂重启、旧 session 失效):

# 1) 备份并替换服务器 docker.env(本机 docker.env 即新值源;保持权限 600)
cp /mnt/sda/chunyu/docker.env /mnt/sda/chunyu/docker.env.bak-$(date +%Y%m%d)
# 用 scp/上传覆盖 /mnt/sda/chunyu/docker.env(含新 POSTGRES/REDIS/SECRET,DJANGO_DEBUG=False)
# 2) 改库密码(pg-main 共享库,只动 chunyu 角色)
docker exec pg-main psql -U postgres -c "ALTER USER chunyu WITH PASSWORD '<新POSTGRES_PASSWORD>';"
# 3) 重建受影响容器(用与原部署相同的 compose 命令/env-file 方式)
cd /mnt/sda/chunyu && docker compose up -d --force-recreate redis backend
# 4) 验证:docker ps 健康、curl 首页/登录、redis-cli -a 新密码 ping

注意:新 docker.env 已含 DJANGO_DEBUG=False(生产现在是 True,一并收紧);EMAIL_HOST_PASSWORD 未轮换(需邮件服务商后台改);轮换后本机 redis/postgres MCP 连接配置需同步换新密码。

待拍板余项

  • D2 余项:103.40.14.100(frp 入口)与 LAN rustdesk-s6 的防火墙/白名单收紧。
  • D3 余项:B2 生产 TLS+HSTS、B3 服务器防火墙收紧、B5 容器 USER 非 root。
  • D4:registry 分值基准 36 vs 42 拍板后改。
  • 服务器磁盘 /dev/sdb1:现场检修 + 考虑把 chunyu 部署迁回 nvme 系统盘并纳入备份。

R1 已修(仅本仓库,2026-09-25 上午)

  1. rustdesk-config-export 出库 + ignore(磁盘文件保留)。
  2. nginx-docker.conf 四个自带 add_header 的 location 补齐安全头(修继承丢失);线上生效需服务器手动 restart frontend。
  3. PLANNING/tasks.py state.json 原子写。
  4. infra/backup.sh 可选 BACKUP_REMOTE_DIR 异步同步。

注意事项

  • 本轮提交推送后,其他机器 git pull 会从其工作区移除 rustdesk-config-export 目录;若服务器有引用请先拷贝。
  • 本地 docker.env 已是新密钥:本地下次起 dev 时,本地 postgres_data 卷仍是旧密码,需先 ALTER USER 或清 dev 卷。