公司财务系统出问题,查日志发现三个月前的异常操作记录没了。运维小李急得直拍桌子:‘这要是能早点发现,也不至于现在对账对不上!’ 其实,他遇到的就是典型的审计数据留存周期问题。
不同场景,保存时间差很多
网络审计跟踪数据不是想留多久就留多久。有的单位保留7天,银行可能要求存5年。差别在哪?看用途。普通企业内网行为审计,主要是防员工摸鱼、查违规外联,一般保留30到90天足够。但涉及金融、医疗、政务系统的操作日志,就得按法规来。
比如《网络安全法》要求关键信息基础设施的网络日志留存不少于6个月。而银保监会对银行业提出的要求更严,部分交易类审计记录需保存5年以上。医院的电子病历操作审计,则要跟着病历本身一起归档,通常15年起。
数据库里怎么设置留存策略
实际操作中,DBA通常会在数据库层面建立分区表或定时任务清理旧数据。以MySQL为例,可以用事件调度器自动删除超过期限的日志:
CREATE EVENT IF NOT EXISTS clean_audit_log
ON SCHEDULE EVERY 1 DAY
DO
DELETE FROM audit_logs
WHERE create_time < DATE_SUB(NOW(), INTERVAL 90 DAY);
这段代码的意思是每天执行一次,删掉90天前的审计记录。既能控制数据量,又符合多数企业的合规需求。
别光靠数据库,还得考虑存储成本
一家电商公司每天产生上千万条用户操作日志,全存在主库肯定扛不住。他们通常会把近期热数据留在数据库,超过30天的转移到冷存储,比如对象存储或数据仓库。查询时虽然慢一点,但成本降下来了,合规也兼顾了。
所以,定留存周期不能只看法规,还得算经济账。小公司没那么高要求,90天够用;大系统必须结合行业规范和业务风险综合判断。
话说回来,小李后来调出备份磁带,还真找到了那条被删的转账记录。从此他们公司把审计日志从90天延长到了180天,再不敢随便清了。