Visual Reference Guide

The Anatomy of SOC 2 Compliance

Understanding how Trust Services Criteria, controls, policies, procedures, people, roles, systems, and evidence all connect to form a functioning compliance program.

The Big Picture

How SOC 2 Components Stack Together

SOC 2 is built as a layered system. At the top sit the AICPA's Trust Services Criteria, and everything below exists to satisfy them. Here's the full hierarchy from top to bottom.

Trust Services Criteria (TSC)
AICPA Defined
The five categories defined by the AICPA: Security (required), Availability, Processing Integrity, Confidentiality, and Privacy. Each contains specific criteria (e.g., CC1.1, CC6.1) that your organization must address. These are not your rules — they are the auditor's yardstick.
Controls
You Define
Controls are the specific safeguards you put in place to meet the TSC. Each control maps to one or more criteria. Example: "All production deployments require peer-reviewed pull requests" maps to CC8.1 (Change Management). Controls are the bridge between what the AICPA requires and what your org does.
Policies
Governance
Formal documents that state what must happen and why. They set the rules. Example: "The Information Security Policy mandates that all endpoints must have encrypted storage." Policies are reviewed annually and approved by leadership.
Procedures
Operations
Step-by-step instructions for how to carry out what the policies require. Example: "To enable disk encryption on macOS: Open System Preferences > Security & Privacy > FileVault > Turn On." Procedures are the runbooks your team actually follows day-to-day.
People
The actual humans performing the work. Engineers, IT admins, HR, managers. They execute procedures, operate systems, and their actions generate evidence.
Roles
Defined positions with specific responsibilities tied to controls. "Security Engineer" owns incident response. "Engineering Manager" approves access requests. Roles map people to accountability.
Systems
The infrastructure, applications, and tools in scope. AWS accounts, GitHub repos, Okta, Jira, your production databases. Systems are where controls are technically enforced.
Evidence
Proof
The artifacts that prove your controls are actually operating. Screenshots, logs, configuration exports, ticket histories, signed acknowledgements, automated test results. Without evidence, controls are just claims. Evidence is what the auditor actually examines.
Entity Reference

All the Moving Parts at a Glance

Each entity in the SOC 2 ecosystem plays a distinct role. Here's what each one is and what it's responsible for.

TSC
AICPA's criteria.
The "what you must address."
Controls
Your specific safeguards.
The "how we address it."
Policies
Formal governance.
The "rule book."
Procedures
Operational steps.
The "run book."
People
Individual humans.
The operators.
Roles
Defined positions.
The accountability layer.
Systems
Infrastructure & tools.
The technical layer.
Evidence
Proof artifacts.
What auditors examine.
How They Connect

The Relationship Map

Nothing in SOC 2 exists in isolation. Every entity connects to others through specific relationships. Understanding these connections is critical to building a system that doesn't collapse under audit scrutiny.

From
To
TSC Criteria (e.g., CC6.1)
One or more Controls
Controls
Backed by Policies & Procedures
Policies
Implemented via Procedures
Procedures
Executed by People in Roles
People + Roles
Operate and configure Systems
Systems + People
Generate Evidence
Evidence
Proves Controls are operating

◎ TSC ↔ Controls

Many-to-Many — One criterion maps to multiple controls, and one control can satisfy multiple criteria

CC6.1 (Logical Access) might be covered by your "MFA Required" control AND your "Role-Based Access" control. Meanwhile, "MFA Required" also helps satisfy CC6.3 and CC6.6.

⚙ Controls ↔ Policies

Many-to-Many — Controls reference policies; policies back multiple controls

Your "Access Review" control references the Access Management Policy. That same policy also backs your "Onboarding Access" and "Offboarding Revocation" controls.

✍ Policies → Procedures

One-to-Many — Each policy has one or more implementing procedures

The Incident Response Policy has procedures for: detection, triage, escalation, communication, post-mortem. Each is a separate documented process.

☰ Procedures ↔ Roles

Many-to-Many — Procedures are assigned to roles; roles execute multiple procedures

The "Security Engineer" role executes the vulnerability scanning procedure AND the incident triage procedure. The scanning procedure may also involve the "DevOps Engineer" role.

⚑ Roles ↔ People

Many-to-Many — People fill roles; one person can hold multiple roles

At a startup, the CTO might hold the roles of "Security Officer," "Engineering Manager," and "Incident Commander." At scale, these are separate people. The mapping must be explicit and documented.

⚙ Controls ↔ Systems

Many-to-Many — Controls are enforced on/by systems

"Encrypted data at rest" applies to your RDS instances, S3 buckets, and EBS volumes. Each system needs its own evidence that encryption is enabled. Meanwhile, AWS KMS is the system that enforces the control across all of them.

