Ensure that the --encryption-provider-config argument is set as appropriate (API Server)

Encrypt etcd key-value store.

Risk Level: High
Cloud Entity: Pods
CloudGuard Rule ID: D9.K8S.IAM.82
Covered by Spectral: No
Category: Compute

GSL LOGIC

KubernetesPod where labels contain [value='kube-apiserver'] and namespace = 'kube-system' should have spec.containers with [parsedArgs contain [key like 'encryption-provider-config']]

REMEDIATION

Follow the Kubernetes documentation and configure a EncryptionConfig file. Then, edit
the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the master node and set the --encryption-provider-config parameter to the path
of that file:
--encryption-provider-config=</path/to/EncryptionConfig/File>

References

  1. https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/
  2. https://acotten.com/post/kube17-security
  3. https://kubernetes.io/docs/admin/kube-apiserver/
  4. https://github.com/kubernetes/features/issues/92

Pods

Pods are the smallest deployable units of computing that can be created and managed in Kubernetes.A Pod is a group of one or more containers (such as Docker containers), with shared storage/network, and a specification for how to run the containers.

Compliance Frameworks

  • CIS Kubernetes Benchmark v1.20
  • CIS Kubernetes Benchmark v1.23
  • CIS Kubernetes Benchmark v1.24
  • CIS Kubernetes Benchmark v1.5.1
  • CIS Kubernetes Benchmark v1.6.1