Back to Blog

The Kubernetes Threat Model for the KCSA Exam: Trust Boundaries, Attack Vectors & Persistence

Master the Kubernetes threat model for the KCSA exam — trust boundaries, data flow, persistence, privilege escalation, network attacks, and the STRIDE-style reasoning the exam rewards.

By Sailor Team , June 21, 2026

Introduction

Most KCSA candidates over-study controls — Pod Security Standards, NetworkPolicies, RBAC — and under-study threats. That’s a mistake, because the Kubernetes Threat Model is a full domain on the Kubernetes and Cloud Native Security Associate (KCSA) exam, and it’s the one that turns an otherwise control-by-control study plan into something coherent. Once you can describe what an attacker is trying to do and where the trust boundaries are, every control you’ve learned suddenly has a reason to exist.

The threat-model questions on the KCSA are conceptual, not hands-on. You won’t be asked to write a NetworkPolicy. You’ll be asked things like: “An attacker who has compromised a single application Pod wants to read Secrets belonging to other workloads. Which trust boundary must they cross, and which control most directly prevents it?” That’s a threat-modeling question, and you answer it by reasoning about data flow and boundaries — not by memorizing YAML.

This guide walks through the threat model the way the exam frames it: trust boundaries first, then the canonical attacker goals (persistence, privilege escalation, network attacks, data access, supply-chain compromise), and finally how the STRIDE methodology maps onto Kubernetes. By the end you’ll have a mental map you can apply to any scenario question. If you want the broader control landscape alongside this, pair it with the 4Cs of Cloud Native Security guide.

What a Threat Model Actually Is

A threat model is a structured way of answering four questions about a system:

  1. What are we building? (the architecture and its components)
  2. What can go wrong? (the threats)
  3. What are we going to do about it? (the controls)
  4. Did we do a good enough job? (validation)

For Kubernetes, “what are we building” is a distributed system with a control plane, worker nodes, a network fabric, and a software supply chain feeding container images into it. “What can go wrong” is the set of attacker goals the KCSA enumerates. The exam lives mostly in questions 1 and 2 — it wants you to recognize the components, the boundaries between them, and the realistic ways an attacker moves through them.

The single most useful concept here is the trust boundary: a line in the architecture where the level of trust changes, and therefore where data and requests must be authenticated, authorized, and validated. Attacks happen at boundaries. Get the boundaries right and the rest of the threat model follows.

Kubernetes Trust Boundaries and Data Flow

Picture a request flowing into a cluster and a workload running inside it. It crosses several trust boundaries:

BoundaryBetweenWhat enforces it
External → API serverInternet/user and the control planeAuthentication (certs, tokens, OIDC) + RBAC authorization + admission control
API server → etcdControl plane API and cluster datastoremTLS, etcd encryption at rest, network isolation
Control plane → node (kubelet)API server and worker nodesKubelet authentication/authorization, TLS
Node → PodHost kernel and containerNamespaces, cgroups, seccomp, AppArmor/SELinux, Pod Security Standards
Pod → PodOne workload and anotherNetworkPolicy, service account scoping, mTLS (service mesh)
Pod → cloud providerWorkload and cloud APIsIAM roles for service accounts / instance metadata controls

Every KCSA threat-model question is, at heart, asking which of these boundaries an attacker is trying to cross and what guards it. When you read a scenario, your first move should be to locate the boundary. “Compromised container wants to escape to the host” → the node → Pod boundary, guarded by seccomp/AppArmor and the Pod Security Standards. “Compromised Pod wants to talk to a database Pod it shouldn’t” → the Pod → Pod boundary, guarded by NetworkPolicy.

A key insight the exam tests: etcd is the crown jewels. Every Secret, every ConfigMap, the entire desired state of the cluster lives there in plaintext unless you’ve enabled encryption at rest. Anyone with direct etcd access bypasses RBAC entirely, because RBAC is enforced at the API server, not at the datastore. That’s why “an attacker gained read access to etcd” is always a worst-case scenario in a question.

The Canonical Attacker Goals

The KCSA threat model organizes threats around what an attacker is trying to achieve. These map closely to the official exam subdomains and to real-world frameworks like the MITRE-style Kubernetes threat matrix. Learn these six goals and you can classify almost any scenario.

1. Persistence

Once an attacker gets in, they want to stay in — surviving Pod restarts, node reboots, and even cluster upgrades. Persistence techniques in Kubernetes include:

  • Deploying a malicious DaemonSet so a backdoor Pod runs on every node, including new ones.
  • Creating a CronJob that periodically re-establishes a reverse shell.
  • Adding a rogue static Pod manifest to a node’s /etc/kubernetes/manifests directory — the kubelet will keep restarting it, and it won’t appear in normal RBAC-controlled workflows the same way.
  • Creating extra ServiceAccounts and tokens, or a ClusterRoleBinding that grants a dormant identity cluster-admin for later use.
  • Tampering with admission webhooks to inject containers into future workloads.

The exam wants you to recognize why these are dangerous: they abuse legitimate Kubernetes mechanisms, so they blend in with normal operations. The defense is least-privilege RBAC, audit logging to detect the creation events, and image/admission controls.