Key Insight: The audit trail is a closed loop. TSC → Controls → Policies → Procedures → People/Roles → Systems → Evidence → (proves) Controls. If any link in this chain is broken — a control without evidence, a procedure without an owner, a system outside scope — the auditor will flag it.
In Practice

What SOC 2 Compliance Software Typically Looks Like

Here's a realistic mock of what teams interact with daily when managing their SOC 2 program. This is representative of tools like Vanta, Drata, Secureframe, or custom-built GRC platforms.

ComplianceOS — Controls Dashboard
Overview
Dashboard
Controls 4
Policies
Procedures
Evidence
Evidence Vault 32
Automated Tests
Exceptions 2
Organization
People & Roles
Systems
Vendors

Controls Overview

Audit Period: Jan 1, 2025 – Dec 31, 2025  •  47 controls  •  Last synced 3 min ago
38
PASSING
5
NEEDS REVIEW
4
FAILING
128
EVIDENCE ITEMS
Control ID Control Name TSC Mapping Owner Status Evidence
CTRL-001 Multi-factor authentication required CC6.1, CC6.6 J. Martinez (Security) Pass 4/4
CTRL-002 Quarterly access reviews CC6.2, CC6.3 S. Chen (IT Admin) Pass 3/3
CTRL-003 Vulnerability scanning (weekly) CC7.1 A. Patel (DevOps) Review 2/3
CTRL-004 Encrypted backups with 30-day retention CC6.1, A1.2 A. Patel (DevOps) Pass 5/5
CTRL-005 Annual security awareness training CC1.4 R. Kim (HR) Fail 0/2
CTRL-006 Change management: PR review required CC8.1 M. Lopez (Eng Mgr) Pass 8/8
CTRL-007 Incident response plan tested annually CC7.3, CC7.4 J. Martinez (Security) Fail 1/4

Controls Management View

This is what the “Controls” page looks like when selected from the sidebar — a dedicated control registry with search, filtering by status, and expandable detail panels for each control.

ComplianceOS — Controls
Overview
Dashboard
Controls 4
Policies
Procedures
Evidence
Evidence Vault 32
Automated Tests
Exceptions 2
Organization
People & Roles
Systems
Vendors

Controls Registry

47 controls total  •  Showing all  •  Grouped by status
All (47)
✓ Pass (38)
● Review (5)
✗ Fail (4)
ACCESS CONTROLS
12
11 passing • 1 review
CHANGE MANAGEMENT
8
8 passing
RISK & MONITORING
14
10 passing • 3 review • 1 fail
OPERATIONS
13
9 passing • 1 review • 3 fail
Control ID Control Name Category TSC Criteria Owner Status Evidence Last Tested
CTRL-001 Multi-factor authentication required Access Controls CC6.1CC6.6 J. Martinez Pass 4/4 Mar 12, 2025
CTRL-002 Quarterly access reviews Access Controls CC6.2CC6.3 S. Chen Pass 3/3 Mar 1, 2025
CTRL-003 Vulnerability scanning (weekly) Risk & Monitoring CC7.1 A. Patel Review 2/3 Mar 10, 2025

CTRL-003 Vulnerability Scanning (Weekly) Needs Review

All production systems must undergo automated vulnerability scanning on a weekly cadence. Critical and high findings must be remediated within 14 days; medium within 30 days.
👤 Owner: A. Patel (DevOps) 📅 Created: Jan 15, 2025 🔄 Test Frequency: Weekly (automated) ⏱ Next Review: Mar 17, 2025
Mapped TSC Criteria
CC7.1 Detect and monitor anomalies
Linked Policies
POL-008 Vulnerability Management Policy
POL-003 Risk Assessment Policy
Systems In Scope
AWS EC2 AWS RDS GitHub Enterprise
Evidence (2 of 3 collected)
Weekly Nessus scan report (auto)
Mar 10
Collected
AWS Inspector findings export
Mar 10
Collected
Remediation tracker spreadsheet
Missing
⚠ Missing evidence: Remediation tracker must be uploaded before next audit review.
Automated Test Results
Mar 10 Scan completed — 0 critical, 2 medium
Mar 3 Scan completed — 0 critical, 1 medium
Feb 24 Scan completed — 1 critical, 3 medium
Feb 17 Scan completed — 0 critical, 1 medium
Feb 10 Scan failed — agent timeout on prod-db-01
Activity Log
2h ago
A. Patel acknowledged 2 medium findings from Mar 10 scan
1d ago
System auto-collected Nessus scan report for week of Mar 10
5d ago
J. Martinez flagged remediation tracker as overdue
12d ago
A. Patel resolved critical finding CVE-2025-1234 from Feb 24 scan
19d ago
System detected critical vulnerability in Feb 24 scan — alert sent to A. Patel
CTRL-004 Encrypted backups with 30-day retention Operations CC6.1A1.2 A. Patel Pass 5/5 Mar 14, 2025
CTRL-005 Annual security awareness training Operations CC1.4 R. Kim Fail 0/2 Feb 28, 2025
CTRL-006 Change management: PR review required Change Mgmt CC8.1 M. Lopez Pass 8/8 Mar 15, 2025
CTRL-007 Incident response plan tested annually Risk & Monitoring CC7.3CC7.4 J. Martinez Fail 1/4 Jan 20, 2025
Showing 1–7 of 47 controls
1 2 3 7

