Kubernetes审计
外观
Kubernetes审计[编辑 | 编辑源代码]
Kubernetes审计(Kubernetes Auditing)是Kubernetes安全机制的核心组成部分,它通过记录集群中发生的所有关键操作(如API请求),帮助管理员监控、分析和排查潜在的安全问题。审计日志提供了对用户、服务账户或系统组件行为的可追溯性,是合规性检查(如GDPR、HIPAA)和事故响应的重要工具。
审计工作原理[编辑 | 编辑源代码]
Kubernetes审计系统会捕获以下信息:
- 请求来源:用户、服务账户或系统组件的身份
- 操作类型:如`create`、`delete`、`patch`等
- 目标资源:操作的Kubernetes资源(如Pod、Deployment)
- 请求和响应状态:包括HTTP状态码和返回内容(可选)
审计日志以JSON格式存储,支持输出到本地文件或外部日志服务(如Fluentd、Logstash)。
审计策略[编辑 | 编辑源代码]
通过定义审计策略(Audit Policy),管理员可以控制记录哪些事件。策略文件使用YAML格式配置,示例:
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# 记录所有Namespace的删除请求
- level: Metadata
verbs: ["delete"]
resources:
- group: ""
resources: ["namespaces"]
# 记录Pod变更的请求体和响应体
- level: RequestResponse
resources:
- group: ""
resources: ["pods"]
# 忽略只读操作(如get/list)
- level: None
verbs: ["get", "list", "watch"]
配置审计日志[编辑 | 编辑源代码]
以下步骤展示如何启用审计功能:
1. 创建审计策略文件(如`audit-policy.yaml`) 2. 修改API服务器配置(通常在`/etc/kubernetes/manifests/kube-apiserver.yaml`):
spec:
containers:
- command:
- kube-apiserver
- --audit-policy-file=/etc/kubernetes/audit-policy.yaml
- --audit-log-path=/var/log/kubernetes/audit.log
- --audit-log-maxage=30 # 保留30天日志
日志分析示例[编辑 | 编辑源代码]
一条典型的审计日志条目如下:
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"stage": "ResponseComplete",
"user": {"username": "admin"},
"verb": "create",
"resource": {"group": "", "resource": "pods"},
"requestURI": "/api/v1/namespaces/default/pods",
"responseStatus": {"code": 201},
"requestObject": {
"kind": "Pod",
"apiVersion": "v1",
"metadata": {"name": "nginx"},
"spec": {"containers": [{"name": "nginx", "image": "nginx:latest"}]}
}
}
实际应用场景[编辑 | 编辑源代码]
场景1:异常操作检测[编辑 | 编辑源代码]
通过分析审计日志,可以识别异常行为模式,例如:
- 同一用户在短时间内频繁删除Pod
- 非工作时间段的敏感操作
场景2:合规性报告[编辑 | 编辑源代码]
使用工具如`kube-audit`或`Falco`生成符合SOC2或PCI-DSS标准的报告:
# 使用jq工具统计操作类型
cat audit.log | jq '.verb' | sort | uniq -c
高级配置[编辑 | 编辑源代码]
日志分级[编辑 | 编辑源代码]
Kubernetes支持四种审计级别:
动态审计[编辑 | 编辑源代码]
Kubernetes 1.15+支持动态审计(Dynamic Auditing),允许通过Webhook将日志实时发送到外部系统:
apiVersion: auditregistration.k8s.io/v1alpha1
kind: AuditSink
metadata:
name: custom-webhook
spec:
webhook:
throttle:
qps: 10
clientConfig:
url: "https://audit-collector.example.com"
数学建模[编辑 | 编辑源代码]
在日志分析中,可以使用香农熵(Shannon Entropy)检测异常行为: 其中:
- 是操作出现的概率
- 熵值突然增大可能表示异常活动
最佳实践[编辑 | 编辑源代码]
1. 敏感操作全记录:如RBAC变更、Secret访问 2. 日志加密存储:防止审计日志被篡改 3. 定期归档分析:避免存储空间耗尽 4. 与SIEM系统集成:如Splunk或ELK Stack