flowchart LR
user(["Customer<br/><i>untrusted</i>"])
admin(["Admin<br/><i>privileged</i>"])
subgraph edge["Boundary 1 — public edge"]
cdn["CDN / WAF"]
end
subgraph app["Boundary 2 — application tier"]
direction TB
api["Order API"]
auth["Auth Service"]
end
subgraph datab["Boundary 3 — data tier"]
direction TB
db[("Order Store<br/><i>PII + card token</i>")]
kms[("Key Vault")]
end
ext["Payment Provider<br/><i>third party</i>"]
user -->|"F1 HTTPS"| cdn
cdn -->|"F2 HTTPS + mTLS"| api
admin -->|"F3 admin console"| api
api -->|"F4 token introspection"| auth
api -->|"F5 TLS + parameterised"| db
api -->|"F6 fetch DEK"| kms
api -->|"F7 HTTPS outbound"| ext
ext -->|"F8 webhook — signed"| cdn
Threat Model Data Flow Diagram
Processes, stores and flows with trust boundaries drawn across them, so that every boundary crossing can be enumerated for threats.