日志规范 2025-03-18

1. 日志的核心职责

日志的核心任务是记录系统的操作和事件,以便后续审计、分析和故障排查。具体包括:

  • 操作记录:记录用户的操作(如登录、数据修改、文件上传)。
  • 系统事件:记录系统的运行状态(如启动、关闭、错误)。
  • 安全事件:记录与安全相关的事件(如登录失败、权限变更)。

日志的作用是提供可追溯性透明度,而不是直接过滤或阻止恶意行为。


2. 日志需要注意的事项

为了确保日志的有效性和安全性,需要注意以下事项:

2.1 日志内容的完整性

  • 记录关键信息:包括时间、用户ID、操作类型、操作对象、操作描述、操作结果等。
  • 避免敏感信息泄露:不要在日志中记录敏感信息(如密码、信用卡号)。

2.2 日志的存储与保护

  • 集中存储:将日志集中存储,避免分散在多台服务器上。
  • 访问控制:限制对日志的访问权限,防止日志被篡改或删除。
  • 加密存储:对日志进行加密,防止泄露。

2.3 日志的保留与清理

  • 保留期限:根据法规和业务需求设置日志的保留期限。
  • 定期清理:定期清理过期的日志,避免占用过多存储空间。

2.4 日志的监控与分析

  • 实时监控:实时监控日志,及时发现异常行为。
  • 自动化分析:使用工具(如ELK Stack、Splunk)对日志进行分析,识别潜在的安全威胁。

3. 日志与过滤、安全防护的关系

虽然日志的主要职责是记录,但它与过滤和安全防护密切相关,主要体现在以下几个方面:

3.1 日志为过滤和安全防护提供数据支持

  • 输入过滤:在过滤用户输入时,可以将过滤结果记录到日志中(如"检测到SQL注入尝试")。
  • 入侵检测:通过分析日志,可以识别潜在的攻击行为(如多次登录失败、异常查询)。

3.2 日志用于事后分析和审计

  • 攻击溯源:通过日志可以追踪攻击的来源和过程。
  • 责任认定:通过日志可以确定谁在什么时间执行了什么操作。

3.3 日志与实时告警的结合

  • 实时监控:通过实时分析日志,可以触发安全告警(如"检测到XSS攻击尝试")。
  • 自动化响应:结合SOAR(安全编排、自动化与响应)工具,可以实现自动化的安全响应(如封锁IP地址)。

4. 日志与过滤的分工

  • 过滤 :是实时的安全防护措施,负责在用户输入进入系统之前进行验证和过滤。
  • 日志 :是事后的记录和分析工具,负责记录系统的操作和事件,为安全防护提供数据支持。

举个例子:

  • 过滤 :当用户输入' OR 1=1 --时,系统会直接拒绝该请求并返回错误提示。
  • 日志:系统会记录"检测到SQL注入尝试,用户:guest,IP:192.168.1.1,时间:2023-10-01 12:00:00"。

5. 具体日志应记录的内容

类别 子类别 记录内容
用户操作日志 登录与认证 登录成功/失败、注销、密码修改/重置。
数据操作 数据增删改查(CRUD)、导入/导出、备份/恢复。
权限管理 权限分配/修改/撤销、角色创建/修改/删除、权限变更历史。
其他操作 文件上传/下载/删除、系统配置修改、敏感操作(如删除重要数据)。
安全日志 登录安全 连续登录失败、异常登录行为(国外IP等异地登录): 账户锁定/解锁。
权限变更 管理员和特权用户对普通用户进行权限变更操作。
安全事件 攻击行为(如SQL注入、跨站伪造脚本、用户超长输入产生的缓冲区溢出)。
审计日志 敏感数据访问记录;重要配置修改记录;系统审计操作记录。
第三方服务日志 API调用 第三方API请求/响应;调用成功/失败状态;耗时/错误信息。
支付与交易 支付请求/结果;交易状态/详情;退款/撤销操作记录。
消息与通知 短信/邮件/推送发送记录;发送状态/错误信息。
数据库日志 查询日志 SQL查询执行记录;查询时间/结果/错误信息。
事务日志 事务开始/提交/回滚记录;事务详细操作步骤。
数据变更日志 数据插入/更新/删除记录;变更前后值(用于审计)。
自定义业务日志 业务操作 用户下单/支付/退款。

日志记录,最佳实践

  1. 避免敏感信息:不记录密码、信用卡号等。
  2. 结构化日志:使用JSON等格式,便于解析。
  3. 日志级别控制:根据环境调整日志级别。
  4. 日志采样:高流量时采样记录,避免日志量过大。
  5. 记录入参和出参:记录入参和出参,方便快速定位问题。
  6. if分支日志:在每个分支的首行应打印日志,便于理清程序运行逻辑。