Analyzing Kubernetes Audit Logs

解析 Kubernetes API server 审计日志(JSON lines 格式),检测 exec 进入 Pod、 Secret 访问、RBAC 修改、特权 Pod 创建以及匿名 API 访问行为。 从审计事件模式构建威胁检测规则。适用于调查 Kubernetes 集群入侵 或构建 k8s 专用 SIEM 检测规则。

killvxk 8f27ef5 4 files · 21.7 KB Updated

File contents

分析 Kubernetes 审计日志

说明

解析 Kubernetes 审计日志文件(JSON lines 格式),检测安全相关事件, 包括未授权访问、权限提升(privilege escalation)和数据外泄(exfiltration)。

import json

with open("/var/log/kubernetes/audit.log") as f:
    for line in f:
        event = json.loads(line)
        verb = event.get("verb")
        resource = event.get("objectRef", {}).get("resource")
        user = event.get("user", {}).get("username")
        if verb == "create" and resource == "pods/exec":
            print(f"Pod exec by {user}")

需检测的关键事件:

  1. pods/exec 和 pods/attach(进入容器 shell)
  2. secrets 访问(get/list/watch)
  3. clusterrolebindings 创建(RBAC 权限提升)
  4. 特权 Pod 创建
  5. 匿名或 system:unauthenticated 访问

示例

# 检测 secret 枚举
if verb in ("get", "list") and resource == "secrets":
    print(f"Secret access: {user} -> {event['objectRef'].get('name')}")

killvxk/cybersecurity-skills-zh/tree/main/skills/analyzing-kubernetes-audit-logs commit 8f27ef55f5

Frequently asked questions

npx skillmds@latest add killvxk/analyzing-kubernetes-audit-logs