CNTR-K8-001420 - Kubernetes Kubelet must have the SSL Certificate Authority set.

Warning! Audit Deprecated

This audit has been deprecated and will be removed in a future update.

View Next Audit Version

Information

Kubernetes container and pod configuration are maintained by Kubelet. Kubelet agents register nodes with the API Server, mount volume storage, and perform health checks for containers and pods. Anyone who gains access to Kubelet agents can effectively control applications within the pods and containers. Using authenticity protection, the communication can be protected against man-in-the-middle attacks/session hijacking and the insertion of false information into sessions.

The communication session is protected by utilizing transport encryption protocols such as TLS. TLS provides the Kubernetes API Server with a means to authenticate sessions and encrypt traffic.

To enable encrypted communication for Kubelet, the clientCAFile must be set. This parameter gives the location of the SSL Certificate Authority file used to secure Kubelet communication.

Solution

On the Control Plane, run the command:
ps -ef | grep kubelet

Remove the '--client-ca-file' option if present.

Note the path to the config file (identified by --config).

Edit the Kubernetes Kubelet config file:
Set the value of 'clientCAFile' to a path containing an Approved Organizational Certificate.

Restart the kubelet service using the following command:
systemctl daemon-reload && systemctl restart kubelet

See Also

https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_Kubernetes_V2R1_STIG.zip

Item Details

References: CAT|II, CCI|CCI-001184, Rule-ID|SV-242420r961110_rule, STIG-ID|CNTR-K8-001420, Vuln-ID|V-242420

Plugin: Unix

Control ID: 3c5d469cafabc6438e1e70f78eb27974c141dc0efc571c6d50659671a70a61d8