Securing a Kubernetes cluster in production requires a layered, defense-in-depth approach. Misconfigurations remain the leading cause of container breaches, and the attack surface of a default Kubernetes installation is far broader than most teams realize. This checklist distills the most critical security controls into ten actionable areas — use it as a baseline audit for any cluster running production workloads.
1. API Server Access Control
The Kubernetes API server is the front door to your cluster. Every request — from kubectl commands to controller reconciliation loops — passes through it. Weak access controls here compromise everything downstream.
- Enforce least-privilege RBAC. Audit every
ClusterRoleBindingandRoleBinding. Remove default bindings that grant broad access. Use namespace-scopedRoleobjects instead ofClusterRolewherever possible, and never bindcluster-adminto application service accounts. - Enable audit logging. Configure the API server with an audit policy that captures at least
Metadata-level events for all resources andRequestResponse-level events for secrets, RBAC objects, and authentication endpoints. Ship logs to an immutable store. - Disable anonymous authentication. Set
--anonymous-auth=falseon the API server. Use short-lived bound service account tokens rather than long-lived static tokens or client certificates with multi-year expiry.
2. Network Policies
By default, every pod in a Kubernetes cluster can communicate with every other pod — across namespaces, without restriction. Network Policies are the primary mechanism for implementing microsegmentation.
- Apply default-deny ingress and egress in every namespace. Start with a blanket deny rule, then selectively allow required traffic. This inverts the model from “everything allowed unless blocked” to “everything blocked unless permitted.”
- Restrict pod-to-pod communication by label selector. Define policies allowing frontend pods to reach backend pods, backend to databases, and nothing else. Be explicit about port numbers — do not allow all TCP traffic when only port 5432 is needed.
- Use a CNI plugin that enforces policies reliably. Verify your chosen plugin (Calico, Cilium, Antrea) actively enforces both ingress and egress rules. Test enforcement by attempting blocked connections in a staging cluster.
3. Pod Security Standards
Pod Security Standards (PSS) replace the deprecated PodSecurityPolicy API. They define three profiles — Privileged, Baseline, and Restricted — that control what security-sensitive fields a pod spec may contain.
- Enforce the Restricted profile for application workloads. The Restricted profile requires pods to drop all capabilities, run as non-root, use a read-only root filesystem, and disallow privilege escalation. Apply it via the
pod-security.kubernetes.io/enforce: restrictednamespace label. - Use Baseline for system namespaces that need flexibility. Some infrastructure components (log collectors, CNI agents) legitimately need host networking or elevated capabilities. Apply Baseline to these namespaces but audit each exception individually.
- Run in warn and audit mode before enforcing. Before switching to
enforce, usewarnandauditmodes first. This surfaces violations without breaking deployments, giving teams time to remediate.
4. Image Security
Container images are the software supply chain’s last mile. A compromised or outdated image introduces vulnerabilities directly into your runtime environment.
- Scan every image in your CI/CD pipeline. Integrate Trivy, Grype, or Snyk into your build pipeline. Fail builds that contain critical or high-severity CVEs. Scan on a schedule — new vulnerabilities are discovered against existing images constantly.
- Require signed images and verify at admission. Use cosign (Sigstore) to sign images at build time, and deploy an admission controller (Kyverno or OPA Gatekeeper) that rejects any image without a valid signature.
- Pin images by digest, never use
:latest. The:latesttag is mutable. Pin image references to immutable SHA256 digests (e.g.,myapp@sha256:abc123...) so deployments are reproducible and auditable.
5. Secrets Management
Kubernetes Secrets are base64-encoded by default — not encrypted. Anyone with read access to the API server or etcd can trivially decode them. Mature secret management requires layers beyond the built-in primitives.
- Use an external secrets manager. Integrate with HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, or GCP Secret Manager via the External Secrets Operator or the Secrets Store CSI Driver. This keeps secret material out of etcd entirely.
- Enable encryption at rest for etcd. Configure
--encryption-provider-configwith anEncryptionConfigurationusingaescbc,aesgcm, or a KMS provider. Verify by reading a secret directly from etcd to confirm ciphertext. - Rotate secrets automatically. Never share secrets across namespaces. Use short TTLs where possible (e.g., Vault dynamic secrets), and automate rotation so leaked credentials expire before exploitation.
6. Logging and Monitoring
You cannot secure what you cannot see. Comprehensive observability transforms security from reactive incident response into proactive threat detection.
- Centralize Kubernetes audit logs. Forward API server audit logs to a SIEM or log aggregation platform (ELK, Loki, Splunk). Alert on suspicious patterns: privilege escalation attempts, unexpected secret access, and
execinto running pods. - Deploy runtime threat detection with Falco. Falco monitors system calls at the kernel level and alerts on anomalous behavior — unexpected shell executions inside containers, sensitive file reads, outbound connections to unknown IPs. Treat Falco alerts as high-priority security events.
- Monitor security metrics with Prometheus. Track RBAC denial counts, failed authentication attempts, image pull errors, and NetworkPolicy drop counts. Build Grafana dashboards for real-time cluster security posture visibility.
7. Runtime Security
Even with strong admission controls and image scanning, runtime protection is essential. Containers share the host kernel, and a kernel exploit from within a container can compromise the entire node.
- Apply seccomp profiles to restrict system calls. Use the
RuntimeDefaultseccomp profile at minimum. For high-value workloads, create custom profiles using tools likeseccomp-profile-recorderthat whitelist only the syscalls your application uses. - Enforce AppArmor or SELinux profiles. Mandatory Access Control systems add restriction layers beyond Linux discretionary access controls. Assign profiles to pods that limit file access, network operations, and capability usage at the OS level.
- Use read-only root filesystems. Set
readOnlyRootFilesystem: truein the pod security context. This prevents attackers from writing malicious binaries or scripts. MountemptyDirvolumes for directories your application must write to (e.g.,/tmp).
8. Cluster Hardening
A secure workload running on an insecure cluster is still at risk. Hardening the cluster infrastructure closes gaps that application-level controls cannot address.
- Encrypt etcd data and restrict access. Beyond encryption at rest, ensure etcd is only accessible via mutual TLS, listens only on internal interfaces, and is not exposed to the pod network.
- Run CIS Kubernetes Benchmark scans regularly. Use
kube-benchto audit your cluster against the CIS Benchmark. Address all failures in the control plane, worker node, and policy sections. Automate scans in CI/CD or run nightly. - Keep the cluster and nodes patched. Subscribe to Kubernetes security announcements and CVE feeds. Maintain an upgrade cadence within the supported version window (N-2 minor releases). Patch node operating systems and container runtimes on the same schedule.
9. Supply Chain Security
Software supply chain attacks have escalated dramatically. Securing the chain of custody from source code to running container is now a critical discipline.
- Generate and publish SBOMs for every image. A Software Bill of Materials in SPDX or CycloneDX format documents every dependency in your container image. Generate SBOMs at build time with Syft and store them alongside images in your OCI registry.
- Adopt Sigstore for keyless signing and verification. Sigstore’s cosign, Rekor, and Fulcio provide transparent, auditable signing infrastructure. Keyless signing ties image signatures to OIDC identities, eliminating the burden of managing long-lived signing keys.
- Deploy admission controllers that enforce supply chain policies. Use Kyverno or OPA Gatekeeper to verify image signatures, SBOM attestations, and vulnerability scan results at admission time. Reject workloads that fail any check.
10. Compliance
Regulatory and framework compliance is not optional for organizations handling sensitive data. Kubernetes environments must meet the same standards as any other production infrastructure.
- Map Kubernetes controls to SOC 2 trust criteria. SOC 2 requires controls around access management, change management, and monitoring. Document how RBAC, audit logging, image signing, and GitOps workflows satisfy each applicable criterion. Automate evidence collection.
- Address HIPAA requirements for PHI workloads. If your cluster processes Protected Health Information, ensure encryption in transit (TLS everywhere, including pod-to-pod via service mesh), encryption at rest (etcd and persistent volumes), access audit trails, and workforce access controls.
- Treat compliance as continuous, not periodic. Replace annual audits with continuous compliance tooling. Use policy-as-code engines (Kyverno, OPA) to enforce standards in real time, and pipe compliance status into dashboards that security and compliance teams monitor daily.
Recommended Reading
Dive deeper into specific areas covered in this checklist:
- GitOps Security Patterns at Kubernetes Scale
- Kubernetes Pod Security Standards for Production
- Securing Kubernetes Supply Chains with SBOM & Sigstore
Recommended Books
- Kubernetes in Action, 2nd Edition — The definitive deep-dive into Kubernetes internals, updated for modern cluster operations.
- Hacking Kubernetes — Threat modeling, attack patterns, and defensive strategies specific to Kubernetes environments.
📊 Free AI Market Intelligence
Join Alpha Signal — AI-powered market research delivered daily. Narrative detection, geopolitical risk scoring, sector rotation analysis.
Pro with stock conviction scores: $5/mo







