分析 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}")
需检测的关键事件:
- pods/exec 和 pods/attach(进入容器 shell)
- secrets 访问(get/list/watch)
- clusterrolebindings 创建(RBAC 权限提升)
- 特权 Pod 创建
- 匿名或 system:unauthenticated 访问
示例
# 检测 secret 枚举
if verb in ("get", "list") and resource == "secrets":
print(f"Secret access: {user} -> {event['objectRef'].get('name')}")