1.2.6 Ensure that the --kubelet-certificate-authority argument is set as appropriate

Information

Verify kubelet's certificate before establishing connection.

Rationale:

The connections from the apiserver to the kubelet are used for fetching logs for pods, attaching (through kubectl) to running pods, and using the kubelet's port-forwarding functionality. These connections terminate at the kubelet's HTTPS endpoint. By default, the apiserver does not verify the kubelet's serving certificate, which makes the connection subject to man-in-the-middle attacks, and unsafe to run over untrusted and/or public networks.

Solution

Follow the Kubernetes documentation and setup the TLS connection between the apiserver and kubelets. Then, edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml on the master node and set the --kubelet-certificate-authority parameter to the path to the cert file for the certificate authority.

--kubelet-certificate-authority=<ca-string>

Impact:

You require TLS to be configured on apiserver as well as kubelets.

Default Value:

By default, --kubelet-certificate-authority argument is not set.

References:

https://kubernetes.io/docs/admin/kube-apiserver/

https://kubernetes.io/docs/admin/kubelet-authentication-authorization/

https://kubernetes.io/docs/concepts/cluster-administration/master-node-communication/#apiserver---kubelet

See Also

https://workbench.cisecurity.org/files/2662

Item Details

Category: IDENTIFICATION AND AUTHENTICATION

References: 800-53|IA-5(2), CSCv6|3.4, CSCv7|4.5

Plugin: Unix

Control ID: 4161baf3c4f78adaec96d6e4aaddedb0b742055d1cfddf9e4b580bdf6c9dc28b