首页/云/Kubernetes 速查/审计日志(Audit Log)
集群运维与排障54 条

审计日志(Audit Log)

审计记录谁在何时对哪个资源做了什么:由审计策略决定记录级别,是追溯误删、越权与变更时间线的重要数据来源。

Kubernetes 速查云更新于 2026-10-13

审计日志记录什么

审计日志按策略记录每一次接口请求:谁在什么时间、从哪个来源、对哪个对象执行了什么动作,以及结果如何。它是追溯误删、判断越权与还原变更时间线的主要依据。记录内容与详细程度完全由审计策略决定,策略写得粗就查不到细节,写得细则日志量成倍增长。

基本信息

所属版本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再加响应体排查结果细节,日志量最大
日志量大的集群通常采取分层策略:高频只读接口降级,敏感资源与写操作保持较细级别,再按对象与命名空间细分,兼顾可追溯性与存储成本。
较细级别会记录请求体,其中可能包含密钥等敏感内容。日志的存储、归档与转发都必须按安全要求处理,避免把敏感数据扩散到不受控的位置。

易错点

  • 全量开启最细级别:磁盘与日志量迅速增长,还可能把敏感请求体落盘
  • 策略只写级别不写规则顺序:规则按顺序匹配,顺序安排不当会让细粒度规则永远不生效
  • 日志就地存放不轮转:节点磁盘被审计日志写满,反而影响集群稳定
  • 事后才发现没开审计:没有历史数据可供追溯,只能依靠其他日志拼凑

数据来源与参考

  • Kubernetes 官方文档 · 审计
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