Previous: Project Planning

SecOps, Disaster Recovery & SOC 2

Security and compliance are not IT chores. They are how you close enterprise deals and how you make sure one bad day does not end the company. The target posture: boring, documented, rehearsed.

Security Is a Strategy Function

Most engineers meet security as friction: the MFA prompt, the access request that takes a day, the deploy that needs a review. A CTO has to see it from the other side of the table, where it looks like two things: a sales enabler and existential risk management. Neither of those is delegable to "the IT person," because both are bets the whole company is making.

The sales-enabler part is concrete. The moment Hireboard sells to a company with a procurement department, the deal routes through a security review: a 200-400 question questionnaire, a request for your SOC 2 report, and a security architect on the buyer's side whose job is to find a reason to say no. Deals rarely die there loudly — they die by stalling. "Waiting on the security review" is where six-figure contracts age out of the quarter. A company that answers the questionnaire in two days from standing documents, attaches a current Type II report, and speaks fluently about incident response closes deals its competitors stall on. Security posture is, quite literally, sales velocity.

The existential part is equally concrete. A startup survives bad quarters and failed features; very few survive telling every customer their data is gone, or that an attacker had it for three months. The post-incident graveyard is full of companies that were fine on Monday: a deleted production database with backups nobody had ever restored, ransomware that encrypted the backups too, an offboarded contractor whose credentials still worked. None of these are exotic attacks — they are operational sloppiness compounding until probability catches up.

So the posture to build is deliberately unheroic: boring, documented, rehearsed. Boring means the controls are defaults, not per-incident decisions — SSO on everything, least privilege by construction, backups nobody has to remember to run. Documented means the policies exist, are short, and match reality. Rehearsed means you have actually restored a backup, actually run an incident drill, and actually know how long recovery takes — before the day it matters. Everything in this module is in service of those three words.

What an enterprise security reviewer actually probes

Buyers' security teams have read a thousand aspirational policy documents. What they probe for is evidence of practice: "When did you last restore a backup, and how long did it take?" "Show me your last access review." "Walk me through your most recent incident and the postmortem." "What happens on an employee's last day, step by step?" A crisp answer with dates signals a real program; "we have a policy for that" signals a binder that has never been opened, and reviewers price that in. The strongest signal is a dated artifact: the drill log, the review record, the postmortem doc.

Disaster Recovery: Writing a Plan That Works

A disaster recovery plan is not a compliance artifact. It is the document your most junior on-call engineer follows at 3 a.m. while you are on a plane. Write it for that reader, in that moment. The sections below are the plan, in order.

Step 1: Define RTO and RPO Per System

Two numbers govern everything else. RTO (Recovery Time Objective) is how long the business can tolerate a system being down. RPO (Recovery Point Objective) is how much data the business can tolerate losing — measured as time between the last recoverable state and the failure. RTO drives your failover architecture; RPO drives your backup frequency.

The critical discipline is setting these per system, in tiers. Uniform targets are unaffordable: giving your analytics warehouse the same one-hour RTO as your payments ledger means paying for hot standby infrastructure on a system nobody would notice was down for a day. Conversely, letting your payments system inherit the analytics tier is how you lose money movements. Rank every system, argue about the tiers with the business, and write the result down:

TierExample systemsRTORPOWhat that implies
Tier 0 — money and authPayments ledger, billing, authentication1 hour0 (no committed transaction lost)Synchronous replication or WAL streaming to a standby, cross-region replica, automated failover, drills quarterly
Tier 1 — core productPrimary application database, candidate pipelines, file storage4 hours15 minutesContinuous archiving (point-in-time recovery), warm standby, restore drill at least twice a year
Tier 2 — supportingAnalytics warehouse, search indexes, internal dashboards3 days24 hoursNightly snapshots, rebuild-from-source acceptable, restore verified annually
Tier 3 — rebuildableCaches, CI runners, staging environments1 weekN/A (derived data)Infrastructure-as-code rebuild; no backups, just recipes

Notice what the table buys you: every architecture and budget conversation about resilience now has a shared vocabulary. When someone proposes multi-region active-active for a Tier 2 system, the table says no for you. When finance asks why the database bill has a standby replica in it, the table answers that too.

Step 2: A Backup Strategy That Matches the RPO

