首页/安全/取证与溯源速查/Kubernetes 审计日志判读
日志溯源53 条

Kubernetes 审计日志判读

K8s 审计日志记录对 API Server 的每个请求:看 user.username、verb 与 resource 就能识别越权尝试与异常操作源。

取证与溯源速查安全更新于 2026-10-13

Kubernetes 审计日志判读是什么

Kubernetes 审计日志记录对 API Server 的每一次请求:是谁(user.username)、用什么动作(verb)、操作了哪类资源(objectRef.resource)、从哪个地址来(sourceIPs)。容器环境中凭据泄露与越权常表现为异常身份读取机密对象、创建 RBAC 绑定、在 Pod 内执行命令,这些都会留在这里。

基本信息

适用范围Kubernetes API Server 请求
关键字段user.username、verb、objectRef、requestURI、sourceIPs
审计策略由 AuditPolicy 决定记录级别(None/Metadata/Request/RequestResponse)
日志位置自建集群的审计文件、托管集群的控制台或日志服务

典型使用场景

  • 排查异常身份读取机密对象与配置字典
  • 排查 RBAC 被改动:创建角色绑定、提升权限
  • 追踪在容器内执行命令的发起者与目标 Pod
  • 排查高权限服务账号令牌被滥用
  • 复盘容器内异常行为的操作来源
  • 核对服务账号令牌的实际使用来源,识别令牌被复制到集群外使用的情况

检索

检索
jq 'select(.verb=="create") | {t:.requestReceivedTimestamp, u:.user.username, r:.objectRef.resource, ip:.sourceIPs}' audit.log | head -30
jq 'select(.objectRef.resource=="secrets") | {u:.user.username, n:.objectRef.name, v:.verb}' audit.log | head
jq 'select(.objectRef.subresource=="exec") | {u:.user.username, p:.objectRef.name, ip:.sourceIPs}' audit.log
jq 'select(.objectRef.resource=="rolebindings" or .objectRef.resource=="clusterrolebindings")' audit.log | head
# 关注系统账号之外的普通账号对机密对象与 RBAC 对象的读取与创建

字段读法

字段含义异常表现
user.username发起请求的身份出现匿名身份或陌生服务账号
verb动作:get/list/create/delete/exec普通账号出现创建或删除 RBAC 对象
objectRef被操作的对象集中指向机密对象与新建命名空间
sourceIPs来源地址来自非节点网段或陌生出口
responseStatus.code请求结果码403 密集说明有人在试探权限
在容器内执行命令的审计事件不含命令内容与终端输出,要看 Pod 侧日志、容器审计或节点侧痕迹补齐这一环。
默认审计策略级别有限。未配置策略或只记录元数据时,请求体与关键字段会缺失,排查前先确认策略到底记到了哪一级。
同一次请求可能生成多条审计事件(请求接收阶段与响应完成阶段各一条),做时间线前先确认取的是哪一类,避免同一操作被重复计数。

易错点

  • 以为审计日志能看到全部内容,实际执行类子资源的命令详情不在事件里
  • 审计策略未配置或级别过低,关键字段缺失,被误判成「没有操作」
  • 只查单节点审计文件,托管集群的审计在云平台侧,两边都要覆盖
  • 不区分 403 探测与成功请求,把试探当成已得手

数据来源与参考

  • Kubernetes 审计文档(audit.k8s.io 字段)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