Threat modeling a Kubernetes cluster means identifying what must be protected, where trust changes, how attackers could enter or move through the platform, and which controls reduce the most important risks. It should happen before teams jump straight to hardening checklists because the same control can have very different value depending on cluster architecture, workload sensitivity, and attacker access.
The current KCSA curriculum explicitly includes a Kubernetes Threat Model domain covering trust boundaries and data flow, persistence, denial of service, malicious code execution, network attackers, sensitive data, and privilege escalation. It belongs naturally within the broader Linux Foundation certifications path.
Start with assets, actors, and trust boundaries
A useful threat model begins with assets rather than products. Assets can include cluster-admin credentials, service-account tokens, secrets, application data, container images, signing identities, node credentials, cloud metadata access, and the availability of critical workloads. The team should know which assets would create the largest business or security impact if disclosed, changed, or made unavailable.
Next identify actors. These may include normal users, developers, cluster administrators, CI/CD systems, workload identities, cloud-provider services, third-party controllers, and potential attackers. A compromised developer account and a hostile container do not start from the same trust position, so their likely attack paths differ.
Trust boundaries exist wherever authority or execution context changes: user to API server, workload to Kubernetes API, Pod to node, cluster to cloud API, build system to registry, namespace to namespace, or organization to third-party admission controller. Documenting those boundaries makes control placement much more deliberate.
The control plane is a high-value target
The Kubernetes API server is the front door for control-plane operations. Authentication establishes identity, authorization determines allowed actions, and admission evaluates many write requests before objects are persisted. A stolen highly privileged identity can therefore change workloads, secrets, RBAC, networking, or policy through legitimate API mechanisms.
Other control-plane components matter too. The scheduler influences where Pods run, controller managers reconcile desired state, and etcd stores cluster state. Direct etcd exposure or weak protection of its data can bypass higher-level controls. Control-plane endpoints should be restricted, authenticated, encrypted where appropriate, and monitored for unusual administrative behavior.
Threat modeling should distinguish managed Kubernetes, where a provider operates much of the control plane, from self-managed clusters. Responsibility changes, but the organization still owns identities, workload configuration, data access, and many network and policy decisions.
Nodes turn workload compromise into platform risk
Worker nodes host Pods and the container runtime, kubelet, networking components, and local storage used by workloads. A container escape or overly privileged Pod can become a node-level compromise, and a compromised node may expose credentials or data for multiple workloads.
Ask which workloads can run privileged, mount host paths, access host networking, use powerful Linux capabilities, or reach node-local services. These settings change the isolation boundary. A workload that can write the host filesystem or talk directly to a container runtime has a very different threat profile from a restricted Pod.
Node access should also be considered operationally. SSH or break-glass access, cloud instance roles, bootstrap credentials, and node images all form part of the attack surface. Patch cadence and node replacement strategy matter because long-lived unmanaged nodes accumulate drift and exposure.
Workload identity is a core security boundary
Every application should be evaluated as an identity, not just as containers. Service accounts, cloud workload identity, mounted tokens, and external credentials determine what a compromised Pod can do after initial code execution. Excessive permissions can turn a small application flaw into cluster or cloud compromise.
Apply least privilege to RBAC and external APIs. Avoid giving broad cluster roles to workloads that need only a few namespaced verbs. Where supported, use short-lived or projected credentials rather than static secrets copied into images or environment files.
A foundation in Kubernetes fundamentals provides general platform context, but threat modeling asks a more specific question: if this Pod is compromised, what identities and paths become available next?
Network paths reveal lateral-movement opportunities
Kubernetes networking often gives Pods broad east-west reach unless policy restricts it. A network attacker may be an external actor reaching an exposed Service, a compromised Pod scanning internal services, or a hostile workload attempting to contact control-plane or cloud metadata endpoints.
Map ingress, egress, namespace boundaries, service-to-service dependencies, DNS paths, and access to infrastructure endpoints. NetworkPolicy can reduce reachability, but only when the network implementation enforces it and policy matches actual application flows.
Service mesh or encrypted transport can add identity and confidentiality, but encryption alone does not create least privilege. An attacker using a valid compromised workload identity may still be able to make authorized encrypted requests. Network controls should complement identity and authorization rather than substitute for them.
Persistence mechanisms deserve explicit review
An attacker who gains temporary access may try to make that access survive. Persistence can include creating new privileged workloads, modifying Deployments, adding webhook configurations, creating service accounts or role bindings, changing startup scripts, implanting images, or writing to persistent volumes.
Threat models should ask which Kubernetes objects can create durable execution and which identities may modify them. Audit logging and change review are especially important around cluster-level RBAC, admission configuration, controllers, DaemonSets, privileged namespaces, and secrets.
Persistent storage is also an asset. PersistentVolumeClaims help clarify why data can outlive a Pod. Compromise of a workload with write access to a durable volume can plant malicious state that remains after the container is replaced.
Denial of service can target shared control and capacity
Kubernetes is a shared control system, so availability threats are not limited to overwhelming one application endpoint. An attacker or faulty workload can exhaust CPU, memory, ephemeral storage, API request capacity, object counts, or external dependencies. Poorly bounded automation can also create large numbers of resources quickly.
Resource requests and limits, quotas, priority, autoscaling controls, API protections, and isolation of critical workloads can reduce blast radius. The exact controls depend on whether the threat is a noisy neighbor, accidental runaway deployment, or deliberate abuse.
Control-plane availability should be treated separately from application availability. A cluster can continue running existing Pods during some control-plane problems while losing the ability to schedule, scale, or recover. Threat models should include both immediate service impact and degraded recovery capability.
The software supply chain is part of the cluster threat model
Malicious code does not need to break into a running cluster if it can enter through an image, dependency, build system, or registry. Images should be traced back to trusted source and build processes, scanned appropriately, and verified before deployment. Registry permissions and tag mutability also influence whether an attacker can replace an approved artifact.
A real-world software supply-chain event such as the XZ Utils backdoor illustrates why trusted distribution and provenance matter even when infrastructure itself is correctly configured.
Supply-chain risk intersects with admission control. A cluster can reject workloads that fail image, signature, provenance, or security policy, moving trust decisions closer to the point of deployment.
Prioritize threats by realistic attack paths
Consider a compromised CI job that can replace a mutable image tag and a deployment process that trusts the tag automatically. Trace the path from stolen build credentials through registry mutation to execution in a cluster. Pinned image digests, verified signatures, short-lived build identities, and admission enforcement can interrupt different steps; audit evidence helps discover attempts that still occur. Stating the attacker prerequisite and the failed trust decision is more actionable than simply labeling the entire software supply chain “high risk.”
A threat model becomes useful when it influences architecture. Rank scenarios by likelihood, required access, blast radius, detectability, and business impact. A theoretical attack requiring physical node access may rank below an exposed administrative credential that can be phished remotely.
For each important path, identify preventive, detective, and recovery controls. Prevention may include RBAC, network policy, Pod security, image verification, or restricted API exposure. Detection may include audit events, runtime signals, and identity monitoring. Recovery may require credential rotation, node replacement, workload redeployment, or state restoration.
Revisit the model when architecture changes. New controllers, cloud integrations, admission webhooks, multi-tenancy models, or CI/CD systems create new trust relationships. KCSA-level threat modeling is not about memorizing every Kubernetes attack; it is about systematically understanding where compromise can begin, how it can move, and where controls should interrupt it.
Multi-tenancy changes the model again. A cluster that serves one trusted application team has different assumptions from a shared platform hosting workloads from many teams, customers, or automation systems. Namespace boundaries alone are not a complete security boundary, so multi-tenant designs should examine RBAC, Pod security, network isolation, node placement, secrets, quotas, and any cluster-scoped APIs that could let one tenant affect another. Highly hostile tenants may require stronger isolation than a shared cluster can provide.
Detection requirements should be mapped to the threat paths instead of added as a generic SIEM checklist. If the model includes stolen service-account tokens, log unusual API use by workload identities. If privileged Pod creation is a critical path, alert on the relevant admission or audit events. If registry compromise is a concern, retain evidence that ties running image digests to approved release metadata. This keeps observability focused on the attack paths the architecture actually cares about.
Document assumptions explicitly. If the model assumes managed control-plane isolation, trusted cluster administrators, or a private registry, record those assumptions and identify the evidence that keeps them true. Threat models become stale when architectural assumptions change silently, so linking each assumption to an owner or control makes future reviews much more useful.