Files
vscode-workbench/SECURITY_DECISIONS.md

45 lines
4.1 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.
# 安全遗留拍板清单 / 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 失效)**:
```bash
# 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 卷。