More Info:
Verifies that —kubelet-client-certificate and —kubelet-client-key are set so the API server authenticates to kubelets over TLS. Without them the apiserver-kubelet connection is not mutually authenticated.Risk Level
HighAddress
SecurityCompliance Standards
- CIS Kubernetes
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
- Generate or obtain a dedicated client certificate and key for the apiserver to authenticate to kubelets (run on any secure machine, then copy to each control plane node):
- On every control plane node, back up the existing API server manifest:
- On every control plane node, edit the API server static pod manifest to add the kubelet client certificate and key flags (this edit will cause the kube-apiserver static pod to restart):
kube-apiserver.yaml includes:- Ensure file permissions on the certificate and key are appropriately restricted on every control plane node:
- Wait for the kube-apiserver static pod to be recreated and become Ready (run on any machine with kubectl configured):
STATUS as Running and READY as 1/1.- Verify on every control plane node that the kube-apiserver process is now running with the required flags:
--kubelet-client-certificate=/etc/kubernetes/pki/kubelet-client.crt and --kubelet-client-key=/etc/kubernetes/pki/kubelet-client.key.Using kubectl
Using kubectl
kubectl cannot modify the API server’s host-level configuration or the static pod manifest at
/etc/kubernetes/manifests/kube-apiserver.yaml on control plane nodes. To remediate this finding, you must edit that file directly on every control plane node; see the Manual Steps section for the exact procedure.Automation
Automation

