Product security

Paved Roads, Guardrails, Assurance.
All Three, or None of Them Work.

Three different mechanisms doing three different jobs. Most programmes build one, call it all three, and wonder why engineering routes around them.

Every product security programme eventually writes a standard. It says buckets holding customer data must use encryption, logging, least privilege, and blocked public access. It is correct. It is twenty pages long. And it asks a developer with a sprint commitment to become a part-time security architect.

That is the problem in one sentence. We hand engineers a specification and ask them to produce an implementation, on their own time, under delivery pressure, with no reference build. Then we audit the result and act surprised by the variance.

Standards tell engineers what they must do.Paved roads give them a ready-made way to do it.

But "paved road" has become a catch-all, and the sloppiness costs real programmes. Three distinct mechanisms are doing three distinct jobs, and each fails differently when it's missing.

The three definitions

Paved roads, guardrails, and assurance Three pillars of a product security programme. Each shows what it is, how it helps, how it wins, its failure mode, and examples. PRODUCT SECURITY Paved roads, guardrails, assurance. All three, or none of them work. Paved roads MAKE THE RIGHT THING EASY WHAT IT IS Pre-approved implementations teams adopt instead of building. HOW IT HELPS Interpretation risk moves from dozens of teams to one owner. EXAMPLES Terraform / IaC modules Secure application template Approved identity libraries Secrets-management module Secure pipeline template Guardrails MAKE THE DANGEROUS THING HARD WHAT IT IS Automated controls that deny, enforced by the platform. HOW IT HELPS Safety stops depending on who remembered, or on the deadline. EXAMPLES Policy as code (OPA, SCP) Public storage blocked No wildcard IAM privileges Approved registries only Signed artifacts required Assurance PROVE WHICH ONE HAPPENED WHAT IT IS Evidence the road was taken and the rail actually held. HOW IT HELPS You learn the truth rather than the stated intent. EXAMPLES Threat models Security and pen testing SBOM from the pipeline Signed release evidence PSIRT and disclosure Roads without rails get bypassed. Rails without roads get resented. Neither is provable without assurance.
A paved road is an offer. A guardrail is a boundary. Assurance is evidence. Programmes that conflate them end up mandating offers, apologising for boundaries, and collecting evidence by asking people to remember things.
The distinction that matters

A paved road is an offer. A guardrail is a boundary. Assurance is evidence. Programmes that conflate them end up mandating offers, apologising for boundaries, and collecting evidence by asking people to remember things.

Paved roads, concretely

The test of a paved road is not whether it's secure. It's whether it's faster than the alternative. A road that costs a team two extra days is a road nobody drives on, no matter how well built.

Instead of a control statement

"S3 buckets containing customer data must use encryption, logging, least privilege, and block public access." — twenty pages, thirty teams, thirty interpretations.

Ship a module where the answer is already encoded

company-secure-s3-module
encryption = KMS · public_access = blocked · TLS = required
logging = enabled · IAM = least_privilege · evidence = generated

Security is no longer asking developers to interpret a control. It's asking them to import one.

What to pave, in order of leverage

ProblemPaved roadWhat engineering gets
New applicationSecure application templateRepo, CI/CD, logging, IAM and security defaults on day one
Cloud workloadApproved reference architectureTerraform / CloudFormation modules, already reviewed
APISecure API patternOAuth/OIDC, authorization, rate limiting, validation, logging
AuthenticationIdentity patternApproved IdP libraries instead of hand-rolled auth
SecretsSecrets-management moduleVault or Secrets Manager integration, no plaintext path
ContainersSecure container baselineMinimal image, non-root, scanning, signing
DependenciesApproved dependency pipelineSCA, automated updates, license checks
CI/CDSecure pipeline templateSAST, SCA, secrets, IaC and container scans pre-wired
GenAI and RAGSecure AI reference architectureModel gateway, RAG isolation, IAM, guardrails, telemetry
AgentsAgent security patternScoped identity, tool allowlist, sandboxing, approval boundaries
ReleaseSecurity evidence automationEvidence generated from the pipeline, not questionnaires

Guardrails, concretely

Some outcomes shouldn't depend on anyone remembering the paved road existed. A guardrail is not advice delivered in a stern tone — it's an automated denial, enforced by the platform, that fires whether or not a human was paying attention.

The decision path

Developer
  ↳ approved architecture ALLOW
  ↳ unsafe configuration policy as code (OPA / SCP / config rules)
      ↳ BLOCK  or  EXCEPTION named risk owner + expiry

What belongs behind a rail

The pairing rule

Never ship a guardrail without the corresponding road. Blocking public storage while offering no compliant bucket module means you've removed the only route a team knew and handed them nothing. That single mistake is how product security earns its reputation, and it is entirely avoidable by sequencing: road first, rail second.

The escape hatch

This is the level almost everyone skips, and it decides whether the other two survive contact with a delivery deadline.

A product team may legitimately need something the road doesn't offer — a legacy protocol, an acquired codebase, a customer contract with its own requirements. The answer cannot be "no," and it must never be "yes, quietly." It has to be a path with a named owner and an end date.

Paved road doesn't meet the requirement exception raised compensating controls named risk owner expiration date revisit

Four properties make an escape hatch real rather than ceremonial:

The rule

If product security doesn't provide an efficient exception mechanism, developers will eventually build roads around product security. Exception turnaround time predicts programme health better than any coverage metric.

How you know it's working

Coverage metrics — repos scanned, controls documented — measure activity, not adoption. Four numbers that actually indicate whether the road is real:

The uncomfortable part

Paved roads are expensive, and the cost lands on product security's budget rather than engineering's. You are absorbing work that was previously distributed — invisibly, badly, and at someone else's expense — across every team in the company.

That's the trade, and it's also the argument for the headcount. It's a stronger argument than risk reduction, because it's measurable in delivery time rather than in incidents that didn't happen.

The alternative is the twenty-page standard. Cheaper to write, satisfies the auditor, and quietly transfers the entire implementation burden to the people with the least time and the least context to carry it.

Then we call the resulting variance a culture problem.