K8S的日志审计有哪些
Kubernetes的审计日志级别主要包括以下几种:
None:不记录日志。
Metadata:仅记录请求的元数据,如用户、时间戳、资源、操作等,但不记录请求或响应体。
Request:记录请求的元数据和请求体。
RequestResponse:记录所有的元数据、请求体和响应体
审计日志的记录阶段和策略
Kubernetes中的审计日志记录阶段包括:
RequestReceived:在apiserver接收到请求后生成日志。
ResponseStarted:在响应头发送后生成日志。
ResponseComplete:在响应体发送完毕后生成日志。
Panic:在发生panic时生成日志
审计日志的配置方法
可以通过修改kube-apiserver的配置文件来设置审计日志的级别和策略。具体步骤包括:
在kube-apiserver.yaml文件中设置审计策略文件的位置,例如:--audit-policy-file=/etc/kubernetes/simple-policy.yaml。
设置审计日志的存放路径、备份数量、保留天数和单个日志文件的大小,例如:--audit-log-path=/var/log/audit.log --audit-log-maxbackup=2 --audit-log-maxage=7 --audit-log-maxsize=200
1. 审计日志级别分类
(1) None
说明:不记录任何审计日志。
适用场景:
排除不需要审计的请求(如对kube-system命名空间的资源操作)。
避免记录敏感信息(如Secret、ConfigMap)或减少日志存储开销。
示例规则:
yaml
复制
- level: None
userGroups: ["system:authenticated"]
nonResourceURLs: ["/api*", "/version"]
(2) Metadata
说明:仅记录请求的元数据,包括用户、时间戳、资源类型、动词(如create、delete)等,但不包含请求或响应体。
适用场景:
需要追踪操作主体和时间,但无需查看具体请求内容。
避免记录包含敏感信息的请求体(如Secret配置)。
示例规则:
yaml
复制
- level: Metadata
verbs: ["get", "list"]
resources:
- group: ""
resources: ["pods/log", "pods/status"]
(3) Request
说明:记录元数据和请求体(如创建或更新资源的JSON配置),但不包含响应体。
适用场景:
需要审计请求的具体内容(如Pod配置变更)。
响应体数据量较大或无需记录时使用。
限制:不适用于非资源请求(如API路径/healthz)。
(4) RequestResponse
说明:记录元数据、请求体和响应体,提供最完整的审计信息。
适用场景:
需要全面分析请求与响应的交互(如调试API问题)。
高安全要求的场景(如审计敏感操作)。
限制:对存储和性能影响较大,需谨慎使用。
2. 配置注意事项
规则优先级:审计策略中的规则按顺序匹配,第一条匹配的规则决定日志级别。例如,若某规则设置为None,后续规则将不再生效。
排除冗余请求:通常需排除系统组件(如kube-proxy的watch请求)或非资源URL(如/version)以减少日志量。
性能影响:Request和RequestResponse级别会增加API Server内存消耗,需根据集群负载调整策略。
3. 示例策略文件
以下是一个典型审计策略文件片段,结合了不同级别和排除规则:
yaml
复制
apiVersion: audit.k8s.io/v1
kind: Policy
omitStages: ["RequestReceived"] # 跳过请求接收阶段的日志
rules:
# 记录所有Pod变更的请求体
- level: Request
resources:
- group: ""
resources: ["pods"]
# 排除对特定ConfigMap的审计
- level: None
resources:
- group: ""
resources: ["configmaps"]
resourceNames: ["controller-leader"]
# 排除匿名用户的查询操作
- level: None
userGroups: ["system:unauthenticated"]
verbs: ["get", "list"]
4. 审计后端与日志格式
审计日志可通过以下两种后端输出:
Log后端:写入本地文件(如/var/log/audit.log),支持JSON格式和日志轮转(通过audit-log-maxsize等参数控制)。
Webhook后端:将日志发送到外部API,适用于集中化日志管理。
通过合理配置审计日志级别和策略,可以平衡安全性与性能,满足不同场景下的审计需求。建议参考官方文档或云厂商的最佳实践进一步优化策略。
浙公网安备 33010602011771号