vdi-cloud/docs/cloud-audit-history-20261111.md

5.5 KiB
Raw Blame History

操作审计历史查询与 CSV 导出(2026-11-11)

入口:控制台 http://127.0.0.1:5182/tasks →「操作审计」。本轮补齐真实 PostgreSQL 查询和导出,执行任务页维持原有行为。

使用方式

  • 支持关键词、操作者包含、动作、结果与自定义时间范围;时间控件提供最近 24 小时、7/30/90 天快捷项。不选时间查询全部已有历史,包含超过最近 1000 条的旧记录。
  • 动作、结果可以选择中文选项,也可输入原始代码;关键词查对象、操作者、动作、结果、请求标识和审计标识,%、_、反斜杠按普通文字匹配。
  • 点击「查询审计」应用条件。每页 20 条,翻页和导出沿用已应用的条件及截止时间,避免新记录不断插入导致页内容移动;修改输入后需重新查询。查询失败清除旧结果,禁止把旧结果当成新条件的导出。
  • 「导出查询结果 CSV」包含所有匹配页,最多 10000 条;超量时禁止导出并提示缩小范围,服务端也返回 413,绝不悄悄截取前几页。API 空结果返回表头。
  • 页面时间按浏览器本地时区显示;CSV 时间为 UTC,使用 UTF-8 BOM、CRLF 和 CSV 转义,动作与结果保留原始代码。可能被表格软件当公式的单元格增加前置单引号。

接口与边界

GET /api/v1/audit-logs:数据库分页,默认 page=1&pageSize=20,最多每页 100 条。支持可选 from、to(含时区的 RFC3339)、keyword、actor、action、result。动作和结果精确匹配,操作者包含匹配。时间边界含两端;起止同时提供时要求结束晚于开始。没有隐含 1000 条上限,也没有新加历史清理策略。

GET /api/v1/audit-logs/export:使用相同筛选条件,忽略分页;成功返回 text/csv、附件名和 X-Export-Count。只输出时间、操作者、动作、对象、结果、请求标识、审计标识。不会读取密码、设备令牌、PVE 密钥或任务原始参数。导出文件准备成功会记一条 export_audit_logs 审计;它表示服务端生成文件,不证明客户端已保存。

查询与导出均要求有效管理员会话;三角色均可访问,与原有审计读取权限一致。不会新增设备控制权限。单次列表的总数和记录来自同一 PostgreSQL 快照,排序为 created_at DESC,id DESC。页面固定截止时间,记录正常追加时保持翻页稳定;审计导入时若回填历史时间,仍可能改变后续查询。

审计不再加入全局定时刷新,进入标签页时按需查询。执行任务查询仍为原有最近 1000 条,本轮未改任务历史分页。既有操作是否产生日志仍取决于对应接口,未新增所有鉴权失败或操作前后差异记录;外部归档、签名防篡改、多租户隔离和日志保留策略仍待后续产品化。

验证与部署

验证结果和现场部署记录见同目录下 evidence/cloud-audit-history-20261111/。测试使用独立一次性 PostgreSQL,不对现场库执行测试清空。

仓库另有并行的独占显卡切换开发。本轮部署使用独立源码目录,只包含已部署的终端告警基线和本轮审计改动;排除这部分并行修改,不修改工作区原文件。通过重建基线与现场二进制比较确认部署基础,保留数据库备份、原镜像标签和源码校验清单。

专用 VM、Windows 模板副本、额外磁盘及真实快照还原继续暂缓。本轮不需要对 VM 或终端发控制命令。

本轮验收结果

  • 已部署到 5182 真实环境;Go 全量测试与 vet、前端 lint/typecheck/build、3 项单元测试、65 项安全 fixture 页面测试通过,其中新增审计页面 4 项。后端专用测试覆盖超过 1000 条历史记录、10000 条完整导出及 10001 条拒绝、三角色与未登录拒绝、筛选组合和 CSV 转义/公式防护。
  • 现场将 root 的 187 条匹配记录按每页 2 条查询,共 94 页;CSV 的 187 个审计标识及顺序与所有匹配页完全一致。另用真实界面按操作者和保存告警规则筛选并下载 CSV。
  • 深浅主题、1440 和 390px 真实界面通过;没有页面脚本异常、失败 API 或前端业务写请求。导出接口本身按设计新增审计,验收登录/退出也保留正常审计。
  • 账号/密码指纹、用户授权、终端身份及配置版本、告警规则一致;PVE 三台 VM 配置摘要和电源状态保持验收前基线,任务仍为 8 条。验证时 VM100/102 为 running、VM101 为 stopped;这是本轮只读观测,不代表本轮执行过开机。
  • 独立打包基线二进制 SHA-256 与部署前二进制一致:8c87f4e2183bd6f96ff5d67544f0467dc832c6af524ba8f1426aa5ec54d82d75。本次未部署仓库中并行的独占 GPU 逻辑和相关 Compose 配置。

部署前备份为 .local/live/backups/before-audit-history-20261111-101812.dump,原 API/console 镜像保留 before-audit-history-20261111-101812 标签。本轮没有新增数据库结构变更。需回退时先核对其他会话是否又有部署,再将两项镜像重新打回原名称,并使用 .local/audit-review/compose.release.yml 及 --project-directory deploy、原环境文件执行 up -d --no-build --no-deps api console。不要删除 PostgreSQL 业务卷,也不要把本轮只读验收的电源状态当成需要强制恢复的目标。

后续更新:执行任务也已补齐完整历史分页与 CSV 导出,本文“最近 1000 条”描述仅为审计批次当时边界。