2. Privilege Escalation

This is the most heavily tested attacker goal. The attacker starts with limited access (often a single compromised container) and tries to gain more. Common paths:

  • Privileged containers and host namespaces. A Pod running with privileged: true, hostPID, hostNetwork, or hostPath mounts can often reach the host filesystem or processes and escape the container boundary entirely.
  • Dangerous Linux capabilities. CAP_SYS_ADMIN, CAP_NET_RAW, or CAP_SYS_PTRACE granted to a container widen the blast radius dramatically.
  • Stolen ServiceAccount tokens. Every Pod can, by default, mount a ServiceAccount token at /var/run/secrets/kubernetes.io/serviceaccount/token. If that account has broad RBAC permissions, a compromised app inherits them. This is why automountServiceAccountToken: false matters.
  • Node-to-cluster escalation. A compromised kubelet credential or node can be leveraged to read Secrets of Pods scheduled on that node.

Here’s a YAML example of exactly the kind of Pod spec the exam flags as a privilege-escalation risk:

apiVersion: v1
kind: Pod
metadata:
  name: dangerous
spec:
  hostPID: true            # sees all host processes
  containers:
    - name: app
      image: busybox
      securityContext:
        privileged: true   # full host access — escape risk
        capabilities:
          add: ["SYS_ADMIN"]
      volumeMounts:
        - name: host
          mountPath: /host
  volumes:
    - name: host
      hostPath:
        path: /            # mounts the entire node filesystem

The control that most directly blocks this is the Pod Security Standards at the restricted (or at least baseline) level, enforced by the Pod Security Admission controller. Recognizing that mapping — privilege escalation via Pod spec → Pod Security Standards — is worth several marks.

3. Network Denial of Service and Lateral Movement

The cluster network is flat by default: every Pod can reach every other Pod. That makes two attacker goals easy unless you intervene:

  • Lateral movement. From one compromised Pod, reach databases, internal APIs, and the cloud metadata endpoint (169.254.169.254) to steal credentials.
  • Denial of service. Exhaust node resources (CPU, memory, PIDs, ephemeral storage) so legitimate workloads are evicted, or flood the network.

The defenses the exam pairs with these are NetworkPolicies (default-deny, then explicitly allow), ResourceQuotas and LimitRanges (cap resource consumption), and blocking access to the instance metadata service. A question describing “a compromised Pod reached the AWS metadata endpoint and stole the node’s IAM credentials” is testing whether you know to restrict egress to 169.254.169.254.

4. Malicious Code and Compromised Applications in Containers

This is the supply-chain angle: the threat that the container image itself is malicious or vulnerable before it ever runs.

  • A base image with a known CVE.
  • A typosquatted or backdoored dependency pulled in at build time.
  • An image from an untrusted registry.
  • A legitimate app with an exploitable vulnerability (e.g., RCE) that becomes the initial foothold.

Defenses: image vulnerability scanning, image signing and verification (Sigstore/cosign), admission control that only allows images from trusted registries, and running containers as non-root with a read-only root filesystem. The exam connects this goal to the code and container layers of the 4Cs model.

5. Access to Sensitive Data

The attacker’s end goal is usually data: Secrets, customer records, tokens, certificates. Threats here include reading Kubernetes Secrets (especially via etcd, as noted), intercepting unencrypted traffic, and accessing mounted volumes.

Defenses: encryption at rest for etcd, RBAC scoping on Secrets, external secret managers (Vault, cloud KMS), and TLS everywhere. Remember the exam fact: Kubernetes Secrets are only base64-encoded, not encrypted, by default — base64 is encoding, not security.

6. Attacker on the Network

This goal assumes the attacker can observe or manipulate network traffic — sniffing, man-in-the-middle, or spoofing. In a cloud-native context this includes intercepting pod-to-pod traffic, control-plane traffic, or traffic to external services. The defenses are mutual TLS (often via a service mesh), TLS for the API server and etcd, and network segmentation.

Mapping Kubernetes Threats to STRIDE

The KCSA expects familiarity with STRIDE, Microsoft’s threat-classification methodology. STRIDE gives you six categories; mapping them to Kubernetes makes abstract scenarios concrete:

STRIDE categoryMeaningKubernetes examplePrimary control
SpoofingPretending to be someone elseForged or stolen ServiceAccount tokenStrong authentication, short-lived tokens
TamperingUnauthorized modificationMutating admission webhook injecting a sidecar; image tamperingAdmission control, image signing
RepudiationDenying an action with no proofNo audit logging of delete actionsAPI server audit logs
Information disclosureLeaking dataReading Secrets from etcd or env varsEncryption at rest, RBAC, external secrets
Denial of serviceMaking the system unavailableResource exhaustion evicting PodsResourceQuota, LimitRange, priority classes
Elevation of privilegeGaining higher rightsPrivileged Pod escaping to the hostPod Security Standards, least-privilege RBAC

When a scenario question describes an attack, silently classify it under STRIDE first — it instantly narrows the control you should pick. “An admin can’t prove who deleted a Deployment” is Repudiation, so the answer involves audit logging, not RBAC.

A Worked Threat-Modeling Scenario

Let’s apply the whole model to a question like one you’ll see:

A web application Pod is compromised through an unpatched dependency. The attacker reads the Pod’s mounted ServiceAccount token, uses it to list Secrets across all namespaces, and then deploys a DaemonSet that runs a crypto-miner on every node. Identify, in order, the boundaries crossed and the control that would have most directly stopped each step.

Reason through it:

  1. Initial footholdmalicious code / compromised application in a container. The unpatched dependency is a code/supply-chain failure. Control: vulnerability scanning + patching.
  2. Token theft → cross-namespace Secret access — this is privilege escalation plus information disclosure. The boundary crossed is Pod → API server, abused via an over-permissioned ServiceAccount. Controls: automountServiceAccountToken: false, least-privilege RBAC scoped to a single namespace.
  3. DaemonSet deployment — this is persistence. The attacker abused their (excessive) RBAC to create a cluster-wide workload. Control: least-privilege RBAC again, plus audit logging and admission control to block untrusted images.

Notice how the same root cause — an over-permissioned ServiceAccount — enabled two of the three steps. That recurring theme (least privilege as the highest-leverage control) is exactly what the threat-model domain is trying to teach you, and it ties directly into the exam topics breakdown you should be drilling.

How the KCSA Tests the Threat Model

A few patterns to expect on exam day:

  • Boundary identification. “Which trust boundary does X cross?” — locate it on the table above.
  • Attacker-goal classification. “This is an example of which threat?” — match it to persistence, privilege escalation, etc.
  • Best control selection. Given a threat, pick the most direct mitigation. The exam often lists several controls that would help — you must pick the one that addresses the specific boundary in question.
  • STRIDE classification. Map a described attack to its STRIDE category.
  • Worst-case reasoning. “Which of these gives an attacker the most access?” — usually etcd access or a privileged/host-namespace Pod.

The trap is choosing a control that’s good practice but doesn’t address this threat. If the question is about lateral movement between Pods, encryption at rest is a fine practice but the direct answer is a NetworkPolicy. Read for the boundary.

Building the Reflex With Practice

The threat-model domain rewards a particular reflex: read a scenario, locate the boundary, classify the attacker’s goal, then pick the most direct control. You can’t build that reflex by reading alone — you build it by working through dozens of scenario questions until the mapping becomes automatic.

That’s exactly the gap structured practice fills. The KCSA Mock Exam Bundle is built around scenario-driven questions with detailed explanations that walk through the boundary-and-control reasoning behind each answer — so by exam day you’ve already threat-modeled the same patterns the real exam throws at you. Pair it with a structured timeline using the KCSA study plan, and if you’re weighing this cert against the hands-on CKS, read KCSA vs CKS to see how the conceptual threat model here becomes practical defense work there.

Frequently Asked Questions

How much of the KCSA exam is the threat model?

The Kubernetes Threat Model is one of the six official domains and accounts for roughly 16% of the exam. But its real weight is higher than that number suggests, because threat-modeling reasoning underpins questions across the other domains too — knowing why a control exists helps you pick it correctly anywhere.

Do I need to memorize STRIDE for the KCSA?

You should understand STRIDE conceptually and be able to map a described Kubernetes attack to the right STRIDE category. You won’t be asked to recite the acronym, but classification questions are fair game, and STRIDE is the fastest way to narrow down the correct control.

What’s the single most important trust boundary to understand?

The Pod → API server boundary via the ServiceAccount token, closely followed by the API server → etcd boundary. Most privilege-escalation and data-disclosure scenarios route through an over-permissioned ServiceAccount or direct etcd access, so those two boundaries appear again and again.

Why are Kubernetes Secrets considered a weak point?

By default, Secrets are stored base64-encoded in etcd — that’s encoding, not encryption. Without encryption at rest enabled and tight RBAC, anyone with etcd access or broad Secret read permissions can extract them in plaintext. The exam expects you to know this distinction cold.

Is the threat-model domain hands-on?

No. KCSA is a multiple-choice exam, so the threat-model questions are conceptual — identifying boundaries, classifying attacker goals, and selecting controls. The hands-on application of these defenses is tested on the CKS exam instead.

Conclusion

The Kubernetes threat model is the connective tissue of the KCSA: trust boundaries tell you where attacks happen, the six attacker goals tell you what attackers want, and STRIDE gives you a vocabulary to classify any scenario quickly. Internalize the boundary table and the attacker-goal list, and the control-selection questions stop being memorization and start being deduction.

Read this alongside the 4Cs of Cloud Native Security for the control landscape, drill the KCSA exam topics for full coverage, and follow the KCSA study plan to time your prep. Then prove the reflex is automatic by working through realistic scenarios in the KCSA Mock Exam Bundle — because on the threat-model domain, the candidate who has already reasoned through a hundred attack paths is the one who answers in seconds.

Limited Time Offer: Get 80% off all Mock Exam Bundles | Sale ends in 7 days. Start learning today.

Claim Now