Backups are the mechanism that makes RPO real. The rules that matter:

  • Frequency follows RPO. A 15-minute RPO means continuous WAL archiving or replication, not a nightly dump. A 24-hour RPO can be a nightly snapshot. If your backup schedule cannot mathematically meet the tier's RPO, one of them is a lie — fix whichever one is wrong.
  • The 3-2-1 rule. Three copies of the data, on two different storage systems, one of them offsite. In cloud terms: the live database, snapshots in the same region, and a copy replicated to a different region or a different cloud account. The failure you are defending against is correlated loss — a region outage, or an attacker with your primary account's keys.
  • Immutability is non-negotiable. Modern ransomware playbooks delete or encrypt backups first, then the production data, because attackers know backups are your leverage. Use object-lock / write-once storage or a separate account with a deny-delete policy, so that even an admin credential compromised in your primary account cannot destroy the backup history.
  • Retention is a policy decision, not a default.Keep dailies for 30 days, weeklies for 90, monthlies for a year — or whatever your data retention policy says. The point is that the number is chosen, written down, and consistent with what you tell customers.
  • Back up the things that are not the database.Object storage, configuration, secrets metadata (not the secrets themselves — those live in the secrets manager, which has its own recovery story), DNS zones, and the infrastructure code that rebuilds everything else.

Step 3: Runbooks Per Scenario

Generic plans fail because disasters are specific. Write a runbook for each scenario you consider credible, and keep each one to a page or two of numbered steps. Every runbook names an owner, a backup owner, and the communication tree: who declares the incident, who updates the status page, who calls the customers that have contractual notification clauses. The minimum scenario set:

ScenarioRunbook coversHardest step (rehearse this one)
Cloud region lossFailover order by tier, DNS cutover, verifying replication lag before promoting, communicating degraded stateDeciding to fail over — the call is always made with incomplete information, so the runbook must state who decides and on what threshold
Database corruption or bad migrationPoint-in-time recovery to just before the event, replaying or reconciling writes made after, verifying integrity before reopening trafficChoosing the recovery timestamp and accepting the data loss window — a business decision the runbook must assign
Ransomware / account compromiseCredential revocation order, isolating the blast radius, restoring from immutable backups into a cleanaccount, legal and law-enforcement contacts, disclosure obligationsRestoring into infrastructure you trust — restoring into the compromised account just re-arms the attacker
Key-person lossWhere the break-glass credentials live, who the secondary owners of every critical system are, registrar and DNS account recovery, signing keysDiscovering the systems only one person could touch — run this drill by having that person sit out a game day

Step 4: The Test Discipline

An untested backup is a hope, not a backup. The industry is littered with teams that ran backups faithfully for years and discovered at restore time that the dumps were empty, the snapshots were of the wrong volume, or the restore took four days against a four-hour RTO. The only proof a backup works is a completed restore, and the only proof your RTO is real is a timed drill. So schedule them:

  • Restore drills: on a cadence matching the tier (quarterly for Tier 0, twice a year for Tier 1, annually below that), restore a production backup into an isolated environment, verify row counts and spot-check integrity, and record the wall clock time.
  • Game days: chaos engineering lite. Announce a scenario ("the primary region is gone as of 10:00"), have the on-call team execute the runbook against staging, and take notes on every step that was ambiguous, missing, or slower than expected. The runbook edits from a game day are worth more than any amount of review-in-a-document.
  • Record actual vs. target: keep a table of drill date, scenario, target RTO/RPO, and actual achieved numbers. This is simultaneously your improvement backlog and the single best artifact to hand an enterprise security reviewer or auditor.

The skeleton every DR plan needs, in order:

#SectionContents
1Scope and activationWhat counts as a disaster, who can declare one, severity levels
2System tier tableEvery system with its tier, RTO, RPO, owner, and dependencies
3Backup inventoryWhat is backed up, where, how often, retention, immutability, last verified restore date
4Scenario runbooksRegion loss, corruption, ransomware, key-person loss — numbered steps, owners
5Communication treeInternal escalation, status page ownership, customer notification obligations, press/legal contacts
6Drill logDate, scenario, target vs. actual, action items
7Review recordPlan owner, last review date, next review date

Put the restore date on a dashboard

