See the Attack Surface – Threat Modeling & Control Mapping

Duration: ~20 minutes

Overview

You will turn a fuzzy “we should be secure” notion into a concise, living threat model and translate it directly into an ordered mitigation backlog that maps to concrete OpenShift / Red Hat controls.

Sketch a compact threat model for an OpenShift app, map higher-value threats to platform controls, and leave with a short prioritized backlog.

Why it matters

Designing security without a threat model is like installing locks, cameras, and safes randomly in a new office tower—expensive and still full of blind spots. A compact model acts as the floor plan: you know where valuables sit, which doors are public, and which hallways connect sensitive rooms. Business outcome: money and time focus on the riskiest failure paths first; audit narratives become “why” stories, not scattered spreadsheets; incident responders already know likely pivot routes. Most high‑impact improvements are ordinary: remove a wildcard Role, add default‑deny NetworkPolicy, enforce image signatures. Ordinary, but chosen with intent.

What does it solve

Without modeling, teams drift into: * Reactive, ticket‑whack hardening (“fix whatever the scanner yells at today”) * Lateral movement oversight (frontend quietly reaches database pods) * Everything labeled “critical,” so nothing truly is * Re‑litigated design debates (no shared artifact of prior reasoning)

With a model: * Shared vocabulary: assets, boundaries, flows, threats * Traceability: every control defends an identified path * Faster audits: reviewers see risk rationale, not guesswork * Focused backlog: sequence of high leverage, low regret steps

Your Mission

Map trust boundaries to concrete OpenShift controls. Click each step only if you need a hint.

Create visual-aid namespaces for the trust boundaries you will map
oc new-project app-frontend
oc new-project app-backend
oc new-project app-db
List assets

List assets: code, images, secrets, database, CI system, cluster API.

Sketch a textual data flow

Write a textual data flow (sample below) and adjust it to your reality—frontends, APIs, databases, CI, and the registry.

Mark trust boundaries

Mark trust boundaries: Internet ingress, CI → cluster, app → db, registry ↔ kubelet.

Apply STRIDE sampling

Apply STRIDE sampling to 5–10 flows (avoid the exhaustiveness trap).

Build a Threat → Control table

Build a Threat → Control table (start with a short excerpt; extend locally).

Score and sort

Qualitatively score (High/Med/Low impact and likelihood) plus effort (S/M/L); sort by leverage.

Turn findings into backlog tickets

Turn the top ranked 5–7 items into backlog tickets with acceptance criteria.

Commit and schedule review

Commit the artifact (threat-model-app.md) and schedule a quarterly review.

Debrief

Threat modeling turns controls into a blueprint: you map data flows and privileges to concrete OpenShift defenses instead of stacking tools at random.

What breaks without this:

  • Defenses without a model → locked side doors and an open front door

  • Stale models → architecture drift leaves new paths unguarded

Controls that matter: map registry, service-to-service, CI→cluster, SA tokens, syscalls, and privileged RBAC to scan/sign, NetworkPolicy, secrets/RBAC, admission, SPO, and custom roles; revisit when architecture changes.

Quick facts: start at tier (app/platform) detail enough to prioritize; re-run when you add a trust boundary or on a fixed cadence.

giphy

Cleanup

Before moving to the next module, run the lab cleanup script to reset transient resources from this module.

cd ~/openshift-security-roadshow
bash setup/lab-cleanup.sh --module 201-01