Skip to main content

More Info:

Disable anonymous requests to the Kubelet server.

Risk Level

High

Address

Security

Compliance Standards

  • APRA CPS 234 (Australia)
  • BSI C5 (Germany)
  • Brazil LGPD
  • CCPA / CPRA (California)
  • CIS Critical Security Controls v8
  • CIS EKS
  • CMMC 2.0
  • CSA Cloud Controls Matrix v4
  • DPDPA
  • Digital Operational Resilience Act (EU)
  • Essential 8
  • ISO/IEC 27017
  • ISO/IEC 27018
  • ISO/IEC 27701
  • KSA PDPL
  • MAS Technology Risk Management (Singapore)
  • MITRE ATT&CK (Cloud)
  • NIS2 Directive
  • NIST SP 800-171
  • NYDFS 23 NYCRR 500
  • SWIFT Customer Security Controls Framework
  • Sarbanes-Oxley IT General Controls
  • UK NCSC Cyber Assessment Framework

Triage and Remediation

Remediation

Manual Steps

  1. On every worker node, open the kubelet config file and ensure anonymous auth is disabled:
Find or add the following block under authentication:
Save and exit.
  1. If the node also uses a systemd drop-in with kubelet flags, ensure there is no conflicting --anonymous-auth flag. Open the file:
In the KUBELET_KUBEADM_ARGS (or similar) line, remove any --anonymous-auth=true flag. If you must specify it, set:
Save and exit.
  1. Reload systemd configuration on the worker node:
  1. Restart the kubelet on the worker node (this will temporarily impact node status and pod scheduling on this node):
  1. Verify the kubelet process no longer allows anonymous auth by inspecting its arguments:
Confirm that either:
  • there is no --anonymous-auth=true flag present, and/or
  • if --anonymous-auth appears, it is --anonymous-auth=false.
kubectl cannot change the kubelet’s --anonymous-auth setting because it is configured on each worker node’s host (in /var/lib/kubelet/config.yaml or the kubelet systemd unit). To remediate this finding, follow the host-level instructions in the Manual Steps section on every worker node.

Additional Reading: