审计日志记录什么
审计日志按策略记录每一次接口请求:谁在什么时间、从哪个来源、对哪个对象执行了什么动作,以及结果如何。它是追溯误删、判断越权与还原变更时间线的主要依据。记录内容与详细程度完全由审计策略决定,策略写得粗就查不到细节,写得细则日志量成倍增长。
基本信息
| 所属版本 | audit.k8s.io/v1 |
|---|---|
| 配置位置 | 接口服务的启动参数指向策略文件与日志输出 |
| 决定因素 | 审计策略中的规则与记录级别 |
| 匹配顺序 | 规则按顺序匹配,命中后不再继续 |
| 典型用途 | 变更追溯、越权排查、合规举证 |
典型使用场景
- 资源被删除后确认是谁、什么时候删的
- 排查权限异常:某个服务账号是否尝试过越权操作
- 合规要求下记录管理面变更
- 分析配置被改动的具体时间点,与发布记录对齐
- 安全事件后还原攻击者在集群内的操作顺序
策略片段
策略片段
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata # 默认只记录元数据
- level: RequestResponse # 命中更细的规则时记录请求与响应体
resources:
- group: ""
resources: ["pods", "secrets"]
verbs: ["create", "delete", "patch"]检索示例
检索示例
grep -E '"verb":"delete"' audit.log | tail -5 # 快速看删除动作
jq -r 'select(.verb=="delete") | [.user.username, .objectRef.resource, .objectRef.name] | @tsv' audit.log | tail -20
grep -i 'forbidden' audit.log | tail -20 # 越权尝试记录级别对照
| 级别 | 记录内容 | 适用场景 |
|---|---|---|
| None | 不记录 | 屏蔽高频噪音接口 |
| Metadata | 请求元数据,不含请求体 | 日常变更记录,日志量适中 |
| Request | 元数据加请求体 | 需要看改了什么内容 |
| RequestResponse | 再加响应体 | 排查结果细节,日志量最大 |
日志量大的集群通常采取分层策略:高频只读接口降级,敏感资源与写操作保持较细级别,再按对象与命名空间细分,兼顾可追溯性与存储成本。
较细级别会记录请求体,其中可能包含密钥等敏感内容。日志的存储、归档与转发都必须按安全要求处理,避免把敏感数据扩散到不受控的位置。