Skip to content

安全审计日志

**本文引用的文件** - [EventLog.java](file://lemes-cloud/lemes-service-common/lemes-service-common-common/src/main/java/com/lenovo/lemes/service/common/entity/EventLog.java) - [EventLogMapper.xml](file://lemes-cloud/lemes-service-common/lemes-service-common-server/src/main/resources/mapper/EventLogMapper.xml) - [EventLogController.java](file://lemes-cloud/lemes-service-common/lemes-service-common-server/src/main/java/com/lenovo/lemes/service/common/server/controller/EventLogController.java) - [LenovoLogConfig.java(框架)](file://lemes-cloud/lemes-framework/lemes-framework-core/src/main/java/com/lenovo/lemes/framework/core/util/compliance/LenovoLogConfig.java) - [LenovoLogConfig.java(作业)](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/util/compliance/LenovoLogConfig.java) - [LenovoLogUtil.java(框架)](file://lemes-cloud/lemes-framework/lemes-framework-core/src/main/java/com/lenovo/lemes/framework/core/util/compliance/LenovoLogUtil.java) - [LenovoLogUtil.java(作业)](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/util/compliance/LenovoLogUtil.java) - [logback.xml(作业执行器)](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/logback.xml) - [TraceIdConverter.java](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/config/TraceIdConverter.java) - [ResourceServerAutoConfiguration.java](file://lemes-cloud/lemes-framework/lemes-framework-auth/src/main/java/com/lenovo/lemes/framework/auth/config/ResourceServerAutoConfiguration.java) - [CustomMethodSecurityConfiguration.java](file://lemes-cloud/lemes-framework/lemes-framework-auth/src/main/java/com/lenovo/lemes/framework/auth/config/CustomMethodSecurityConfiguration.java) - [AuthorizationServerConfig.java](file://lemes-cloud/lemes-auth/src/main/java/com/lenovo/lemes/auth/config/AuthorizationServerConfig.java)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向DeviceMate项目的“安全审计日志”能力,系统化阐述审计日志架构设计与实现,覆盖日志采集、存储、查询与分析的完整闭环;明确日志类型与字段规范;解释记录机制(前后数据对比、用户行为轨迹、关键业务操作审计);给出分级存储、压缩与归档策略建议;并提供基于现有接口的日志查询能力说明与安全管控建议,帮助安全分析师与合规人员构建可追溯、可分析、可审计的完整方案。

项目结构

围绕审计日志的关键模块主要分布在以下位置:

  • 通用实体与持久层:事件日志实体与MyBatis映射
  • 控制层:事件日志的查询与新增接口
  • 配置与工具:联想审计日志配置与工具类
  • 日志输出:Logback配置与TraceId注入
  • 安全鉴权:资源服务与方法级权限控制

图表来源

章节来源

核心组件

  • 事件日志实体:定义审计日志的核心字段,用于统一记录主机、用户、动作、事件类型、来源、键值、数据、IP与时序等信息,并支持插入时间范围查询。
  • MyBatis映射:提供分页列表与新增写入能力,支持按用户名、事件类型、事件数据关键词、IP地址与时间范围过滤。
  • 控制器接口:提供事件类型与用户名枚举查询、分页列表查询、新增接口,并对相关接口启用基于角色的访问控制。
  • 联想审计配置与工具:提供应用名、负责人、CMDB标识等配置项,以及工具类对这些配置的引用点位。
  • 日志输出策略:Logback配置中为作业执行器模块单独输出“联想专用日志”,并结合TraceId转换器在日志中注入链路追踪标识。
  • 安全鉴权:资源服务与方法级权限控制,确保审计接口仅授权主体可访问。

章节来源

架构总览

下图展示从控制器到持久层、再到日志输出的整体流程,以及安全鉴权与追踪链路的集成点。

图表来源

详细组件分析

数据模型与字段规范

  • 字段说明(摘自实体类):
    • 主机名、用户名、动作类型、事件类型、事件来源、事件键值、事件数据、IP地址、创建时间
    • 支持通过页面参数传入的插入时间范围数组,便于按时间段检索
  • 关系与约束:
    • 表名为EVENT_LOG,字段与实体属性一一对应
    • 新增接口使用当前时间作为创建时间

图表来源

章节来源

日志采集与记录机制

  • 记录入口:
    • 控制器提供新增接口,供各业务在关键操作后调用,统一写入审计表
  • 记录内容:
    • 用户名、主机名、动作类型、事件类型、事件来源、事件键值、事件数据、IP地址
    • 动作类型用于区分“新增/修改/删除/查询/导出/审批”等
    • 事件类型用于区分“设备管理/仓库管理/工作流”等业务域
    • 事件来源用于标注触发来源(如前端页面、后台任务、接口)
    • 事件键值用于定位具体对象(如主键或唯一标识)
    • 事件数据用于记录前后对比或补充说明
  • 行为轨迹与对比:
    • 可通过“事件数据”字段记录变更前后的JSON差异,或以结构化方式记录操作上下文
    • 结合“插入时间范围”与“用户名/事件类型/IP”等条件实现用户行为轨迹追踪

章节来源

日志存储与输出策略

  • 数据库存储:
    • MyBatis映射提供标准的INSERT与SELECT(含WHERE条件与排序),支持按用户名、事件类型、事件数据关键词、IP与时间范围过滤
  • 日志文件输出:
    • 作业执行器模块使用独立的Lenovo专用日志appender,按日期与大小滚动,保留历史天数上限
    • 控制台与调试日志分离,便于问题定位与生产环境脱敏
  • 追踪链路:
    • 通过TraceIdConverter将线程上下文中的traceId注入日志模式,便于跨服务串联

图表来源

章节来源

日志查询接口与分析能力

  • 查询接口:
    • 分页列表:支持按用户名、事件类型、事件数据关键词、IP、插入时间范围查询
    • 枚举查询:支持获取事件类型与用户名列表,便于前端筛选
    • 新增接口:供业务侧在关键操作后落库
  • 分析建议:
    • 异常行为检测:基于“IP/时间/用户/事件类型”组合异常频次与集中度
    • 合规检查:按时间范围导出事件清单,核对关键操作是否留痕
    • 审计报告:按用户/事件类型/来源维度统计操作次数与趋势

图表来源

章节来源

安全管理与访问控制

  • 方法级权限:
    • 控制器接口使用基于角色的访问控制注解,仅具备“sys:event-log”权限的主体可访问
  • 资源服务与鉴权:
    • 资源服务器自动配置启用方法级安全,结合自定义表达式处理器与授权服务器配置,形成统一鉴权链路
  • 日志访问控制:
    • 建议对审计接口与日志文件实施最小权限访问与访问审计,避免越权读取

图表来源

章节来源

依赖分析

  • 组件耦合:
    • 控制器依赖服务层;服务层依赖Mapper;Mapper依赖数据库
    • 日志工具与配置通过Spring容器装配,Logback通过appender与转换器注入TraceId
    • 安全配置贯穿资源服务与方法级安全,确保接口受控
  • 外部依赖:
    • Spring Security/OAuth2、MyBatis、Logback、Hutool JSON工具等

图表来源

章节来源

性能考虑

  • 写入性能:
    • 使用MyBatis批量写入或异步队列可进一步降低写入延迟
  • 查询性能:
    • 对常用查询字段建立索引(如用户名、事件类型、创建时间)
    • 合理限制时间范围与分页大小,避免全表扫描
  • 日志滚动:
    • 控制单文件大小与保留天数,平衡磁盘占用与检索效率

故障排查指南

  • 接口鉴权失败:
    • 检查是否具备“sys:event-log”权限;确认资源服务与方法级安全配置生效
  • 日志未落库:
    • 核对新增接口调用与实体字段;检查数据库连接与事务提交
  • 日志文件未输出:
    • 检查Logback配置中Lenovo专用appender是否启用;确认日志路径与权限
  • 追踪链路缺失:
    • 确认TraceId转换器已注册;检查线程上下文中traceId是否注入

章节来源

结论

DeviceMate项目已具备完善的审计日志基础:统一的数据模型、可控的接口权限、可追踪的链路与稳定的日志输出。在此基础上,建议进一步完善日志分级存储、压缩与归档策略,强化异常行为检测与合规检查能力,并持续优化查询性能与运维可观测性,以满足安全分析师与合规人员的审计需求。

附录

  • 日志类型与字段建议(扩展说明,非现有实现):
    • 用户操作日志:记录用户登录、登出、密码修改、个人信息更新等
    • 系统访问日志:记录API访问、接口调用、异常错误等
    • 安全事件日志:记录越权尝试、暴力破解、敏感操作告警等
    • 异常操作日志:记录重复提交、越权访问、数据篡改等
  • 存储策略建议(扩展说明,非现有实现):
    • 分级存储:热数据(近7天)驻内存/SSD,温数据(1个月)落盘,冷数据(长期)归档至对象存储
    • 压缩:日志文件采用Gzip压缩,降低存储成本
    • 归档:按月/季度归档,保留历史版本
    • 长期保存:根据法规要求设定保留期限,定期清理过期数据