k8s开启审计日志

k8s默认是关闭审计功能的,想看的话需要到apiserver的pod中才可以。

开启此功能是为了进行k8s审计日志的收集,方便我们查看k8s中用户的各自操作。

开启此功能之前,我们要先创建个审计策略文件audit-policy.yaml

例如以下的测验文件

yaml 复制代码
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  # 记录 PVC 创建/删除操作
  - level: Metadata
    verbs: ["create", "delete"]
    resources:
    - group: ""  # 核心 API 组
      resources: ["persistentvolumeclaims"]
  
  # 可选:记录 PVC 更新操作(如状态变更)
  - level: Request
    verbs: ["update"]
    resources:
    - group: ""
      resources: ["persistentvolumeclaims"]
  
  # 记录命名空间操作(PVC 依赖命名空间)
  - level: Metadata
    resources:
    - group: ""
      resources: ["namespaces"]

我把文件放在了/etc/kubernetes/audit-policy.yaml

然后我们备份apiserver文件

复制代码
cp /etc/kubernetes/manifests/kube-apiserver.yaml  /tmp/apiserver-bak.yaml

然后再进行修改操作

yaml 复制代码
    - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
    - --audit-log-path=/var/log/audit/kubernetes-audit.log
    - --audit-log-maxage=30
    - --audit-log-maxbackup=10
    - --audit-log-maxsize=100
    - --audit-log-format=json
    - --audit-log-compress=true

审计策略路径

存放审计文件的路径

日志最大存放时间

日志最大副本数

日志最大存储大小m

日志输出的格式

日志是否开启压缩

这里定义好之后,接着往下把这个存放审计文件的路径挂载到pod中

volumemounts挂载审计策略文件和审计日志路径

在volumes中配置这两个

保存退出,然后把/etc/kubernetes/manifests/kube-apiserver.yaml文件移动到/etc,过十秒后再移动回来/etc/kubernetes/manifests/kube-apiserver.yaml触发apiserver重启,即可查看生效后的审计日志。

复制代码
tail -f /var/log/audit/kubernetes-audit.log