Skip to content
AAAhtisham Ashraf
000
Insights

Cybersecurity

Security is an architecture decision, not a release gate

Most security programmes fail at the same point: the moment security becomes something that happens after the design is finished.

7 min read

There is a version of security that most engineering organisations have met. A design is agreed, the work is built, and then — somewhere between "feature complete" and "ready to ship" — it is handed to someone whose job is to find problems with it. That person finds problems. Everyone is unhappy. The problems are either fixed under time pressure or accepted as risk, and the cycle repeats on the next release.

The failure is structural, not personal. By the time a system is built, its security properties are already decided. What gets reviewed at the end is not the security of the design; it is the distance between the design and what someone hoped it would be.

Where security properties actually come from

A system's security posture is mostly determined by a small number of early decisions: where trust boundaries sit, which component is authoritative for authorisation, how identity propagates between services, and what each layer is allowed to assume about the layer beneath it. None of those are review findings. They are architecture.

This is easiest to see in platforms with multiple clients. A web application, a mobile client and a public API are three views of the same business logic. If each one enforces its own authorisation rules, they will eventually disagree, and the disagreement is the vulnerability. No amount of end-of-cycle testing fixes that — it is a consequence of deciding, at design time, that authorisation belongs to the client.

The gate makes the problem worse

Security placed at the end of delivery becomes a queue. Queues get worked around, and the workarounds are rational: the team has a commitment, the gate has a wait time, and the path of least resistance is the one that skips it. An organisation that measures security by how many releases it blocked is measuring how often it was bypassed.

If the secure path is slower than the insecure one, the process has already failed.

The useful reframing is that engineering velocity is itself a security metric. How fast an organisation can ship determines how fast it can patch. A team that deploys in an hour has a fundamentally different exposure window from one that deploys in a fortnight, regardless of how thorough either one's pre-release review is.

What moving security earlier looks like

  • Trust boundaries drawn during design, not discovered during testing. If nobody can point at the diagram and say where the boundary is, there isn't one.
  • Authorisation owned by exactly one component, with every client treated as untrusted — including the ones you wrote.
  • Security checks positioned inside the delivery pipeline, running on the same trigger as the build, with results the author sees rather than a report someone else receives.
  • Hardening applied as configuration that ships with the environment, not as a checklist performed per deployment.
  • Secrets held outside application code and outside version control, as an enforced property of the pipeline rather than a convention.

The audit still matters

None of this removes the need for assessment. Independent review finds things that internal process does not, and an engagement that surfaces findings across an application, its protocol layer, its codebase and its infrastructure is worth more than any single automated check.

But an audit is a measurement, not a control. It tells you what your architecture produced. If the result is disappointing, the fix is upstream of the audit — in the decisions that were made before anyone wrote a line of code.

Related topics

  • Security Architecture
  • DevSecOps
  • Engineering Practice