Skip to main content

More Info:

Enable Kubelet authentication using certificates.

Risk Level

Low

Address

Security

Compliance Standards

  • APRA CPS 234 (Australia)
  • BSI C5 (Germany)
  • Brazil LGPD
  • CCPA / CPRA (California)
  • CIS Critical Security Controls v8
  • CIS GKE
  • 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 configure the client CA file:
    Ensure the following section exists and is set to the correct CA certificate path (create the nested keys if missing):
    Replace /etc/kubernetes/pki/ca.crt with the actual path to your client CA file if different.
  2. Confirm the CA file exists and is readable by the kubelet user (usually root):
  3. Reload systemd and restart the kubelet so the new configuration takes effect:
  4. Verify the kubelet process is running and pick its PID:
    Confirm that the kubelet is running without crash-looping (the command should show a stable kubelet process).
  5. (Optional, if you also use command-line arguments instead of or in addition to the config file) On every worker node, edit the kubelet systemd drop-in to ensure --client-ca-file is present in the KUBELET_AUTHZ_ARGS:
    In the Environment= line that defines KUBELET_AUTHZ_ARGS, ensure it contains:
    Then reload and restart again:
  6. Final verification on every worker node:
    If you are using only the config file, the presence of authentication.x509.clientCAFile in /var/lib/kubelet/config.yaml together with a healthy kubelet process satisfies the control; if you are also using flags, confirm --client-ca-file=/etc/kubernetes/pki/ca.crt appears in the kubelet command line output.
kubectl cannot configure the kubelet’s --client-ca-file or edit /var/lib/kubelet/config.yaml, because these are host-level settings managed on each worker node. To remediate this finding, make the changes directly on the nodes as described in the Manual Steps section.

Additional Reading: