版本 0.9.x
概览
版本 0.9.x 是一个主要版本,引入了一个全面的 用户访问控制和安全系统。此版本将 duplistatus 从一个开放访问的应用程序转变为一个安全的、基于角色的多用户系统,具有综合的审计日志记录和企业级的安全功能。所有现有的功能现在都受到认证保护,只有授权的用户才能访问和管理备份监控。
重大变化
认证要求
- 所有页面现在都需要认证 - 用户必须登录才能访问应用程序
- 默认管理员帐户会自动创建:
- 用户名:
admin - 密码:
Duplistatus09(必须在第一次登录时更改)
- 用户名:
- 现有的会话将被失效 - 所有的用户必须在升级后登录
- API 端点现在需要认证 - 外部集成必须包含会话 cookie 或使用认证请求
警告
所有用户必须在升级到版本 0.9.x 后登录。 默认管理员凭证是 admin/Duplistatus09。请立即在第一次登录后更改密码。
数据库模式迁移
- 从 v3.1 到 v4.0 的自动迁移,适用于现有的安装
- 添加了新表:
users,sessions,audit_log - 在迁移前自动创建数据库备份
- 新安装直接从模式 v4.0 开始(无需迁移)
新功能
用户访问控制和安全系统
认证系统
- 用户登录/注销功能,具有安全的会话管理
- 基于密码的认证,使用 bcrypt 哈希(成本因子 12)
- 帐户锁定机制(5 次失败尝试,15 分钟锁定)
- 强制密码更改,在第一次登录时
- 密码策略执行:
- 最少 8 个字符
- 至少一个大写字母
- 至少一个小写字母
- 至少一个数字
- 特殊字符可选
- "记住我" 功能,使用用户名在 localStorage 中持久化
- 基于会话的认证,使用数据库支持的会话(取代内存)
- CSRF 保护,集成认证
- HTTP-only cookie,用于会话安全
- IP 地址和用户代理跟踪,用于安全监控
用户管理(仅管理员)
- 用户创建,自动生成临时密码
- 用户列表,具有搜索、分页和过滤功能
- 用户编辑(用户名、管理员状态、密码更改要求)
- 密码重置功能,显示临时密码
- 用户删除,具有安全措施(防止删除最后一个管理员)
- 基于角色的访问控制(管理员/用户角色)
- 状态指示器(活动、锁定、必须更改密码)
- 最后一次登录跟踪和显示
审计日志系统
- 全面审计跟踪,用于所有系统更改和用户操作
- 审计日志查看器,具有高级筛选功能:
- 日期范围筛选
- 用户筛选
- 操作筛选
- 类别筛选
- 状态筛选
- 导出功能(支持CSV和JSON格式)
- 审计日志统计和分析
- 可配置的保留期(30-365天,默认:90天)
- 自动清理定时任务(每天2点UTC运行)
- 手动清理API,支持dry-run
- 审计日志记录以下内容:
- 身份验证事件(登录、注销、密码更改、账户锁定)
- 用户管理操作(创建、更新、删除、密码重置)
- 配置更改(电子邮件、NTFY、模板、过期容忍度、备份设置)
- 备份操作(收集、删除、清理)
- 服务器管理(添加、更新、删除)
- 系统操作(迁移、清理、通知)
设置页面重设计
- 现代侧边栏导航,具有可折叠的侧边栏
- 用户特定的侧边栏状态持久性(每个用户保存折叠/展开偏好)
- 分组设置部分:
- 通知:备份通知、备份监控、模板
- 集成:NTFY、电子邮件
- 系统:服务器、用户(仅管理员)、审计日志
- 粘性侧边栏,在滚动时保持可见
- 响应式设计,优化间距
- 设置图标和“系统设置”标题,位于侧边栏头部
- 后退按钮,集成到应用头部
用户界面增强
- 独立登录页面,采用现代设计
- “记住我”复选框,用于登录表单的用户名持久性
- 显示/隐藏密码按钮,用于登录和密码更改表单
- 更改密码模态窗口,具有实时验证清单
- 用户指示器和注销按钮,位于应用头部
- 基于角色的UI可见性(仅管理员可见的功能对普通用户隐藏)
- 状态徽章和指示器,遍布整个UI
- 用户特定的偏好,存储在localStorage中(例如,侧边栏折叠状态)
安全功能
- 密码哈希,使用bcrypt(行业标准)
- 敏感数据清理,在审计日志中(密码、令牌、密钥永远不会记录)
- 登录尝试速率限制
- 会话过期(24小时)
- CSRF令牌验证,用于所有状态更改操作
- 管理员恢复CLI工具,用于密码重置(如果被锁定)
开发者工具
- 管理员恢复CLI脚本(
admin-recovery),适用于Docker容器中的易用执行 - 支持本地和Docker,具有自动路径检测
- 全面TypeScript接口(无
any类型) - 身份验证中间件,用于路由保护
- 审计日志记录器实用程序类,具有便捷方法
🚀 迁移说明
从版本 0.8.x
此版本引入了身份验证,并要求所有用户登录。当从版本 0.8.x 升级时:
- 自动数据库迁移:应用程序将自动将您的数据库模式从 v3.1 迁移到 v4.0
- 数据库备份:在迁移之前创建自动备份
- 默认管理员帐户:创建一个默认管理员帐户:
- 用户名:
admin - 密码:
Duplistatus09 - 您必须在第一次登录时更改此密码
- 用户名:
- 会话失效:所有现有的会话都将失效
- 用户登录所需:所有用户必须在升级后登录
- API 身份验证:外部集成必须更新以包含身份验证
安全考虑
- 更改默认密码:在第一次登录后立即更改默认管理员密码
- 创建用户帐户:为每个需要访问的人创建单独的用户帐户
- 审查审计日志:定期检查审计日志以进行安全监控
- 配置保留期:根据您的合规性要求设置适当的审计日志保留期
- 备份主密钥:如果从 0.8.x 升级,请确保
.duplistatus.key文件已备份
首次登录步骤
- 使用默认凭据登录 (
admin/Duplistatus09) - 当提示时更改密码 (强制在第一次登录时)
- 为其他用户创建用户帐户 (设置 → 用户)
- 根据需要配置审计日志保留期 (设置 → 审计日志)
- 审查审计日志以验证系统是否正常工作
🐛 错误修复
- 修复了服务器重启时会话持久性问题
- 改进了身份验证失败的错误处理
- 增强了密码验证反馈
- 修复了设置页面中的 UI 不一致性
- 改进了审计日志过滤性能
API 端点
身份验证端点
POST /api/auth/login- 用户身份验证POST /api/auth/logout- 会话终止GET /api/auth/me- 当前用户信息POST /api/auth/change-password- 密码更改
用户管理端点 (仅管理员)
GET /api/users- 列出用户POST /api/users- 创建用户PATCH /api/users/{id}- 更新用户DELETE /api/users/{id}- 删除用户
审计日志端点
GET /api/audit-log- 查询审计日志GET /api/audit-log/download- 导出审计日志GET /api/audit-log/stats- 审计统计信息POST /api/audit-log/cleanup- 手动清理 (仅管理员)GET /api/audit-log/retention- 获取保留设置PATCH /api/audit-log/retention- 更新保留 (仅管理员)
注释
所有 API 端点现在需要身份验证。请参阅 API 参考 以获取有关身份验证的详细信息。
支持
获取帮助
报告错误
报告错误时,请包括:
- 版本: 0.9.x
- 操作系统和版本
- Docker 版本
- 错误消息和日志
- 重现步骤
- 用户角色 (管理员/用户) 如果相关
更新日志
详细更改
- 添加: 完整的身份验证和授权系统
- 添加: 基于角色的用户管理
- 添加: 全面的审计日志系统
- 添加: 设置页面重新设计,带有可折叠的侧边栏
- 添加: 管理员恢复 CLI 工具
- 添加: 密码策略强制执行
- 添加: 账户锁定机制
- 添加: 会话管理,带有数据库持久性
- 更改: 所有页面现在需要身份验证
- 更改: 数据库模式从 v3.1 到 v4.0
- 更改: 会话存储从内存到数据库支持
- 更改: 设置页面布局和导航
- 修复: 会话持久性在服务器重启时
- 修复: 各种 UI 不一致性
- 改进: 安全态势,带有全面的审计日志
- 改进: 用户体验,带有现代登录和设置页面
- 改进: 代码质量,带有 TypeScript 接口和 DRY 原则
许可
该项目在 Apache License 2.0 下许可。
Copyright 2025 Waldemar Scudeller Jr.