Rancher 下游集群启用审计日志
前言
Kubernetes 审计(Auditing) 功能提供了与安全相关的、按时间顺序排列的记录集, 记录每个用户、使用 Kubernetes API 的应用以及控制面自身引发的活动。审计记录最初产生于 kube-apiserver 内部。每个请求在不同执行阶段都会生成审计事件;这些审计事件会根据特定策略被预处理并写入后端。 策略确定要记录的内容和用来存储记录的后端,当前的后端支持日志文件和 Webhook。
审计日志功能
- 发生了什么?
- 什么时候发生的?
- 谁触发的?
- 活动发生在哪个(些)对象上?
- 在哪观察到的?
- 它从哪触发的?
- 活动的后续处理行为是什么?
审计日志阶段
每个请求都可被记录其相关的阶段(stage)。已定义的阶段有:
阶段 | 说明 |
---|---|
RequestReceived | 此阶段对应审计处理器接收到请求后, 并且在委托给其余处理器之前生成的事件。 |
ResponseStarted | 在响应消息的头部发送后,响应消息体发送前生成的事件。 只有长时间运行的请求(例如 watch)才会生成这个阶段。 |
ResponseComplete | 当响应消息体完成并且没有更多数据需要传输的时候。 |
Panic | 当 panic 发生时生成。 |
审计策略
策略 | 说明 |
---|---|
None | 符合这条规则的日志将不会记录。 |
Metadata | 记录请求的元数据(请求的用户、时间戳、资源、动词等等), 但是不记录请求或者响应的消息体。 |
Request | 记录请求的元数据和请求的消息体,但是不记录响应的消息体。 这不适用于非资源类型的请求。 |
RequestResponse | 记录请求的元数据、请求正文和响应正文。这不适用于非资源类型的请求。 |
审计后端
后端 | 说明 |
---|---|
Log | 将事件写入到文件系统 |
Webhook | 将事件发送到外部 HTTP API |
RKE
在 UI 上或者本地编辑 RKE 的 cluster.yml
文件,在如下位置启用审计日志功能:
1 | services: |
接着在/etc/kubernetes/audit-policy.yaml
能看到默认值:
1 | ... |
较新的版本中,审计日志参数的默认值如下:
1 | --audit-log-maxage=30 |
可以通过如下方法配置审计策略:
1 | services: |
RKE2
在 Rancher UI 上编辑 RKE2 集群,进入 YAML 编辑状态,在 machineGlobalConfig 下,新增一个 audit-policy-file 配置,具体位置参考如下:
1 | spec: |
说明:
- 第一个规则表示只监听 helmchartconfig 的增删改的操作
- 第二、三个规则表示不监听所有的查看操作。
/var/lib/rancher/rke2/server/logs
这个目录下,观察audit.log
文件的日志情况
常用规则
1 | apiVersion: audit.k8s.io/v1 |
参考链接:
https://kubernetes.io/zh-cn/docs/tasks/debug/debug-cluster/audit/