# 官方提供@yunTaoScripts 监控审计 🔥🔥
通过日志可以查看一些应用程序的行为,不能记录人为的动作,此时就需要审计日志记录指定用户的一些行为,记录时间,地点,人物,事件。
# 考虑要素
直接修改api-server就可以了。
- 审计日志放在哪。
--audit-log-path string
If set, all requests coming to the apiserver will be logged to this file. '-' means standard out.
- 保留时间。
--audit-log-maxage int
The maximum number of days to retain old audit log files based on the timestamp encoded in their filename.
--audit-log-maxbackup int
The maximum number of old audit log files to retain. Setting a value of 0 will mean there s no restriction on the number of files.
--audit-log-maxsize int
The maximum size in megabytes of the audit log file before it gets rotated.
- 审计日志策略
--audit-policy-file string
Path to the file that defines the audit policy configuration.
- 什么时候记录
- 记录什么
- 具体策略
缩进小技巧
set shiftwidth=2
# 审计策略
# 审计日志记录时间
- RequestReceived
- 事件的 stage 将在审计处理器接收到请求后,并且在委托给其余处理器之前生成。
- ResponseStarted
- 在响应消息的头部发送后,但是响应消息体发送前。 这个阶段仅为长时间运行的请求生成(例如 watch)。 -
- ResponseComplete
- 当响应消息体完成并且没有更多数据需要传输的时候。
- Panic
- 当 panic 发生时生成。
# 审计日志内容
- None
- 符合这条规则的日志将不会记录。
- Metadata
- 记录请求的元数据(请求的用户、时间戳、资源、动词等等), 但是不记录请求或者响应的消息体。
- Request
- 记录事件的元数据和请求的消息体,但是不记录响应的消息体。 这不适用于非资源类型的请求。
- RequestResponse
- 记录事件的元数据,请求和响应的消息体。这不适用于非资源类型的请求
# 创建审计日志规则
root@vms33:~# cat /etc/kubernetes/audit/audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
- "RequestReceived" ## 触发条件,收到请求时触发
rules:
- level: Metadata ## 日志级别
resources:
- group: ""
resources: ["pods"]
# 创建日志存储路径
root@vms33:~# mkdir /var/log/audit
# 开启api-server审计日志选项
- 编辑api-server manifests文件
root@vms33:~# cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep audit -C3
- command:
- kube-apiserver
- --advertise-address=192.168.26.33
- --audit-log-path=/var/log/audit/audit.log ## 指定日志文件
- --audit-log-maxsize=1 ## 日志文件最大1M
- --audit-log-maxbackup=20 ## 最多保存20个文件
- --audit-log-maxage=3 ## 最多保留3天
- --audit-policy-file=/etc/kubernetes/audit/audit-policy.yaml ##指定审计日志策略
--
- mountPath: /var/log/audit ## 挂载审计日志文件夹
name: audit-log
readOnly: false
- mountPath: /etc/kubernetes/audit ## 挂载审计策略文件夹
name: audit-policy
readOnly: true
--
volumes:
- hostPath:
path: /etc/kubernetes/audit
type: DirectoryOrCreate
name: audit-policy
- hostPath:
path: /var/log/audit
type: DirectoryOrCreate
name: audit-log
如果修改完api-server起不来怎么办?
nerdctl ps | grep api
首先通过
crictl log 容器id
查看报错信息改正错误
nerdctl rm 容器id
systemctl restart kubelet.service
查看日志文件
root@vms33:~# tail -f /var/log/audit/audit.log
← 快速链接