Skip to main content

More Info:

A dedicated —trusted-ca-file should be used for etcd so it does not share a certificate authority with the wider cluster. Using a separate CA limits the blast radius if another components CA is compromised.

Risk Level

High

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. On every etcd (control plane) node, identify the current etcd manifest and TLS settings:
    Note any existing --trusted-ca-file=... flag under the etcd container command: section and any other TLS flags such as --cert-file, --key-file, and --peer-trusted-ca-file.
  2. On every etcd node, create a dedicated CA for etcd (do NOT reuse the cluster CA). Example using OpenSSL:
    Adjust subject, key size, and duration to match your security policy.
  3. On every etcd node, issue an etcd server certificate signed by this dedicated CA and restrict permissions:
[ v3_req ] basicConstraints = CA:FALSE keyUsage = digitalSignature,keyEncipherment extendedKeyUsage = serverAuth,clientAuth subjectAltName = @alt_names[ alt_names ] DNS.1 = localhost DNS.2 = etcd IP.1 = 127.0.0.1 EOF ) sudo chmod 600 /etc/etcd/pki/etcd-ca.key /etc/etcd/pki/etcd-server.key sudo chown root:root /etc/etcd/pki/*
Under the etcd container command: list, ensure you add or update the following flags to point to the dedicated CA and certs:
Also, if peer TLS is enabled, align peer CA/certs to this same dedicated CA:
Save and exit. Editing this static pod manifest will cause the kubelet to restart the etcd pod automatically; brief etcd/control-plane disruption may occur.
  1. On every etcd node, confirm the etcd pod has restarted and is healthy:
    Verify there are no TLS or CA-related errors in the logs.
  2. Verification (on every etcd node): ensure the etcd process is running with the dedicated --trusted-ca-file flag and that it points to the etcd-specific CA path:
    Confirm the command line includes:
    and that this CA is not the general Kubernetes cluster CA used by other components.
kubectl cannot modify the etcd static pod manifest or its TLS configuration. This finding must be fixed directly on each etcd node by editing /etc/kubernetes/manifests/etcd.yaml and the underlying CA files; follow the Manual Steps section for the required host-level changes.