A threat model's boxes are 'Team Alpha', 'Team Bravo' and 'Platform' — what is wrong with it?
answer
- boxes must be things, not people
- reporting lines are not data flows
- the arrow has no named payload
- where would an adversary actually stand?
- decompose by data movement, not ownership
basics
~20 sThe boxes are organisational units, not system elements. A data-flow diagram is decomposed by where data moves — external entities, processes, stores, flows — so an org chart leaves an adversary nowhere to stand and no boundary to draw.
solid answer
~40 sIt is an org chart with arrows, not a data-flow diagram. The elements of a DFD are external entities, processes, data stores and the flows between them, and the arrows carry named data. 'Team Alpha' is none of those: it may be six services and a batch job, or one library. In an insurance claims model drawn this way, the arrow from 'Team Bravo' to 'Platform' could be a claim submission, a payout instruction or a Slack thread, and there is no way to tell which. So no adversary position can be placed on the page — nobody can say where a rogue adjuster would stand — and no trust boundary can be drawn, since a boundary needs two identified principals to sit between. My conclusion: no one has modeled the system yet.
go deeper
Recall the four DFD element types — external entity, process, data store, data flow — and be able to say that a team name is none of them. Expect to be shown a bad diagram and asked what is missing.
Explain the consequences mechanically: unlabelled arrows mean unknown payloads, teamed boxes mean unknown cardinality, and neither supports placing an adversary or a boundary. Show how you would rebuild the page from one narrated transaction.
Demonstrate that you can run the recovery live: take the room's org-shaped picture, elicit a concrete end-to-end flow, and redraw it without making the authors feel audited. Know when ownership annotations add value.
Set the bar for what counts as a reviewable model, and understand why teams reach for the org chart — it is the diagram they already maintain. Decide how much structure to demand before a design review is worth scheduling.
## The wrong axis of decomposition Every diagram decomposes something along some axis. A data-flow diagram decomposes a **system by where data goes**: which outside party supplies it (external entity), which code transforms it (process), where it comes to rest (data store), and which named payload travels each arrow (data flow). An org chart decomposes a **company by who reports to whom**. Both are legitimate drawings; only one supports threat analysis, and swapping them is one of the most common failures in a first threat-modeling session — partly because the org chart is the diagram the team already has on a wall. ## What breaks, concretely Take an insurance claims platform whose model shows three boxes — 'Team Alpha', 'Team Bravo', 'Platform' — with arrows between them. The asset at stake is claim money: an approved claim moves real funds to a claimant's account. **The boxes have no cardinality.** 'Team Alpha' might be four services, a scheduled job and a spreadsheet. You cannot say what runs there, which means you cannot say what an adversary who compromised one of those things would reach. **The arrows have no payload.** An arrow from 'Team Bravo' to 'Platform' might be a claim submission, an approval decision, a payout instruction to a payment rail, or a design conversation. Threats differ wildly between those. Tampering with a payout instruction is a money-loss threat; tampering with a design conversation is not a threat at all. **There is nowhere to stand.** Adversary positions are defined relative to system elements: a caller of an endpoint, a holder of a database credential, a party on a network path, an operator of a service. A team is not a position an attacker can occupy. So the enumeration silently loses the very thing it exists to find — for the claims platform, the adjuster who can approve their own claim, or the operator who can replay a payout instruction, simply have no coordinates on the page. **No boundary can be drawn.** A trust boundary is a line between two identified principals whose privilege differs. Between 'Team Alpha' and 'Team Bravo' there is a reporting relationship, not a privilege change. If a reviewer draws a line there anyway, it means nothing: the code from both teams may well execute in the same process with the same credentials. ## What the reviewer should conclude — and say The conclusion is blunt and worth saying plainly: nobody has modeled the system. This is different from the diagram being wrong or incomplete. A too-coarse or out-of-date DFD is still a description of the system that can be corrected. An org chart is a description of the company; there is nothing in it to correct, and no amount of adding boxes will turn it into an analysable artifact. The rescue is a single question asked in the room: *walk me through what happens, step by step, when a claim is submitted and later paid.* The answer names the real elements almost automatically — the claimant's browser, the intake service, the claims database, the adjuster's console, the approval process, the payment instruction, the ledger. Draw those, and the boundaries appear where the narration changes principal: claimant to intake, adjuster to approval, approval to payment rail. ## Where team structure is legitimately useful Ownership is not worthless information; it is just not the decomposition axis. Once real elements are on the page, annotating them with the owning team is genuinely useful — it tells you who must be in the room to answer a question about an element, and who accepts a threat that is left open. The defect is using ownership *instead of* structure, not alongside it. A related and subtler version of the same mistake is a diagram whose boxes are project or product names ('Marketplace', 'Insights', 'Core') rather than teams. It looks more technical, but it fails identically: a product name has no cardinality, its arrows have no payload, and no adversary can stand on it. The test is the same in both cases — can I point at a box and say what code runs there and what credential it holds? If not, the box is a label, not an element. ## The one-line test For each box: what code runs here, what data does it hold, and whose credential does it use? For each arrow: what exactly travels along it, and who is at each end? A diagram whose boxes cannot answer those questions has not modeled a system, whatever the boxes are named.
- Is team ownership ever worth putting on a data-flow diagram?Yes, as an annotation on real elements, never as the elements themselves. Once the processes and stores are drawn, tagging each with its owning team tells you who to pull into the room for a question and who accepts a threat that stays open. The defect is using ownership as the decomposition axis instead of alongside it.
- The boxes are product names — 'Marketplace', 'Insights', 'Core' — rather than team names. Better?No, it fails identically and looks more convincing, which makes it worse. A product name still has no cardinality, its arrows still carry unnamed payloads, and no adversary can occupy it. Apply the same test: what code runs in this box, what data does it hold, and whose credential does it use? If nobody can answer, it is a label, not an element.
- How do you turn the room's org-chart diagram into a real one without restarting from scratch?Ask them to narrate one concrete transaction end to end — for a claims platform, what happens when a claim is submitted and later paid. The narration names the real external entities, processes and stores in order, and the trust boundaries fall out at each point where the narration changes principal.
saying these in an interview costs you the question
- Calls team boxes a valid high-level view of the system
- Draws trust boundaries between teams
- Leaves arrows unlabelled with no named payload
- Thinks adding more team boxes fixes the diagram
- Confuses who owns a component with who is trusted