Build Daily

Tinley Park · July 25, 2026

SOC 2 from the engineer's seat

Sooner or later a B2B deal stalls on one sentence: "send us the SOC 2 report." It doesn't much matter what a vendor sells — if an enterprise is going to pipe its data through that software, its vendor-risk team wants that report before it signs. The bigger the logo, the earlier the sentence arrives.

The instinct when it lands is to treat it as a security problem — go harden things. That's the wrong frame, and the expensive one. SOC 2 isn't a bar cleared by being secure; it's an evidence machine run continuously, and most of the evidence turns out to be a byproduct of doing engineering the way it should already be done. This is the engineer's read on what the gate actually asks engineering to produce.

This gate came the long way — a decade building an enterprise multi-tenant SaaS codebase. We weren't SOC 2 compliant, and it cost us: real opportunities stalled because we couldn't drop the report on the table when a bigger customer's vendor-risk team asked for it. The engineering underneath was solid; the attestation-shaped hole was the problem. That's the vantage here — not the framework in the abstract, but what its absence actually costs the people writing the code. And nothing about it is industry-specific — it's the same examination whether the product is payroll software, a scheduling API, or a data pipeline. Wherever customer data lands in the system, the report follows.

§ 01
CHAPTER

It's an attestation, not a certificate

First correction to the SaaS instinct: nobody "passes" SOC 2. There's no cert on the wall. A licensed CPA firm examines the controls and writes an opinion — an attestation — that's shared with the customer under NDA. The framework comes from the AICPA; the criteria are the Trust Service Criteria, and the team maps its own controls to them. There is no fixed checklist, which is exactly why engineers find it slippery at first.

The split that matters to a builder is Type I versus Type II.

Type I versus Type II — a point in time versus an observation windowTwo horizontal timelines. The top one, Type I, is a single stamped point: controls are designed correctly on one date. The bottom one, Type II, is a bar spanning three to twelve months with several sample points along it: controls operated effectively the whole time. An auditor samples dates across the Type II window.DESIGN vs OPERATING EFFECTIVENESSType I proves the control is built right · Type II proves it ran the whole timeTYPE Ipoint in time · designONE DATE"the controls exist and are designed correctly"TYPE II3–12 months · operating"and they operated effectively on every date the auditor checked"THE OBSERVATION WINDOWFIG. 1 — Type I is a snapshot. Type II is a movie the auditor spot-checks frame by frame.
↗ click to enlarge

Type I says the controls are designed right on one date. Fast — a couple of months — and useful to unblock a nervous prospect. Type II says they operated effectively across an observation window, usually three to twelve months. That's the report enterprises actually respect, and the word doing the work is operated. Not "exists." Ran. Continuously. The whole window.

That distinction is the entire game, and it's the thing that bites engineers — more on that below.

§ 02
CHAPTER

It isn't "all of SOC 2"

The second relief. SOC 2 is built on five Trust Service Criteria, and only one is mandatory. The rest are opt-in based on what the product actually promises customers. Scope creep here is self-inflicted — every added criterion multiplies the evidence that has to be produced.

SECURITY
Mandatory. The "Common Criteria" — protection against unauthorized access. This is ~90% of the work for most SaaS, and where engineering carries the load.
AVAILABILITY
Optional. Uptime, capacity, backup/restore, DR. Add it if the product carries an SLA.
PROCESSING INTEGRITY
Optional. Processing is complete, valid, accurate, timely, authorized. Relevant to anything that computes or transacts on the customer's behalf — billing, payroll, order fulfillment, a scoring or decision engine. If a wrong number in the system costs the customer something, this is the criterion watching it.
CONFIDENTIALITY
Optional. Data marked confidential is protected through its whole lifecycle — retention and disposal included.
PRIVACY
Optional and the heaviest. PII handled per the stated notice — GDPR/CCPA overlap. Most teams run privacy as a separate program and reference it rather than fold it in.

The pragmatic default for a first report: Security only. Add Availability if the product sells an SLA, Confidentiality if contracts demand it, and Processing Integrity if the product's whole value is computing something correctly on the customer's behalf. Each addition is a deliberate choice tied to a promise actually made — not a box ticked to look thorough.

Every added criterion is another stream of evidence to produce on every sampled date for the whole window. "To be safe" is how a three-month project becomes a nine-month one.

§ 03
CHAPTER

The three CC series engineering owns

The Security criterion breaks into nine Common Criteria series (CC1–CC9). Most are governance — org charts, risk assessments, board oversight, vendor reviews — and they're not engineering's. Three of them are, and auditors sample them the hardest.

The three Common Criteria series engineering ownsThree highlighted rows out of the nine Common Criteria. CC6, Logical and Physical Access, maps to identity: SSO, MFA, least privilege, provisioning and deprovisioning, encryption. CC7, System Operations, maps to detection: logging, alerting, vulnerability management, incident response. CC8, Change Management, maps to the pipeline: version control, mandatory code review, tested deploys, separation of duties.WHERE ENGINEERING CARRIES THE LOADthree of the nine Common Criteria — and the ones sampled hardestCC6LOGICAL & PHYSICAL ACCESSIDENTITYSSO · MFA everywhere · least privilege · provisioning/deprovisioning · encryption at rest & in flightCC7SYSTEM OPERATIONSDETECTIONcentralized logging · alerting · vulnerability scanning · patch SLAs · incident response · annual pen testCC8CHANGE MANAGEMENTPIPELINEversion control · mandatory PR review · tests gate deploys · separation of duties · IaCFIG. 2 — Run these three well already, and SOC 2 is mostly documenting what's already true.
↗ click to enlarge

