CKSCluster HardeningMedium
A CI ServiceAccount was given cluster-wide power; remove the bindings and grant a minimal namespaced Role instead.
Single node · ~8 min · 9 points
- rbac
- least-privilege
- serviceaccount
- clusterrolebinding
- cluster-hardening
goldenkube start cks-hrd-001
CKSCluster HardeningEasy
Disable token automounting on the default and a dedicated ServiceAccount and move a running Deployment onto it.
Single node · ~7 min · 8 points
- serviceaccount
- automount
- token
- deployment
- cluster-hardening
goldenkube start cks-hrd-002
CKSCluster HardeningHard
The API server authorizes every request and lets kubelets edit any node; restore Node,RBAC authorization and the NodeRestriction admission plugin.
Single node · ~9 min · 8 points
- kube-apiserver
- authorization
- admission
- noderestriction
- static-pod
goldenkube start cks-hrd-003
CKSMinimize Microservice VulnerabilitiesMedium
Enforce the restricted Pod Security Standard on a namespace and bring a non-compliant Deployment into line without recreating it.
Single node · ~9 min · 9 points
- pod-security-admission
- pod-security-standards
- restricted
- securitycontext
- seccomp
goldenkube start cks-mic-001
CKSMinimize Microservice VulnerabilitiesHard
Write an EncryptionConfiguration, wire it into the API server static pod and rewrite an existing Secret so etcd holds it encrypted.
Single node · ~10 min · 8 points
- secrets
- encryption-at-rest
- etcd
- kube-apiserver
- static-pod
goldenkube start cks-mic-002
CKSMinimize Microservice VulnerabilitiesMedium
Move a Secret from an environment variable to a read-only volume with restrictive file mode and make the Secret immutable.
Single node · ~8 min · 9 points
- secrets
- immutable
- volumes
- deployment
- least-privilege
goldenkube start cks-mic-003
CKSMinimize Microservice VulnerabilitiesMedium
A tenant workload shares the node's network, PID and IPC namespaces, runs privileged and mounts the host; isolate it and enforce baseline.
Single node · ~8 min · 9 points
- isolation
- multi-tenancy
- host-namespaces
- privileged
- pod-security-admission
goldenkube start cks-mic-004
CKSMonitoring, Logging and Runtime SecurityHard
Write an audit policy with per-resource levels and wire it into the API server static pod with log rotation.
Single node · ~10 min · 9 points
- audit-logging
- kube-apiserver
- audit-policy
- static-pod
- monitoring
goldenkube start cks-run-001
CKSMonitoring, Logging and Runtime SecurityMedium
Run nginx with a read-only root filesystem, keeping only the directories it really needs writable through emptyDir volumes.
Single node · ~8 min · 7 points
- immutability
- readonlyrootfilesystem
- emptydir
- runtime-security
- deployment
goldenkube start cks-run-002
CKSMonitoring, Logging and Runtime SecurityMedium
Investigate running containers to find the one executing a mining process, record it and contain it without destroying evidence.
Single node · ~7 min · 8 points
- runtime-security
- incident-response
- processes
- behavioral-analytics
- crictl
goldenkube start cks-run-003
CKSMonitoring, Logging and Runtime SecurityMedium
Use an exported audit log to identify who deleted a Secret and from where, then revoke that user's namespace access.
Single node · ~8 min · 8 points
- audit-logs
- incident-response
- jq
- rbac
- investigation
goldenkube start cks-run-004
CKSCluster SetupMedium
Lock a namespace down with a default-deny ingress and egress policy, keep cluster DNS working and open exactly one client-to-server path.
Single node · ~9 min · 10 points
- networkpolicy
- default-deny
- egress
- dns
- cluster-setup
goldenkube start cks-set-001
CKSCluster SetupMedium
Protect node metadata by blocking pod egress to 169.254.169.254 while keeping in-cluster traffic and other egress open.
Single node · ~6 min · 7 points
- networkpolicy
- egress
- ipblock
- metadata
- cluster-setup
goldenkube start cks-set-002
CKSCluster SetupMedium
A worker's kubelet accepts anonymous, unauthorized requests and exposes the read-only port; harden its configuration in place.
Two nodes · ~8 min · 8 points
- kubelet
- cis-benchmark
- authentication
- authorization
- node
goldenkube start cks-set-003
CKSSupply Chain SecurityHard
Allow only images from one registry in labelled namespaces using a CEL ValidatingAdmissionPolicy and its binding.
Single node · ~9 min · 9 points
- validatingadmissionpolicy
- cel
- admission
- image-registry
- supply-chain
goldenkube start cks-sup-001
CKSSupply Chain SecurityEasy
Review six Deployment manifests against four security rules, report the violators and deploy only the compliant ones.
Single node · ~8 min · 7 points
- static-analysis
- manifests
- supply-chain
- securitycontext
- review
goldenkube start cks-sup-002
CKSSupply Chain SecurityEasy
Replace a mutable image tag with the digest of the image the running pods already use.
Single node · ~6 min · 7 points
- image-digest
- supply-chain
- immutability
- deployment
- containerd
goldenkube start cks-sup-003
CKSSupply Chain SecurityEasy
Check downloaded Kubernetes binaries against published SHA-512 checksums and discard the tampered ones.
Single node · ~6 min · 6 points
- checksums
- sha512
- binaries
- supply-chain
- upgrade
goldenkube start cks-sup-004
CKSSystem HardeningMedium
Load an AppArmor profile on a worker node in enforce mode and run a Pod confined by it through the securityContext field.
Two nodes · ~8 min · 8 points
- apparmor
- kernel-hardening
- securitycontext
- node
- system-hardening
goldenkube start cks-sys-001
CKSSystem HardeningEasy
Find and disable a service listening on a worker node and remove a local user's sudo membership without breaking the node.
Two nodes · ~7 min · 8 points
- systemd
- attack-surface
- least-privilege
- linux-users
- node
goldenkube start cks-sys-002