3. 日志保留周期定义:12个月与3个月的那些事

日志保留周期,说白了就是你的日志文件要在磁盘上躺多久。

PCI DSS 3.2.1 的要求其实很简单:至少保留12个月,并且最近3个月的日志要能在线快速访问。但你看,就是这么简单的两条,我在项目里遇到的坑可不少。

3.1 12个月的基本要求——为什么是整数?

很多人问我:为什么刚好12个月,不是6个月,不是18个月?

我个人习惯把这理解为“审计周期的覆盖需求”。你的安全事件可能在年底才被发现,而攻击痕迹可能藏在上半年的日志里。如果只保留6个月,你就只能看到冰山一角。

核心要点:

  • 所有日志类型都必须满足12个月的可用性
  • 计算起点:从日志生成之日起算,不是从存储之日
  • 不能有“间隙”:1月1日到12月31日,一天都不能少

我的实战技巧:

我在项目中遇到过客户问我:“我们上个月才部署日志系统,之前的日志怎么办?” 我的回答是:从能够收集到的最早数据开始算,但至少保证之后12个月没有断档。

3.2 多久算一次“在线可访问”?3个月,不是开玩笑

嗯,这里要注意。PCI DSS 说的是 “可在线访问”,不是你备份到磁带后扔在仓库里算数。

最近3个月的日志,必须能在你的日常运维工具里直接查、直接搜、直接导出。不能等到审计师来了,你说“我这就去仓库找备份盘”。

时间范围 存储要求 可访问性
0-3个月 SSD/高速磁盘 秒级查询、全文索引
3-12个月 冷存储/归档 可检索(允许稍慢)
超过12个月 可删除或脱机存储 不要求可在线访问

你想想看,如果审计师要求你查3个月之前的一次访问记录,而你翻归档花了2天,这算不算违规?我的经验是:审计师看的是你的能力证明,而不是你“真的”花了多少时间。如果没法在合理时间内呈现,通常会被视为不合规。

3.3 例外场景说明——凡事都有意外

真的没有任何例外吗?也不是。以下是我在实际审计中认可的几种例外情况:

  • 法律保留要求: 某些地区要求保留日志超过12个月(比如欧洲GDPR),这时你以更长的要求为准。
  • 性能瓶颈: 高流量系统的日志每天以TB级增长,12个月的在线存储成本太高。你可以将超过3个月的日志转移到冷存储,但必须保证仍能“在线检索”,只是查询速度可以慢。
  • 合规过渡期: 你在第10个月才符合12个月要求,前8个月的日志可以接受离线归档,但必须能恢复。

不要触碰的红线:

我曾经见过有人以“存储空间不够”为由,把6个月前的日志全部删除。结果审计时被直接开出了“未满足12个月保留期”的不合规项。任何主动删除日志的行为,必须事先得到审计或法务的书面批准。

3.4 实战配置示例

说到配置,我分享一种常见的做法。以Linux系统自带的日志轮转工具为例:

# rsyslog日志保留策略
# /etc/logrotate.d/rsyslog

/var/log/messages {
    rotate 12
    weekly
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root root
    postrotate
        /usr/bin/systemctl restart rsyslog.service > /dev/null 2>&1 || true
    endscript
}

# 保留12周,约3个月
# 但这里的数字要按实际情况调整

注意,这只是一个基础配置。在生产环境里,我会额外增加一个归档脚本,把超过3个月但不到12个月的日志压缩后移到冷存储。

3.5 一张图看懂日志保留周期

日志保留周期逻辑图 日志保留周期逻辑图 日志生成 Day 0 热数据(0-3个月) 在线可访问 温数据(3-6个月) 冷存储,可检索 冷数据(6-12个月) 归档,可恢复 超出12个月 安全删除/脱机长期存储 说明 S1必须秒级访问 S2/S3允许慢查询

3.6 常见误区与避坑指南

这些年我在审计一线,见过太多“以为合规但实际违规”的情况:

  • 误区1:日志保留按“自然年”计算
    不对。是按日志生成日期向后推12个月。比如2023年7月15日的日志,必须保留到2024年7月14日。
  • 误区2:归档了就等于“可在线访问”
    我曾经有个客户,把3个月以上的日志全部刻录到光盘放在资料室。审计时他们找一张特定日期的光盘花了整整一天。这显然不符合“可在线访问”的本意。
  • 误区3:系统可以自动删除超过12个月的日志
    系统可以自动做,但你必须有告警和控制。比如你在轮转脚本里加了“删除超过12个月”的规则,最好同时加上一个测试:每月检查一次,确保没有误删。

一个小诀窍:

不论是SIEM还是自建日志系统,我建议你在保留策略里加一个显性的“保留标签”。比如每一条日志都打上创建日期和计划删除日期。这样审计时一眼就能看出是否满足12个月的要求。

好了,日志保留周期的定义其实并不复杂,但你在落地上要考虑的东西很多。下一件事?嗯,是时候看看怎么把这条规则写进你的日志管理策略里了。