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
Security View
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.
Threat Modelling
Design