WorkProjectsContact
ZERO TRUST // AES-256 // TLS 1.3 // NIST CSF // SOC 2 // SIEM // IAM // PKI // HSM // EDR // SOAR // THREAT INTEL //
Threat ModelingSecurityEngineering

Practical Threat Modeling for Real Infrastructure

8 min readJuly 2, 2025

Threat Modeling That Doesn't Waste Time

Most threat modeling exercises fail because they produce documentation, not engineering changes. Teams spend days in conference rooms drawing diagrams, cataloging threats using STRIDE or PASTA, and creating spreadsheets with risk scores. Then the spreadsheet goes into a shared drive and nothing changes.

Effective threat modeling is an engineering activity, not a compliance activity. The output should be tickets in your backlog, changes to architecture decisions, or updated security controls. If a threat modeling session doesn't produce concrete work items, it was a meeting that should have been an email.

The right cadence matters too. Annual threat models are nearly useless because systems change faster than that. Continuous, lightweight threat modeling—triggered by architecture changes, new features, or new integrations���keeps the model relevant and the outputs actionable.

Start with what matters most. You don't need to model every possible threat to every component. Focus on the assets that would cause the most damage if compromised, the interfaces most exposed to adversaries, and the components with the most change velocity.

Asset and Trust Map

Before you can model threats, you need to know what you're protecting and who you're protecting it from. An asset map identifies the data and capabilities that matter. A trust map shows how different components and actors interact with those assets.

Assets aren't just databases. They include API keys, service credentials, configuration data, encryption keys, user sessions, and business logic that provides competitive advantage. Rank assets by the impact of compromise—not just data sensitivity, but business impact, regulatory impact, and reputational impact.

The trust map shows how trust flows through your system. Which components authenticate to which others? Where are authorization decisions made? Where does data cross between trust domains? This map reveals the boundaries where security controls need to be strongest.

Don't model the system as it's documented. Model it as it actually runs. Talk to the engineers who build and operate it. Shadow traffic patterns often differ from design documents. Runtime configurations drift from design-time intentions. The threat model needs to reflect reality, not aspirations.

Attacker Workflows

Think like an attacker, not a defender. Defenders think about controls. Attackers think about workflows—chains of actions that lead from initial access to their objective.

Map out realistic attack paths. An attacker who compromises a developer's laptop might gain access to a VPN, then to internal services, then to a staging database that uses production-like data, then to credentials stored in that database. Each step in this chain is a potential control point.

Prioritize attack paths by feasibility, not just impact. A nation-state attack on your hardware supply chain is high impact but low feasibility for most organizations. A phishing attack on a developer with broad access is moderate impact but high feasibility. Focus your engineering effort where the expected value of risk reduction is highest.

Consider insider threats honestly. Not malicious insiders necessarily, but the realistic threat of compromised credentials, social engineering, and accidental exposure. Most security incidents involve some element of insider access, whether through credential theft, phishing, or misconfiguration.

Prioritization for Builders

Engineers need clear prioritization, not a list of everything that could go wrong. The output of threat modeling should be a ranked list of engineering work that reduces the most risk per unit of effort.

Use a simple framework: likelihood times impact, filtered by engineering effort. A high-likelihood, high-impact threat that can be mitigated with a configuration change should be fixed immediately. A medium-likelihood, high-impact threat that requires a major architectural change should be planned into the roadmap.

Group related mitigations. Often, a single architectural change addresses multiple threats. Implementing mutual TLS between services mitigates eavesdropping, man-in-the-middle attacks, and service impersonation simultaneously. These compound mitigations should be prioritized because they provide the best return.

Be honest about what you're accepting. Some risks will be accepted because mitigation isn't feasible or cost-effective. Document these decisions explicitly, with a review date. Accepted risks should be revisited when the system changes, when new threats emerge, or when the business impact changes.

Turning Model into Controls

A threat without a corresponding control is just documentation. Every identified threat should map to one of four outcomes: mitigate, transfer, accept, or avoid.

Mitigation controls should be specific and testable. "Improve authentication" is not a control. "Implement mutual TLS between Service A and Service B using certificates from our internal CA" is a control. You can test it, verify it, and detect when it fails.

Build controls into your development and deployment process. Security controls that depend on human behavior will fail. Controls that are automated and enforced by infrastructure will hold. Code scanning in CI/CD, infrastructure policy enforcement, automated credential rotation—these are controls that don't depend on someone remembering to do the right thing.

Monitor your controls. A firewall rule that was correct six months ago might be wrong today because the network topology changed. A security group that was restrictive might have been widened for debugging and never tightened again. Control monitoring is as important as control implementation.

A Simple Template

For each component or boundary you're modeling:

**What are we protecting?** List the specific assets and their sensitivity classification.

**Who might attack it?** Consider external attackers, compromised insiders, supply chain, and accidental exposure.

**How would they attack it?** Map realistic attack paths from initial access to objective.

**What controls exist today?** Document current mitigations and their effectiveness.

**What's missing?** Identify gaps between current controls and realistic attack paths.

**What should we build?** Prioritized engineering work items with clear acceptance criteria.

**What are we accepting?** Documented risk acceptance decisions with review dates.

This template fits on a single page per component and produces actionable output. Run it whenever a component changes significantly, when you add new integrations, or on a regular quarterly cadence for critical systems.

Work with me

If this resonates, let's connect on architecture, security, or engineering leadership.

Contact