Evidence Collection View

Each control needs evidence to prove it's working. Here's what a typical evidence vault looks like for a single control.

CTRL-001: Multi-factor Authentication — Evidence
Passing 4 of 4 evidence items collected Owner: J. Martinez
📷
Okta MFA Policy Configuration
Screenshot • Captured automatically • Dec 14, 2025
Valid
📄
MFA Enrollment Report — All Users
CSV Export • Uploaded manually • Dec 12, 2025
Valid
💬
Access Management Policy v3.1 (Section 4.2)
Policy Document • Last reviewed Oct 2, 2025
Valid
GitHub Branch Protection Rules
API Check • Automated • Runs daily
Valid

People & Roles Matrix

Auditors need to see exactly who is responsible for what. Here's a typical role assignment view.

People & Roles
Person Role(s) Controls Owned Procedures Assigned Training Status
J. Martinez
Security Engineer
Security Officer, Incident Commander CTRL-001, CTRL-007, CTRL-012 5 procedures Complete
S. Chen
IT Administrator
Access Administrator CTRL-002, CTRL-009 3 procedures Complete
A. Patel
DevOps Lead
Infrastructure Owner CTRL-003, CTRL-004, CTRL-006 4 procedures Pending
R. Kim
HR Manager
Training Coordinator CTRL-005, CTRL-010 2 procedures Overdue

Systems Inventory

Every in-scope system must be documented with its purpose, data classification, and which controls apply to it.

Systems Inventory — In Scope
System Category Data Classification Controls Applied Status
AWS (us-east-1)
Production infrastructure
IaaS Confidential CTRL-001, 003, 004, 006 Compliant
GitHub Enterprise
Source code management
SaaS Internal CTRL-001, 006 Compliant
Okta
Identity provider & SSO
SaaS Confidential CTRL-001, 002 Compliant
Slack
Team communication
SaaS Public CTRL-001 Review
PostgreSQL RDS
Primary database
DBaaS Confidential CTRL-003, 004 Compliant
The Evidence Lifecycle

How Evidence Flows Through the System

Evidence isn't just collected once. It follows a lifecycle from generation to audit review.

Generate
Systems produce logs, configs, and artifacts
Collect
Automated or manual collection into evidence vault
Map
Link evidence to specific controls and criteria
🔍
Review
Control owners verify accuracy and completeness
Validate
Internal audit or readiness assessment checks
🔎
Audit
External auditor examines and tests evidence
Important: Evidence must cover the entire audit period, not just a point in time. An auditor reviewing Jan-Dec 2025 wants to see that MFA was enforced in March just as much as in November. Gaps in evidence coverage = findings.
Watch Out

Common Pitfalls in SOC 2 Programs

These are the mistakes that derail audits, waste months of preparation, and lead to qualified opinions. Many stem from treating SOC 2 as a one-time project rather than an ongoing program.

⚠ Year-Over-Year Carryover Failures

The single most common disaster. Your architecture changed — you migrated from Heroku to AWS, replaced Jenkins with GitHub Actions, or restructured your team — but your controls still reference the old setup. The auditor now has controls that don't match reality.

Mitigation: At the start of each audit period, do a "control refresh." Walk through every control, policy, and system mapping. Update references to match current architecture before the period opens.

⚠ "Ghost" Controls From Prior Years

Controls that existed last year are carried forward into the new period even though the underlying system or process no longer exists. Nobody notices until the auditor asks for evidence of a system that was decommissioned 8 months ago.

Mitigation: Maintain a change log for your control environment. When a system is decommissioned, immediately flag all controls that referenced it and either retire or remap them.

⚠ Policy Version Drift

Policies are updated but the version that was in effect during the audit period is lost. Auditors need to see the policy as it was at the time the control was operating, not the version you updated last week.

Mitigation: Version-control all policies. Maintain effective dates. Never overwrite — always create new versions and preserve the history.

⚠ Evidence Gaps During Transitions

You migrated your monitoring from Datadog to Grafana in June. You have Datadog evidence for Jan-May and Grafana evidence from Aug-Dec. But June-July has nothing because the new system wasn't fully configured yet. That's a finding.

