如何为导入的标准 Kubernetes 集群配置审计采集?
场景说明
将标准 Kubernetes 集群导入平台后,必须先在该集群上启用 Kubernetes API server 审计日志记录,平台才能从该集群采集审计数据。
本文档中的操作步骤适用于控制平面节点由您自行管理的标准 Kubernetes 集群,例如基于 kubeadm 的集群。对于您无法登录或修改控制平面节点的云厂商托管 Kubernetes 服务,则不适用。
前提条件
- 标准 Kubernetes 集群已导入平台。
- 您可以登录集群中的每个控制平面节点。
- 集群使用标准的 kubeadm 风格 API server 静态 Pod manifest 路径:
/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- 如果集群有多个控制平面节点,请在每个节点上更新 manifest。
volumeMounts[].name的值必须与对应的volumes[].name值一致。- 不要更改挂载路径
/etc/kubernetes/audit。
-
保存文件并验证配置是否生效。
检查每个控制平面节点上是否生成了
/etc/kubernetes/audit/audit.log。如果该文件存在并且包含审计记录,则说明配置已生效。