hardMultiple Choice
CKS Practice Question: A security scan reports that the etcd data…
A security scan reports that the etcd data directory is not encrypted at rest. The cluster uses etcd v3.5. Which steps are required to enable encryption?
⚠ Common exam trap
Many exam-takers assume encryption at rest is configured directly on etcd (via flags or environment variables), when in fact it is a kube-apiserver-level feature that uses an EncryptionConfiguration resource and the --encryption-provider-config flag.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Create an EncryptionConfiguration resource with aescbc, restart API server with --encryption-provider-config
Etcd data encryption at rest in Kubernetes is implemented via an EncryptionConfiguration resource that specifies a provider (e.g., aescbc) and a key. The kube-apiserver must be restarted with the --encryption-provider-config flag pointing to that configuration file, which instructs the API server to encrypt resources before writing them to etcd. This is the only supported method for enabling encryption at rest in Kubernetes clusters using etcd v3.5.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Use etcdctl to encrypt the data directory
Why it's wrong here
etcdctl is a command-line client for interacting with etcd, not a tool for encrypting its storage backend. It can create snapshots, list keys, or manipulate data, but it never touches the on-disk format of the etcd data directory. Kubernetes encryption at rest is performed by the API server before data is written to etcd, so running etcdctl cannot protect existing or future data from disk-level access.
- ✓
Create an EncryptionConfiguration resource with aescbc, restart API server with --encryption-provider-config
Why this is correct
The correct procedure is to define an EncryptionConfiguration file that specifies the aescbc provider along with a valid key, then start kube-apiserver with the --encryption-provider-config flag pointing to that file. After restarting the API server, it will encrypt matching Kubernetes resources (e.g., Secrets) before persisting them to etcd and decrypt them on reads. This is the officially supported, cluster-wide mechanism for encryption at rest in Kubernetes.
- ✗
Set --encryption-provider=secretbox on etcd
Why it's wrong here
The etcd binary does not accept an --encryption-provider flag — that flag belongs to kube-apiserver. etcd's own storage layer has no general-purpose field-level encryption that integrates with Kubernetes, and secretbox is not a recognized etcd option. In the Kubernetes architecture, encryption happens in the API server, not in etcd, so configuring etcd this way is both syntactically invalid and architecturally wrong.
- ✗
Set ETCD_ENABLE_ENCRYPTION=true environment variable
Why it's wrong here
ETCD_ENABLE_ENCRYPTION is not a standard environment variable recognized by etcd or kube-apiserver. Kubernetes configuration for at-rest encryption is done declaratively via the EncryptionConfiguration YAML passed with a specific API server flag, not through environment variables. Relying on an env var also would not provide the necessary key management or provider selection that the API server's configuration requires.
Go deeper
Related to this question
About these practice questions
One of 845 original CKS practice questions on Courseiva, each with a full explanation and wrong-answer analysis — not exam dumps or protected exam content. Learn why practice questions differ from exam dumps →
Same concept, more angles
4 more ways this is tested on CKS
These questions test the same concept from different angles. Work through them to make sure you can recognise it however the exam phrases it.
Variation 1. You need to encrypt etcd data at rest using AES-CBC. Which encryption provider should you specify in the EncryptionConfiguration?
medium- A.aesgcm
- ✓ B.aescbc
- C.aes-256-cbc
- D.secretbox
Why B: (aescbc) is correct because Kubernetes supports AES-CBC encryption via the 'aescbc' provider in the EncryptionConfiguration. This provider uses AES in Cipher Block Chaining mode with a 32-byte key for encryption at rest, as specified in the Kubernetes documentation for encrypting etcd data.
Variation 2. You have enabled etcd encryption at rest using an EncryptionConfiguration with aescbc provider. After applying the configuration, you create a new Secret. Which of the following is true regarding the encrypted Secret?
hard- A.All Secrets are encrypted because the EncryptionConfiguration applies to all resources.
- B.All Secrets in the cluster, including existing ones, are immediately encrypted.
- ✓ C.Only the new Secret is encrypted; existing Secrets remain in plaintext.
- D.The new Secret is stored in plaintext because aescbc is not a valid provider.
Why C: When you apply an EncryptionConfiguration with aescbc provider, only newly created Secrets are encrypted at rest. Existing Secrets remain in plaintext because encryption is applied at write time; the API server does not retroactively re-encrypt data already stored in etcd. This is why option C is correct.
Variation 3. Which THREE of the following are valid fields in an EncryptionConfiguration YAML to encrypt secrets at rest?
medium- A.providers
- ✓ B.resources
- ✓ C.apiVersion
- D.key
- ✓ E.kind
Why B: `resources` is a valid field in an EncryptionConfiguration YAML that specifies which Kubernetes resources (e.g., secrets) should be encrypted. The EncryptionConfiguration object defines how to encrypt data at rest in etcd, and the `resources` field lists the resource types to encrypt, such as `secrets`. Without this field, the encryption configuration would not know which resources to apply encryption to.
Variation 4. You have a requirement to encrypt secrets at rest in etcd. Which resource and apiVersion should be used?
medium- A.EtcdEncryption with apiVersion apiserver.config.k8s.io/v1beta1
- B.EncryptionConfig with apiVersion v1
- C.SecretEncryption with apiVersion v1
- ✓ D.EncryptionConfiguration with apiVersion apiserver.config.k8s.io/v1
Why D: The Kubernetes API server uses an `EncryptionConfiguration` resource with `apiVersion apiserver.config.k8s.io/v1` to define how secrets and other resources are encrypted at rest in etcd. This resource specifies providers (e.g., `aescbc`, `secretbox`) and keys, and is loaded via the `--encryption-provider-config` flag on the API server. The `v1` version is the stable, production-ready API version for this configuration.
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This CKS practice question is part of Courseiva's free CNCF certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the CKS exam.