Skip to content
bredwood.com
← All posts
4 min readbredwood

Compliance Readiness Is an Architecture Problem

Security reviews fail on manual architecture validation and missing evidence, not on missing policy. A maintained model turns evidence into a query.

Controls describe intent, architecture describes reality

A SOC 2 or ISO 27001 style review is, at its core, a comparison between what you claim about your systems and what your systems actually do. Your policies describe intent: access is granted on a least-privilege basis, production changes are reviewed, data is encrypted in transit. The framework asks you to demonstrate that the intent holds.

The gap between intent and reality is architectural. Whether least privilege holds depends on which roles are actually attached to which resources. Whether production changes are reviewed depends on which pipelines can reach which clusters. These are properties of the system, not of the policy document, and they can only be assessed against a current description of the architecture.

This is why the same findings recur across organisations and frameworks. Not because the policies are missing, but because the system cannot be described accurately enough to prove the policies are followed.

Where reviews actually stall

Most review work is not spent writing policy. It is spent reconstructing architecture under time pressure.

An auditor asks who has administrative access to the production account. Someone exports a list from the cloud provider, cross-references it against tickets, and asks two engineers whether a particular role is still used. The answer is probably right and definitely slow. The same question arrives next quarter and is answered from scratch, because the answer was assembled for the occasion rather than maintained.

Other common stalls follow the same pattern. Access reviews require a list of systems and owners, and neither list is authoritative. Change management requires evidence that a deployment followed the reviewed path, and the pipeline records do not map cleanly to services. Boundary and data-flow questions require knowing which services cross which trust boundaries, which is a graph question the organisation answers by interview.

None of these failures are policy failures. They are evidence failures. The control exists and is working. You simply cannot show it cheaply.

Why the evidence is manual

Evidence generation is manual because the architecture is not represented as a queryable model. To answer whether least privilege is satisfied automatically, you need a representation in which roles, resources, services, and owners exist as entities with relationships, and you need that representation reconciled against production. Without it, every question is reconstructed by a person with console access and a spreadsheet.

The manual path also degrades the answer. Reconstructed evidence is a snapshot taken for the audit, and like any snapshot it is true for an afternoon. Drift does not pause for the review window. The moment the review ends, the evidence begins to describe a system that is changing.

Evidence as a query

When architecture is a maintained model, most review requests become queries rather than projects. The question stops being assemble a list of production access and becomes a filter over the model, joined against what is deployed and what is actually granted.

The queries are not exotic. They are the same questions engineers already ask day to day, asked in a different vocabulary.

query {
  services(filter: { owner: null, environment: "production" }) {
    name
    depends_on
  }
}

A service with no owner in production is an access-review finding, a change-management gap, and an onboarding hazard at the same time. Answering it once, continuously, means the answer is available before anyone asks.

The same approach covers the controls that reviews care about most. Which services expose public endpoints. Which resources sit outside an expected network boundary. Which workloads run with privileges beyond their declared need. Which data stores are reachable from which services. Each is a property of the model, and each is cheap to evaluate when the model exists.

Continuous validation over periodic review

The larger shift is from periodic evidence gathering to continuous validation. Instead of proving the architecture met its obligations in a four-week window once a year, you compare the current architecture against the controls continuously and treat a violation as drift to be reconciled.

This changes the work in three ways. Findings surface when they appear rather than at the review, which is when they are cheapest to fix. The controls stop depending on the memory and availability of the two engineers who understand the system. And the evidence you present is a description of the system as it was maintained, which is a stronger claim than a description assembled for the occasion.

Compliance readiness is usually framed as an administrative problem, and the administrative layer is real. But the part that consumes the most engineering time is the part that depends on architecture: knowing what you run, who owns it, and what it can reach. Maintain that model continuously and the evidence follows. Leave it to quarterly reconstruction and you will redo the same work, with the same uncertainty, each time.

compliancegovernancearchitecture-as-code