Skip to main content

More Info:

The etcd server must be configured with the —cert-file and —key-file arguments so that client-to-server traffic is served over TLS. Without them, etcd traffic carrying all cluster state and secrets is unencrypted.

Risk Level

Critical

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. On every etcd (control plane) node, confirm the static pod manifest location and current etcd flags:
  2. On every etcd node, ensure a certificate and key exist for the etcd server (adjust CN/SANs as needed for your environment):
  3. On every etcd node, back up the existing etcd static pod manifest:
  4. On every etcd node, edit /etc/kubernetes/manifests/etcd.yaml to add the --cert-file and --key-file arguments to the etcd container command. For example, in the spec.containers[0].command list, ensure lines like the following are present (paths must match where you stored the cert and key):
    Save the file. The kubelet will automatically restart the etcd static pod when the manifest changes.
  5. On every etcd node, confirm the etcd pod has restarted successfully:
  6. On every etcd node, verify that the running etcd process includes the required flags:
    Ensure the output shows both --cert-file=/etc/etcd/pki/etcd.crt and --key-file=/etc/etcd/pki/etcd.key (or your chosen paths).
kubectl cannot modify the etcd static pod manifest or its process flags; this finding must be fixed directly on each etcd node by editing /etc/kubernetes/manifests/etcd.yaml. See the Manual Steps section for the exact host-level changes required.