# 官方提供@yunTaoScripts 监控审计 🔥🔥

loading

通过日志可以查看一些应用程序的行为,不能记录人为的动作,此时就需要审计日志记录指定用户的一些行为,记录时间,地点,人物,事件。

# 考虑要素

直接修改api-server就可以了。

  1. 审计日志放在哪。
--audit-log-path string
If set, all requests coming to the apiserver will be logged to this file. '-' means standard out.
  1. 保留时间。
--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.
  1. 审计日志策略
--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
最后修改时间: 12/31/2022, 12:00:03 PM