3. 常见云平台审计日志类型:操作日志、访问日志、资源变更日志
做云平台审计,绕不开三种核心日志类型。我自己刚接触审计日志时,以为“只要是日志就一样”,结果被线上事故狠狠教训过——一次误操作删了数据库,却找不到是谁干的。
嗯,从那以后我逢人就说:分清日志类型,比单纯堆量重要得多。你想想看,不同类型的日志,在保留策略上差别非常大。操作日志要追责、访问日志要合规、资源变更日志要排查配置漂移。如果一刀切保留,要么浪费存储,要么关键信息提前过期。
下面我把这三种日志拆开讲,每类带点实际经验。
3.1 操作日志(Operation Log)
操作日志记录的是“谁在什么时间、通过什么渠道、干了什么”。比如用户登录控制台、创建一台虚拟机、修改安全组规则、删除负载均衡器——这些行为都会被记下来。
我个人习惯把操作日志的核心字段记成“五W”:
- Who – 操作用户(IAM 账号、角色、服务主体)
- What – 操作类型(Create、Update、Delete、Read)
- When – 精确到毫秒的时间戳
- Where – 资源标识符(ARN/Resource ID)
- How – 来源 IP、User-Agent、是否多因子认证
我在项目中遇到过这样一个坑:有一次交付审计系统,客户要求操作日志保存 365 天,结果三个月后存储就爆了。为什么?因为他们把每一条操作日志里的请求参数都原样保存,大的 JSON 体动辄几十 KB。后来我建议只保留关键字段,原始请求存到另一套归档系统,这才把单个日志体压缩到 1KB 以内。
3.2 访问日志(Access Log)
访问日志记录的是“谁在什么时候访问了什么资源”。跟操作日志不同,访问日志更偏向读取和流量层面。比如对象存储的 GetObject 请求、API 网关的每一次调用、CDN 的边缘节点请求。
我记得有一次,某客户的网站被 DDoS 攻击,他们想通过日志溯源攻击 IP。结果发现访问日志只保留了最近 3 天的,攻击发生在一周前,日志早已过期。没办法,只能靠网络流量包重新分析。
访问日志典型的字段包括:
- 请求时间、请求方法(GET/POST/PUT)
- 客户端 IP、端口、地理位置
- 请求路径、查询参数
- 响应状态码、响应耗时
- 请求头部(User-Agent、Referer)
访问日志的保留策略通常更短,因为量太大了。一个中等规模的 API 网关,一天可能产生几十 GB 日志。我个人常用的做法:
- 全量保留 7~30 天,用于日常排查和监控。
- 聚合后统计(比如每分钟请求数、5xx 占比)保留 1 年。
- 开启采样:对于流量巨大的端点,按 1% 或 10% 采样留存,异常时间段自动提升到 100%。
3.3 资源变更日志(Resource Change Log)
资源变更日志,说白了就是记录云上资产的“前世今生”。比如安全组规则从拒绝 22 端口变成了允许所有来源,或者是 RDS 实例的存储空间由 100GB 调整到 200GB。这些变更往往是配置漂移的源头。
有一次线上故障,客户说“我们没有改数据库白名单,为什么访问突然被拒了”。我查了资源变更日志,发现前一天夜里一条自动化脚本修改了安全组规则,把 3306 端口的来源 IP 段缩小了。没有变更日志,这种问题根本查不出来。
资源变更日志的核心字段:
- 变更时间、变更主体(谁触发的变更)
- 资源类型、资源 ID
- 变更前的完整配置快照
- 变更后的完整配置快照
- 变更描述(如“修改端口范围”)
⚠️ 注意:很多云平台默认只打开部分资源的变更日志,比如 AWS Config、Azure Resource Graph。我建议全量开启,因为微小的配置变更可能引发大问题。
保留策略建议:资源变更日志通常需要保留 至少 90 天,用于变更回溯。对于合规要求严格的企业(如金融、医疗),我建议保留 365 天以上,且禁止删除(仅可归档)。变更配置快照可能非常大,可以考虑只保留差异(diff),而非全量快照。
3.4 三类日志的对比
下面这张表能帮你快速区分三类日志的定位,我在做策略制定时经常用它做参考:
| 维度 | 操作日志 | 访问日志 | 资源变更日志 |
|---|---|---|---|
| 关注点 | 谁做了什么操作 | 谁访问了什么资源 | 资源配置是如何变化的 |
| 典型来源 | CloudTrail、Activity Log | ELB Log、API Gateway Log、CDN Log | AWS Config、Azure Resource Graph、Terraform state |
| 数据量级 | 中等(每操作一条) | 极大(每个请求一条) | 小(每次变更一条) |
| 保留时长 | 1~7 年(合规) | 7~90 天(采样可更长) | 90~365 天 |
| 敏感内容 | 可能包含 、请求参数 | 可能包含用户信息、 | 配置快照(一般无敏感数据) |
注意:实际云厂商的命名可能不同,但本质都跑不出这三类。比如阿里云把操作日志叫“操作审计”,访问日志在 SLB 里叫“访问日志”,资源变更日志对应“配置审计”。
下面是三类日志在整体审计体系中的关系图,方便你理解它们是如何协同工作的:
看到这张图,你应该能直观理解:操作日志负责“谁动了”、访问日志负责“谁看了”、资源变更日志负责“变成了什么”。三个维度缺一不可。
最后分享一个我自己的选型思路。在做保留策略时,别只看存储成本。先问业务方三个问题:
- 合规要求:法律或行业标准要求保留多久?(比如金融行业操作日志至少保留5年)
- 回溯场景:最迟可能查多久前的日志?(一般安全事件回溯窗口不超过90天)
- 数据量峰值:高峰期一天产生多少日志?能否做采样或聚合?