The single highest-leverage DR habit: surface "days since last verified restore" per tier somewhere visible — a dashboard, a weekly report, anywhere the team sees it. Metrics that are visible get maintained; the drill that lives only in a calendar invite gets skipped the first busy quarter. This one number converts backup verification from a virtue into a default.

Data Integrity: The Rules and the Proof

DR protects you from losing data. Data integrity protects you from something quieter and often worse: keeping data that is wrong. Corrupt balances, orphaned records, and double-charged customers do not page anyone — they accumulate silently until an audit, a customer complaint, or a reconciliation attempt exposes months of drift. Integrity is therefore both a document (the rules) and a practice (the machinery that proves the rules hold). The rules:

  • Validate at the boundaries, constrain in the database.Application-level validation is your first line and your best error messages — but the application lies. It has bugs, it gets bypassed by scripts and backfills, and a second service will eventually write to the same tables. Database constraints are the last line that does not lie: foreign keys, unique constraints, not-null, and check constraints encoding real invariants (quantities non-negative, state transitions from a legal set). If an invariant matters, it lives in the schema, not just the code.
  • Append-only audit logs for money and state changes.Any operation that moves money, changes an entitlement, or alters a record with legal weight gets an immutable audit entry: who, what, when, before-value, after-value. Updates to the audit table are revoked at the database-permission level. When a customer disputes a charge or an auditor asks how a balance came to be, this table is the answer; without it, the answer is archaeology.
  • Reconciliation jobs that prove invariants — and page.For every invariant that matters, write a nightly job that checks it against the whole dataset: the sum of ledger entries equals the sum of account balances; every subscription has exactly one active billing record; every invoice total equals the sum of its lines. When the check fails, it pages — a broken invariant is an incident, because every hour it persists widens the blast radius of whatever caused it. Reconciliation is how you find the bug that validation and constraints both missed, on day one instead of month six.
  • Soft delete plus a retention policy. Hard deletes destroy your ability to investigate and to recover from application bugs. Soft-delete by default, then honor your data retention policy (and deletion requests under privacy law) with a scheduled hard-purge job. Deletion becomes a controlled, logged, two-phase operation instead of a foot-gun in every code path.
  • Idempotency for money operations. Every payment, refund, and credit API accepts an idempotency key and returns the original result on retry. Networks fail mid-request; without idempotency, every timeout is a potential double charge. This is also a processing-integrity control auditors recognize by name.
  • Migration safety: expand, migrate, contract.Never make a destructive schema change in one step. Add the new column or table (expand), backfill and dual-write while both shapes coexist (migrate), and only after verification remove the old shape (contract). Renames, drops, and type changes done in one deploy are the leading self-inflicted cause of the database corruption runbook getting used.

Write the invariants down before the jobs

Maintain a short document listing every invariant the business depends on, in plain language: "a candidate is never in two active pipelines for the same role," "ledger debits equal credits." Each line then demands three things: a constraint that enforces it where possible, a reconciliation job that proves it globally, and an owner. If nobody can state the invariants, no amount of tooling will protect them.

The Document Set a Real Company Needs

At some point — usually triggered by the first enterprise deal or the SOC 2 decision — you need actual written policies. The purpose is not ceremony. Each document answers a question a buyer, auditor, or court will eventually ask, and forces a decision you would otherwise make inconsistently under pressure. The inventory:

DocumentWhat it decidesOwnerReview cadence
Information Security PolicyThe umbrella: scope, roles, risk appetite, and pointers to everything belowCTOAnnual
Access Control PolicyLeast privilege, role-based access, the joiner-mover-leaver process (access granted by role on day one, adjusted on team change, revoked same-day on exit), quarterly access reviewsCTO / Eng leadAnnual policy, quarterly reviews
Incident Response PlanSeverity levels, who is incident commander, comms templates (internal, status page, customer, regulator), postmortem process and deadlineEng lead / on-call ownerAnnual, plus after every major incident
DR / Business Continuity PlanEverything in the DR section aboveCTOAnnual, plus after every drill
Data Classification & Retention PolicyWhat data classes exist (public, internal, confidential, restricted), handling rules per class, how long each is kept, how it is destroyedCTO / LegalAnnual
Vendor Management PolicyHow vendors are assessed before getting your data, the vendor inventory with data-access level, annual re-review of critical vendorsCTO / OpsAnnual, per-vendor on renewal
Change Management PolicyHow code and infrastructure changes are reviewed, tested, approved, and rolled back; what qualifies as an emergency change and how it is retro-reviewedEng leadAnnual
Acceptable Use PolicyWhat employees may do with company systems and data; device requirements; what happens on violationOps / HRAnnual, acknowledged by every hire