Read that figure again and notice what it isn't asking for. It isn't asking for a new firewall or a new architecture. CC6 is identity a team should already have — SSO, MFA with no exceptions, least privilege, access tied to the HR system so a leaver loses everything the same day. CC7 is detection a team should already run — logs shipped somewhere tamper-resistant, alerts, dependency scanning, an incident runbook. CC8 is the pipeline — every production change behind a reviewed pull request, tests gating the deploy, and the author not being the sole approver.

For a team that already works like that — feature branch, review, tested merge, promote — the substance of the three hardest series is already there. What's missing isn't controls. It's the paper trail that proves the controls ran.

§ 04
CHAPTER

The thing that bites: continuity

Here's the gotcha the whole post has been walking toward. For Type II, the auditor samples dates across the observation window and asks for evidence the control operated on each one. Every access review that was due. Every offboarding, with the timestamp showing access died the day the person left. Every production change, with its review and approval attached.

And it cannot be backfilled. A control that lapsed for one month inside the window — the quarter the access review got skipped, the two weeks MFA was off for a contractor, the hotfix that went straight to prod without a PR — becomes a noted exception in the report. There's no reconstructing it after the fact; the timestamps give it away.

SOC 2 doesn't test whether the system is secure today. It tests whether it was secure on eleven random days over the last nine months — and whether that can be proved without touching a screenshot after the fact.

This is why the frame is "evidence machine," not "security project." Being secure is a state. Passing Type II is a habit with receipts. The engineering task isn't to harden the system once; it's to make the system emit proof of its own good behavior, continuously, so that when the auditor points at March 14th, the answer is a query, not a scramble.

§ 05
CHAPTER

Buy the evidence machine

There's a category of tool — Vanta, Drata, Secureframe, Sprinto and friends — whose entire job is to be the continuous-evidence machine so no one has to hand-roll it. They connect read-only to the cloud, the identity provider, the HR system, the code host and the laptops, then pull evidence automatically and turn red the moment a control drifts. Most bundle policy templates and a portal the auditor logs into directly.

For a small team this is the difference between a subscription and a second job. The rule of thumb on the split:

  • Automate the high-frequency, machine-observable controls: cloud and IAM config, MFA and access state, on/offboarding, change-management history, vuln scans, endpoint compliance. This is the stuff that lapses silently and is miserable to reconstruct.
  • Keep manual the low-frequency human artifacts: policy approvals, the annual risk assessment, procuring the pen test, actually running a backup-restore test, the management review. A platform can't do these for a team; it can only remind them.

Two non-obvious rules. First: start the integrations before the observation window opens — evidence only counts from when collection began, so wiring the tool up on day one of the window is worth months. Second: this is a hosted SaaS with read-only reach into production infrastructure, so vet it like any subprocessor before pointing it at production. (And, the standard caveat on this blog: every one of these is a paid platform. Worth it when a deal is waiting on the report — not a reflex purchase before one is.)

§ 06
CHAPTER

What to wire in on day one

For a service that will face this gate — and any product selling to enterprise eventually does — the move is to treat the evidence as a build target from the first commit, not a scramble the quarter before the audit. Four things, all controls-as-code, all emitting their own proof.

01

Access as code · CC6

Identity and permissions defined in a reviewed repo, not clicked into a console. The grant history is the access-review evidence, and deprovisioning is a merged PR with a timestamp — not a memory of someone doing it.

02

A change trail that can't be routed around · CC8

Protected branches, required review, tests gating the deploy, and deploys stamped back to the merged PR. If there's no supported path to prod except through review, "every change was reviewed" stops being a promise and becomes a fact the pipeline enforces.

03

An immutable audit log on the sensitive path · PI / CC7

Append-only, tamper-evident logging on the operations that matter — whatever computes a result the customer relies on, or touches data they'd care about. It's the SOC 2 evidence for those actions, and in a regulated industry it's the record the regulator expects too. Build it once; if a second framework ever shows up, it's already covered.

04

A backup actually restored · CC7 / A

Backups nobody has restored are a rumor. A scheduled restore drill that writes its own log entry is the one piece of evidence teams most reliably fake and most reliably get caught faking. Automate the drill; keep the receipt.

None of that is a security purchase. It's a single instinct applied four ways — make the system produce the artifact as a byproduct of running correctly, so the audit becomes a report to generate rather than a fire to fight.

§ 07
CHAPTER

Corrections welcome

One honest caveat: this is the view from the side of the company that didn't clear the gate — a decade in enterprise multi-tenant SaaS where the missing report cost deals, and where the engineering discipline was largely there but never got turned into an attestation anyone could hand a customer. What it isn't is the view from owning a Type II end-to-end in the compliance chair: running the auditor relationship, arguing a specific exception, carrying the observation window as the person on the hook. For anyone in that seat, corrections welcome — what's heavier than this makes it sound, what's lighter, where the "it's just documenting what's already done" framing breaks down against a real audit.

Email or X. Building in the open is partly a learning project; the outside input is the point.

— Neil

  • #soc-2
  • #compliance
  • #b2b-saas
  • #engineering
  • #field-notes
  • #security
  • #shipping-for-the-enterprise

Continue reading