Mitigation: Plan evidence continuity before any migration. Run both systems in parallel during transitions, or document a risk acceptance and compensating control for the gap period.

⚠ Role Assignment Gaps

Someone leaves the company. Their role was "Incident Commander." Nobody formally reassigns the role. For 3 months, the incident response procedure technically has no owner. The auditor spots this as a control failure.

Mitigation: Tie role assignments to your offboarding procedure. When someone exits, immediately reassign all compliance roles they held. Document the transition.

⚠ Scope Creep Without Control Updates

You add a new service, a new database, a new third-party vendor. They process customer data. But nobody updated the system inventory, added controls for the new system, or notified the auditor about the scope change.

Mitigation: Bake compliance review into your architecture review process. No new system goes to production without a SOC 2 impact assessment. Make it a checklist item in your deployment process.

⚠ Confusing Policies with Procedures

Teams write a "policy" that's actually a step-by-step runbook, or write a "procedure" that's just a high-level mandate. Auditors expect clear separation: policies say what and why; procedures say how and when.

Mitigation: Use templates. Policies should have sections for purpose, scope, and mandates. Procedures should have prerequisites, steps, and responsible parties. Review with your auditor early.

⚠ "Point-in-Time" Evidence Syndrome

You collect a screenshot of your firewall rules today and call it evidence for the whole year. But SOC 2 Type II covers a period, not a moment. The auditor wants to know the control was operating consistently across the entire period.

Mitigation: Use automated evidence collection that runs continuously. For manual evidence, establish a cadence (monthly, quarterly) and stick to it. Timestamp everything.

The Carryover Problem, Visualized

Here's what happens when you blindly carry over last year's control environment into a new audit period after your architecture has changed.

🔴 2024 Audit Period (Old Architecture)
CTRL-003: Vuln scanning via Qualys
CTRL-004: Backups to Heroku PGBackups
CTRL-006: CI/CD via Jenkins
CTRL-008: Logging via Papertrail
Incident Commander: D. Wilson
Systems: Heroku, Qualys, Jenkins, Papertrail
🟢 2025 Reality (New Architecture)
CTRL-003: Now using Snyk (Qualys retired)
CTRL-004: Now on AWS RDS snapshots (Heroku gone)
CTRL-006: Now using GitHub Actions (Jenkins gone)
CTRL-008: Now using Datadog (Papertrail gone)
Incident Commander: D. Wilson left — unassigned!
New systems: AWS, Snyk, GitHub Actions, Datadog
The result: If you carry over the 2024 controls as-is into 2025, every single one of these controls now references systems that no longer exist. The auditor will find zero valid evidence because you're looking for Qualys scans when you're actually running Snyk. This is a catastrophic but entirely preventable failure.

What a Healthy Year-Over-Year Transition Looks Like

Instead of a blind carryover, here's the recommended process when starting a new audit period.

1. Architecture Change Log Review

Before the new period starts, review all infrastructure, tooling, and vendor changes from the past year. Catalog what was added, removed, or replaced.

2. Control Refresh & Remapping

Walk through every control. Update system references, tool names, and configuration details. Retire controls for decommissioned systems. Create new controls for new systems.

3. Role & People Reconciliation

Verify all role assignments. Account for departures, new hires, and reorganizations. Ensure every control has a current, valid owner.

4. Policy Version Checkpoint

Confirm all policies are current and reflect the new architecture. Create new versions where needed. Ensure effective dates align with the audit period start.

5. Evidence Pipeline Validation

Test that automated evidence collection works with the new systems. Set up new integrations. Verify that evidence is being generated from day one of the new period.

6. Auditor Communication

Brief your auditor on material changes to the control environment. Discuss any new systems, retired controls, or scope changes before they start fieldwork.

Summary

Key Takeaways

SOC 2 is a system of systems

TSC, controls, policies, procedures, people, roles, systems, and evidence are all interconnected. Weakness in any layer propagates upward and becomes an audit finding.

Evidence is the only thing that matters

You can have the best controls in the world on paper. Without evidence that they're operating effectively over the full audit period, they don't exist to the auditor.

Year-over-year is where programs break

The transition between audit periods is the most dangerous time. Architecture changes, personnel turnover, and tool migrations all create gaps that are easy to miss.

Treat compliance as continuous

SOC 2 Type II isn't a project with a deadline. It's an ongoing program that runs 365 days a year. The audit just checks whether you maintained it consistently.

Build It Yourself

Create Your Own SOC-2 Platform on Visimade

Copy the prompt below and use it to generate a fully functional, interactive SOC-2 compliance management app — complete with data storage, CRUD operations, and all the views shown above.

Prompt Click to expand / collapse
Create →
Make a team_app for SOC-2 management. It should follow this mental model: TSC → Policies → Controls → ...
Create This App on Visimade →