跳转至

Kubernetes Audit

一、apiserver开启audit.log

使用 kubeadm 启用 Kubernetes 的审计日志功能可以通过以下步骤实现。具体操作包括修改 API Server 的启动参数来开启审计日志记录并配置审计策略。

步骤 1:准备审计策略文件

首先,创建一个审计策略文件,这个文件定义了 Kubernetes 应记录哪些类型的操作。示例策略文件如下:

# audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: Metadata  # 记录元数据信息,例如用户、资源类型等
    verbs: ["create", "update", "delete"]  # 记录创建、更新、删除操作
    resources:
      - group: ""  # 指定 Core API 资源
        resources: ["pods", "services", "deployments"]  # 要审计的资源
  - level: None  # 忽略不感兴趣的其他请求
cat > /etc/kubernetes/audit-policy.yaml << EOF
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: Metadata
    verbs: ["create", "update", "delete"]
    resources:
      - group: ""
        resources: ["pods", "services", "deployments", "configmaps", "secrets", "serviceaccounts"]
  - level: None
EOF

将此文件保存为 audit-policy.yaml,并将其存放在主节点上一个合适的目录中(例如 /etc/kubernetes/audit-policy.yaml)。

步骤 2:修改 API Server 的启动参数

编辑 API Server 的配置文件来启用审计日志功能。在使用 kubeadm 部署的集群中,API Server 的配置位于 /etc/kubernetes/manifests/kube-apiserver.yaml

在此文件中添加以下参数来启用审计日志:

# /etc/kubernetes/manifests/kube-apiserver.yaml
spec:
  containers:
  - name: kube-apiserver
    image: k8s.gcr.io/kube-apiserver:v1.xx.x  # 确保这里的版本与您的 Kubernetes 版本匹配
    command:
      - kube-apiserver
      - --audit-policy-file=/etc/kubernetes/audit-policy.yaml  # 审计策略文件路径
      - --audit-log-path=/var/log/kubernetes/audit.log         # 审计日志文件路径
      - --audit-log-maxage=30                                  # 审计日志保留天数
      - --audit-log-maxbackup=10                               # 审计日志备份文件数
      - --audit-log-maxsize=100                                # 审计日志文件大小限制(单位 MB)
# kube-apiserver启动命令
    - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
    - --audit-log-path=/var/log/kubernetes/audit.log
    - --audit-log-maxage=7
    - --audit-log-maxbackup=5
    - --audit-log-maxsize=10

# 挂载进容器
    - mountPath: /etc/kubernetes/audit-policy.yaml
      name: audit-policy
      readOnly: true
    - mountPath: /var/log/kubernetes
      name: audit-log

# 挂载宿主机配置
  - hostPath:
      path: /etc/kubernetes/audit-policy.yaml
      type: File
    name: audit-policy
  - hostPath:
      path: /var/log/kubernetes
      type: DirectoryOrCreate
    name: audit-log

audit-policy-file 指向刚才创建的策略文件路径,并指定 audit-log-path 为保存审计日志的文件路径。

步骤 3:重启 API Server

编辑并保存 /etc/kubernetes/manifests/kube-apiserver.yaml 文件后,kubelet 会检测到文件的更改并自动重启 kube-apiserver 容器,使新的审计日志设置生效。

步骤 4:检查审计日志

配置完成后,API Server 会在指定的日志文件(如 /var/log/kubernetes/audit.log)中生成审计记录。可以通过以下命令查看日志:

cat /var/log/kubernetes/audit.log

可选:将审计日志发送到外部日志管理系统

为实现更全面的日志分析,可以使用 Fluentd、Filebeat 等工具将日志导出至 ELK、Splunk 等日志管理平台。

这就完成了通过 kubeadm 启用 Kubernetes 审计日志的流程。

二、Falco

Reference

三、Kubewatch

Reference

chat