Check ID:
Provider: Kubernetes
Service:
Severity: CRITICAL
Categories:
Resource type:
apiserver_kubelet_tls_authProvider: Kubernetes
Service:
apiserverSeverity: CRITICAL
Categories:
cluster-security, encryptionResource type:
PodWhat this check verifies
Kubernetes API server is configured to use TLS client certificates when communicating with kubelets via--kubelet-client-certificate and --kubelet-client-key.
Risk
Without mTLS to kubelets, apiserver requests may be anonymous or weakly authenticated. Adversaries can abuse kubelet endpoints to:- Read logs and files (C)
- Exec into pods (I)
- Evict or disrupt pods (A) Enables lateral movement and workload tampering.
Recommendation
Enforce mutual TLS between apiserver and kubelets using a dedicated client certificate/key (--kubelet-client-certificate, --kubelet-client-key) signed by a trusted CA. Apply least privilege to kubelet authorization and disable anonymous access to strengthen defense-in-depth.
Remediation
Dashboard steps- SSH to the control plane node.
- Edit the API server static pod manifest: /etc/kubernetes/manifests/kube-apiserver.yaml
- Under spec.containers[0].command add both flags (use existing certs in /etc/kubernetes/pki): —kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt —kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
- Save the file; the kubelet will automatically restart the API server with the new flags.
References
Where this check fires
This check runs on every scheduled scan against your Kubernetes account. Findings appear at Cloud Security → Findings filterable byCheck ID = apiserver_kubelet_tls_auth. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Kubernetes checks