When Compliance Becomes a Substitute for Security Thinking

Compliance is not security. It’s a framework for proving that a defined set of controls exist. Security is the property of being hard to compromise. The first can be true while the second is not, and most of the breach reports I’ve read in the last few years were written about organizations whose audits had been passing the whole time.

The gap between what compliance demonstrates and what security requires is where most modern breaches live. The controls exist. The audits pass. The threat model is unexamined, and the attacker reads the gap before anyone else does.

flowchart TB subgraph Floor["Compliance: the floor"] SOC[SOC 2 controls] ISO[ISO 27001 controls] Other[Framework-specific controls] end subgraph Above["What the framework didn't anticipate"] TM[Org-specific threat model] Net[Net-new attack vectors] Op[Operational reality of controls] end Floor --> Boundary[The line auditors look at] Above --> Boundary2[The line attackers exploit] style Floor fill:#eaf2fa style Above fill:#fff5e0

Figure 1. Compliance covers the floor the framework’s authors thought to specify. Attackers don’t read the framework. The space above the floor (specific to your business, your data, your integrations) is where security work has to happen, and where compliance can’t substitute.

What compliance is for

Compliance frameworks do useful work. They give organizations a common language for demonstrating controls to customers, regulators, and partners, and they act as a floor that enforces basic discipline some organizations wouldn’t otherwise impose on themselves: encryption in transit, access reviews on a schedule, incident response plans in writing.

The framework is also a useful lever for getting reluctant organizations to do baseline security work. “We need this for SOC 2” is a faster path to budget than “we should do this because it’s good security.” Use the lever where it helps.

What compliance is good at is making absent controls visible and creating accountability for things that would otherwise have no owner. Those are valuable. They’re scaffolding around security, not security itself.

What compliance is not for

Four limits define where the substitution breaks down:

LimitWhat the framework doesWhat breaks
Security architectureDescribes controls in the abstractCan’t assess your specific attack surface
Org-specific threat modelingTreats all organizations similarlyYour adversaries don’t
Novel attack vectorsUpdates slowly (supply chain, OAuth abuse, identity-based lateral movement get covered with lag)The threats of right now
Security thinkingBecomes a checklist“Did we tick the box?” replaces “does this control work?”
flowchart LR TM[Threat model
specific to
your org] --> C[Controls designed
for your threats] C -->|subset| FW[Framework
requirements
the audit documents] C --> G[Controls above
the floor
where breaches live] style TM fill:#eaf2fa style G fill:#fff5e0 style FW fill:#eaf2fa

Figure 2. Threat model drives controls; compliance is what the audit documents. Working in reverse (framework → controls) produces a program shaped by what the framework anticipated, not by what your attackers will exploit.

The substitution failure mode

The substitution happens slowly. A healthy program runs both: a security function that thinks adversarially about specific risks, and a compliance function that demonstrates the controls those security decisions produced. The substitution starts when the compliance function takes priority, because compliance is what gets measured. Security work that doesn’t map to a framework requirement quietly stops getting funded. Over a few years, the security program becomes the compliance program.

The symptoms are predictable. Controls exist on paper and aren’t operated in practice: access reviews happen but the deltas aren’t actioned; incident response plans exist but haven’t been exercised. The framework’s blind spots become the organization’s blind spots. Vendor compliance tools amplify this: they produce reports, dashboards, and mapped artifacts. Most produce evidence of compliance, not security. The CISO presents the artifact to the board. The system’s security posture stays where it was.

What the working pattern looks like

The pattern that works treats compliance as a subset of security, not a substitute. The threat model drives the security program. The security program produces controls. A subset maps to framework requirements, which is what the audit documents. Compliance becomes a downstream consequence of good security, not the upstream driver.

Threat modeling specific to your organization is the work compliance can’t do for you. A lightweight entry looks like this:

# Threat model entry — one per critical asset, reviewed quarterly
asset: customer data via API
threat_actor: external attacker with stolen credential
attack_vector: API key reuse + rate-limit bypass
current_controls:
  - SOC 2 CC6.1 (access restriction)  # maps to framework
  - MFA enforced on human accounts
gap_not_in_framework:
  - API key rotation: no cadence enforced
  - Token scope: over-permissioned for most callers
priority: high
next_review: 2023-Q3

Once you have controls mapped to threats, mapping a subset to framework requirements is a documentation exercise. The reverse doesn’t work: mapping framework requirements back to threats requires inventing the threat model after the fact, and an invented model rarely produces the controls that would have existed if the threat model had come first.

Consider a security lead who begins reporting two metrics to the board separately: compliance posture and security posture. Compliance posture stays high: passing audits is measurable. Security posture drops, because she’s honest about threats they haven’t yet addressed. The divergence opens funding for investments the audit had been silently masking. The board doesn’t punish her for the lower number. They fund the work because the lower number tells them something the audit hadn’t.

The conversation with leadership

The cost of compliance is visible in the budget: audit fees, compliance headcount, tools. The cost of insufficient security is invisible until an incident makes it legible. Leadership conversations naturally pull toward the visible cost.

The honest framing isn’t “cheap-and-compliant versus more-expensive-and-secure.” It’s “audit-passing today and surprised next year” versus “audit-passing today and prepared for next year.” Both options pass audits. The difference is whether the security program is shaped by the framework or by the threats the framework hasn’t yet caught up to.

When the conversation goes well, leadership keeps the floor and funds the work above it. When it goes poorly, the question becomes “but we’re already paying for compliance,” and the security program shrinks to fit the budget compliance consumed.

The test

If the framework changed tomorrow, would your security posture be unchanged? Would the controls you’d designed still address the threats you’d modeled, with only the documentation needing to be remapped?

If yes, the security work was real. Compliance was a downstream artifact of it.

If no, the security work was compliance work in disguise. The framework was telling you what to do. Tomorrow’s framework will tell you something different, and your security posture will follow wherever it points.

The next attacker won’t consult your framework before deciding what to exploit. They’ll find what the framework didn’t ask you to look at, and they’ll exploit it precisely there. The breach I opened with happened in the gap between SOC 2’s control list and the company’s actual attack surface. The audit was honest about what it was doing. The interpretation of the audit, by leadership, was dishonest about what the audit proved. That wasn’t an audit failure. It was a strategy failure that the audit made easier.

Related Posts