vdi-cloud/docs/cloud-admin-sessions-20261111.md

39 lines
4.5 KiB
Markdown
Raw 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-11-11)
已部署 `http://127.0.0.1:5182/settings` →「管理员账号」→ 对应账号的「在线登录」。仅超级管理员可查看与撤销。
## 行为
- 显示尚未退出、撤销或到期的登录凭据,支持分页和手动刷新。显示来源地址、登录时间、到期时间和浏览器/客户端,并标记当前登录。有效凭据不代表浏览器当前仍在使用。
- 「撤销登录」确认后只撤销所选登录,其他登录与密码保留;该凭据后续管理 API 请求返回 401。当前登录按钮禁用,服务端也返回 409,需使用正常退出入口。
- 新登录记录请求来源及最多 500 字符的 User-Agent;来源经过现有可信代理配置解析。代理/NAT 可能使地址显示为网关,User-Agent 可由客户端填写,均只作排查信息,不作为身份凭据。
- 升级前会话继续有效,来源与登录时间明确显示未知;不推算或伪造旧元数据。到期会话不列入有效列表。
- 查询或撤销失败显示错误并清除旧列表;取消确认不提交,切换账号不会被旧请求覆盖。
## 接口与数据
`GET /api/v1/administrators/{id}/sessions`:每页默认 20 条、最多 100 条,按到期时间及内部标识降序排列。
`DELETE /api/v1/administrators/{id}/sessions/{sessionKey}`:成功 204;不存在、已撤销、已到期或账号不匹配返回 404;本人当前登录返回 409;未登录 401,非超级管理员 403。并发撤销仅一次成功,成功撤销与 `revoke_administrator_session` 审计同事务提交。
公开的 key 为带独立用途前缀的 HMAC-SHA256 管理句柄。列表、路径和审计不暴露 JWT、内部会话标识或密码。句柄自身不能登录。事务内复查操作者当前会话及最新权限;等待期间被撤销的操作者不能继续撤销其他登录。原账号角色、启停和改密撤销全部登录的行为保持兼容。
新增 `admin_session_details` 附表,外键关联 `admin_sessions` 且删除级联。既有 `admin_sessions` 三列保持不变;旧 API 的插入仍兼容。登录与附表写入同一事务。附表无历史回填,现有管理员、密码和设备身份不重置。
## 验收
- 独立测试 PostgreSQL 的 Go 全量测试和 vet 通过,覆盖单独撤销、保留其他登录、三角色权限、当前登录保护、旧登录兼容、过期排除、来源清理与不可信代理、凭据不泄露、并发一次成功、等待锁期间操作者被撤销。
- 前端 lint/typecheck、3 项单元测试和生产构建通过;新增 4 项登录管理及原有 4 项管理员浏览器回归通过,包含确认/取消、错误处理、分页、旧响应保护、深浅主题和 390px。
- 真实临时账号建立两条登录,准确选取并撤销其中一条,旧凭据返回 401,另一条仍可读取本人资料;停用账号撤销剩余登录,审计记录仅含管理句柄。临时账号及会话已定向清理,审计保留。
- 真实深浅主题、1440/390px 界面通过,无脚本异常、失败 API 或浏览器业务写请求。既有账号密码指纹、用户授权、设备身份、告警规则及 VM 配置/电源与本轮部署前基线一致,盒子在线。未执行 VM、磁盘、GPU 或终端控制。
证据:[真实 API 核验](evidence/cloud-admin-sessions-20261111/live-verification.json)、[真实浏览器核验](evidence/cloud-admin-sessions-20261111/browser-verification.json)。首次验收脚本误把按时间倒序的第一条当作首次登录,已改为根据指定凭据的管理句柄精确选择后重验通过,应用实现无需变更。
## 部署与回退
备份 `.local/live/backups/before-admin-sessions-20261111-150936.dump`,原镜像标签 `before-admin-sessions-20261111-150936`。独立打包基线二进制与部署前 SHA-256 相同:`78f454b057fd2de9510fa966ada07654692c609181faa62dc72c96391f0d95ec`;保留已部署 GPU 代码和配置。
回退前核对后续是否另有部署,恢复原 API/console 镜像标签,并用 `.local/admin-sessions-review/compose.release.yml`、原环境文件及 `--project-directory deploy` 执行 `up -d --no-build --no-deps api console`。附表可保留,不删除业务卷或恢复整个数据库覆盖其他工作。旧 API 登录不写附表,再次升级时这些登录也会显示来源未知。
此项仅管理控制台登录,桌面串流会话仍由「远程会话」管理。专用 VM、Windows 副本、存储准备及真实快照还原继续暂缓。