The writing rule that governs all of them: short, true, and followed beats long, aspirational, and ignored. A two-page access policy your team actually follows is worth more than a forty-page one copied from a template library. This is not just taste. Auditors test the gap between what the policy says and what practice shows, and every aspirational sentence is a finding waiting to happen. Courts and regulators are harsher still: a policy you wrote and did not follow is evidence that you knew the standard and chose not to meet it. Write only what you will do; then do it.

Compliance theater

The failure mode to fear is not having no program — it is buying the appearance of one. Purchased policy templates nobody has read, a badge on the website while offboarding still takes three weeks, a DR plan whose backups have never been restored. Theater is worse than nothing on every axis that matters: it costs real money, it collapses in the first serious security review (buyers' reviewers are professionally good at detecting it), and if there is ever an incident and litigation, the gap between your documents and your practice becomes the plaintiff's exhibit A. If you are not willing to run the control, do not write it down.

SOC 2: What It Is and How to Actually Pass

What it is — and is not

SOC 2 is an attestation, not a certification. There is no pass/fail badge issued by a standards body; a licensed CPA firm examines your controls and writes a report attesting to what they found, including any exceptions. Buyers read the report — which is why "SOC 2 compliant" on a website means little and the actual report under NDA means a lot.

The examination is against the Trust Services Criteria. Security (the "common criteria") is mandatory; the other four are optional scope you choose:

CriteriaRequired?CoversInclude it when…
SecurityMandatoryAccess control, change management, monitoring, incident response, risk managementAlways in scope
AvailabilityOptionalUptime commitments, capacity, DR and backupYou sell SLAs, or buyers ask (most SaaS adds this)
ConfidentialityOptionalProtection and disposal of confidential business dataYou hold sensitive customer business data under NDA-like terms
Processing IntegrityOptionalComplete, accurate, timely, authorized processingYou process transactions or payroll-like data where correctness is the product
PrivacyOptionalPersonal information lifecycle against your noticeRarely — buyers usually probe privacy via GDPR/CCPA terms instead

Scope only what buyers demand. Every added criterion is more controls, more evidence, and more surface for exceptions. Security plus Availability is the standard first-audit scope for a SaaS company; add others when a contract actually requires them.

Type I vs. Type II

A Type I report says: on this date, controls were suitably designed and in place. A snapshot. A Type IIreport says: over this observation window (three to twelve months), the controls operated effectively — the auditor sampled evidence across the whole period. Buyers know the difference, and what they really want is Type II; a Type I mostly buys you a line in a sales conversation ("Type I complete, Type II in progress, report expected in Q3"). A common pragmatic path is a Type I to satisfy an in-flight deal, with the Type II observation window starting immediately after. If no deal is forcing the issue, skipping straight to Type II saves money and a redundant audit cycle.

The realistic path and timeline

PhaseTypical durationWhat actually happens
1. Gap assessment2–4 weeksCompare current practice against the criteria; produce the remediation list. Do this honestly — gaps found now are cheap, gaps found by the auditor are exceptions.
2. Remediation1–3 monthsThe usual list: SSO + MFA on every system, formalized access reviews, centralized logging and alerting, endpoint management (disk encryption, screen lock, patching) on every laptop, vendor reviews, background checks, and the policy set from the previous section — written, approved, and acknowledged by staff.
3. Compliance automationRuns alongside remediationAdopt a Vanta/Drata-class platform that connects to your cloud, IdP, repos, and MDM and collects evidence continuously. Not strictly required, but at startup headcount it is the difference between compliance being a background process and being someone's full-time job.
4. Observation window3–12 months (3 is common for the first)Controls run and generate evidence. Every skipped access review or undocumented emergency change during this window is a potential exception in the report.
5. Audit4–8 weeksEvidence requests, sampling, interviews, draft report, management responses to any exceptions, final report.

Total for a first Type II: commonly six to twelve months from decision to report in hand. Plan backwards from when sales needs it, and remember the report goes stale — buyers expect a fresh one annually, so the observation window effectively never closes again.

Evidence culture

The audit is not proving you are secure. It is proving you did what you said: that the access review your policy promises quarterly actually happened four times, with a record; that the terminated employee's access was removed the day the policy says, with a ticket showing it. Screenshots, tickets, review sign-offs, and logs are the currency. The design principle that follows: controls must generate their own evidence.Access approved through a ticketing flow leaves a record for free; access granted in a Slack DM means someone reconstructing screenshots at audit time. Offboarding driven by the IdP logs itself; offboarding done by memory does not. Any control that requires a human to remember to document it will become your audit bottleneck — and probably an exception.

Where first audits actually go wrong

  • Orphaned access after offboarding. The auditor cross-references the HR termination list against every system's user list. The contractor from March who still has repo access is the single most common finding in first audits.
  • Missing or hollow access reviews. Either the quarterly review just did not happen, or it happened as a rubber-stamp with no evidence anyone actually looked. Reviews that never remove anything draw auditor attention.
  • Policies staff have never read. The policy says annual acknowledgment; half the team has no acknowledgment on record; two engineers, when interviewed, do not know the incident process exists.
  • No tested DR restore. The DR plan promises backups and recovery targets, and there is no record of a restore ever being performed. Everything in the test-discipline section above is also audit evidence.
  • Exceptions without documented risk acceptance.Deviating from your own policy is sometimes the right call — but an undocumented deviation is a finding, while the same deviation with a written, ownered, time-boxed risk acceptance is a functioning risk-management program. The paper trail is the difference.

The Habits That Make All of This Cheap

Everything above sounds expensive. It is expensive — if you bolt it on. It is nearly free if a handful of habits are defaults from early on, because then the compliance program is mostly describing what already happens:

  • Least privilege by default. Access is granted by role, expanded by request with a reason, and expiring where possible. The question is never "why would we restrict this?" but "why does this role need it?" Quarterly reviews then remove drift instead of excavating years of accumulation.
  • SSO + MFA everywhere, from the start. One identity provider in front of every tool means onboarding is a group assignment, offboarding is one deactivation, and the auditor's access questions have one answer. Every tool adopted outside SSO is future offboarding debt.
  • Secrets live in a manager, never in code.Secrets in a vault with access logging and rotation; scanning in CI to catch the ones that try to sneak into the repo. A secret in git history is permanently leaked — rotation, not deletion, is the only fix.
  • Immutable infrastructure, trending. Servers and configuration built from code and replaced, not patched by hand. Every hand-edit is unauditable drift; infrastructure-as-code makes the change management policy enforce itself, because the change is a reviewed pull request.
  • Blameless postmortems. The incident you punish is the incident that goes unreported next time — and the unreported incident is the one that recurs at twice the size. Blameless does not mean consequence-free; it means the analysis targets the system that allowed the mistake, and action items get owners and deadlines.
  • Security review inside the change process, not a quarterly ambush. A short checklist on the pull request template — new data collected? new external surface? new vendor? authz changes? — catches issues at the moment they are cheapest to fix, and generates continuous evidence that security review happens. The periodic audit then confirms the process instead of substituting for it.

The compounding effect is the point. A company with these defaults reaches its SOC 2 gap assessment and finds the remediation list short, its security questionnaires answerable from standing documents, and its 3 a.m. incidents survivable by whoever is on call. That is what boring, documented, rehearsed buys: the worst day the company will have is one you have already practiced.

Don't make security the team of no

If every request routed through security comes back as "no" or a two-week silence, engineers stop routing requests and start routing around them — shadow IT, shared credentials, personal accounts holding company data. The controls then measure an increasingly fictional company. Fast, reasoned yeses with guardrails ("yes, via SSO, with this data class excluded") keep reality inside the system, which is the only place controls can protect it.

The one-page version to hand a lieutenant

Tier your systems and set RTO/RPO per tier. Match backups to RPO, make them immutable, and prove them with timed restores. Write runbooks for the four scenarios and game-day them. Constrain integrity in the database, audit-log money, and reconcile nightly. Keep the eight policies short, true, and followed. For SOC 2: gap assessment, remediate, automate evidence, observe, audit — six to twelve months, Type II is the one buyers want. And build the six habits, because they make everything else a description of reality instead of a project.

Knowledge Check

Test your judgment on the operational playbook before moving on.

Loading quiz...