如何为导入的标准 Kubernetes 集群配置审计采集?
场景描述
将标准 Kubernetes 集群导入平台后,必须先在该集群上启用 Kubernetes API 服务器审计日志记录,平台才能从该集群采集审计数据。
本文档适用于控制平面节点由您自行管理的标准 Kubernetes 集群,例如基于 kubeadm 的集群。不适用于无法登录或修改控制平面节点的托管云 Kubernetes 集群。
前提条件
- 标准 Kubernetes 集群已导入平台。
- 您可以登录集群中的每个控制平面节点。
- 集群使用标准的 kubeadm 风格 API 服务器静态 Pod 清单路径:
/etc/kubernetes/manifests/kube-apiserver.yaml。
操作步骤
-
创建本地的
policy.yaml审计策略文件。根据 Kubernetes 版本设置
apiVersion:- Kubernetes 1.24 之前版本:
audit.k8s.io/v1beta1 - Kubernetes 1.24 及以后版本:
audit.k8s.io/v1
使用以下内容:
TIP如果集群版本早于 1.24,仅需将
apiVersion字段改为audit.k8s.io/v1beta1,策略内容其余部分保持不变。 - Kubernetes 1.24 之前版本:
-
将
policy.yaml上传到每个控制平面节点的/etc/kubernetes/audit/目录。WARNING- 如果集群有多个控制平面节点,需上传到每个节点。
- 如果目录不存在,请手动创建
/etc/kubernetes/audit/。
-
修改每个控制平面节点上的
/etc/kubernetes/manifests/kube-apiserver.yaml文件。在
spec.containers[].command中添加或更新以下审计相关参数:示例:
-
在同一
kube-apiserver.yaml文件中添加审计目录挂载配置。在
spec.containers[].volumeMounts下添加:在
spec.volumes下添加:WARNING- 如果集群有多个控制平面节点,需在每个节点更新该清单文件。
volumeMounts[].name必须与对应的volumes[].name保持一致。- 不要更改挂载路径
/etc/kubernetes/audit。
-
保存文件并验证配置是否生效。
检查每个控制平面节点上是否生成了
/etc/kubernetes/audit/audit.log文件。如果文件存在且包含审计记录,则配置生效。