SOC 2 Certification Readiness Checklist
Framework: Excalibur.Dispatch Standard: SOC 2 (Service Organization Control 2) - Trust Services Criteria Categories: Security (CC1-CC9) + Optional (Availability, Processing Integrity, Confidentiality, Privacy) Status: Automated control validation + evidence collection Last Updated: 2026-01-01
Overview
This checklist provides step-by-step guidance for SOC 2 certification preparation using the Excalibur framework. The framework provides automated control validation, evidence collection, and report generation for all Trust Services Criteria.
SOC 2 Scope: Service organizations (SaaS, cloud providers, MSPs) Report Types: Type I (point-in-time) and Type II (period assessment) Compliance Approach: Framework-provided validators + consumer organizational controls
Trust Services Categories
| Category | Criteria | Description | Required? | Framework Support |
|---|---|---|---|---|
| Security | CC1-CC9 | Protection against unauthorized access | YES (always) | ✅ Full |
| Availability | A1-A3 | System uptime and reliability | Optional | ✅ Full |
| Processing Integrity | PI1-PI3 | Data processing accuracy | Optional | ✅ Full |
| Confidentiality | C1-C3 | Protection of confidential data | Optional | ✅ Full |
| Privacy | P1-P8 | Personal information handling | Optional | ⚠️ Partial (see GDPR checklist) |
Recommendation: Start with Security (required) + Availability + Confidentiality for comprehensive cloud service coverage.
Control Mapping Table
Security (Common Criteria) - CC1-CC9
| Criterion | Title | Framework Implementation | Consumer Action | Evidence Location |
|---|---|---|---|---|
| CC1 | Control Environment | N/A | Management commitment, ethics policies | Business process |
| CC2 | Communication | N/A | Communication policies | Business process |
| CC3 | Risk Assessment | N/A | Risk assessment procedures | Business process |
| CC4 | Monitoring Activities | ✅ IAuditLogger (tamper-evident hash chain) | Configure audit logging | docs/security/audit-logging.md |
| CC5 | Control Activities | ✅ [RequirePermission], input validation | Implement authorization | docs/advanced/security.md:15-78 |
| CC6 | Logical Access | ✅ RBAC, encryption, key management | Configure access controls | docs/advanced/security.md |
| CC7 | System Operations | ✅ Health checks, monitoring | Configure OpenTelemetry | docs/advanced/deployment.md:515-570 |
| CC8 | Change Management | ✅ CI/CD pipeline, version control | Review pipeline | .github/workflows/ci.yml |
| CC9 | Risk Mitigation | ✅ Security scanning (SAST, DAST) | Review scan results | GitHub Actions runs |
Availability - A1-A3
| Criterion | Title | Framework Implementation | Consumer Action | Evidence Location |
|---|---|---|---|---|
| A1 | Infrastructure Management | ✅ Health checks, retry policies | Configure health checks | docs/advanced/deployment.md |
| A2 | Capacity Management | ⚠️ Partial | Monitor capacity, scale as needed | Cloud provider docs |
| A3 | Backup & Recovery | ⚠️ Partial | Configure backups | Cloud provider docs |
Processing Integrity - PI1-PI3
| Criterion | Title | Framework Implementation | Consumer Action | Evidence Location |
|---|---|---|---|---|
| PI1 | Input Validation | ✅ IInputValidator, FluentValidation | Validate inputs | docs/advanced/testing.md |
| PI2 | Processing Accuracy | ✅ Outbox pattern, idempotency | Configure outbox | docs/guides/outbox-pattern.md |
| PI3 | Output Completeness | ✅ Event ordering, correlation IDs | Verify telemetry | docs/advanced/deployment.md |
Confidentiality - C1-C3
| Criterion | Title | Framework Implementation | Consumer Action | Evidence Location |
|---|---|---|---|---|
| C1 | Data Classification | ✅ [PersonalData], [Sensitive] attributes | Classify data | docs/security/data-classification.md |
| C2 | Data Protection | ✅ AES-256-GCM encryption | Configure encryption | docs/advanced/security.md:170-213 |
| C3 | Data Disposal | ✅ Cryptographic erasure (IErasureService) | Configure erasure | docs/security/gdpr-compliance.md |
Legend:
- ✅ Framework provides automated validation
- ⚠️ Framework provides tools, consumer configures
- N/A: Organizational control (not technical)
Implementation Checklist
Phase 1: Prerequisites (Week 1)
1.1 Understand SOC 2 Scope
- Determine which Trust Services Categories to pursue (Security + optional)
- Define system boundary (what services are in scope)
- Identify service commitments (uptime SLAs, security promises, etc.)
- Document system description for auditor
Reference: AICPA Trust Services Criteria
1.2 Install Framework Packages
dotnet add package Excalibur.Dispatch.Compliance
1.3 Basic SOC 2 Configuration
Development Setup:
using Excalibur.Dispatch.Compliance;
var builder = WebApplication.CreateBuilder(args);
// Add SOC 2 compliance with built-in validators
builder.Services.AddSoc2ComplianceWithBuiltInValidators(options =>
{
options.EnabledCategories = new[]
{
TrustServicesCategory.Security,
TrustServicesCategory.Availability,
TrustServicesCategory.Confidentiality
};
});
// Add in-memory report store for development
builder.Services.AddInMemorySoc2ReportStore();
- Configure SOC 2 compliance service
- Select Trust Services Categories
- Add in-memory report store for development
Production Setup with Continuous Monitoring:
builder.Services.AddSoc2ComplianceWithMonitoring(options =>
{
options.EnabledCategories = new[]
{
TrustServicesCategory.Security,
TrustServicesCategory.Availability,
TrustServicesCategory.ProcessingIntegrity,
TrustServicesCategory.Confidentiality
};
options.MonitoringInterval = TimeSpan.FromHours(1);
options.AlertThreshold = GapSeverity.Medium;
});
// Add custom alert handler for PagerDuty/Slack/Email integration
builder.Services.AddComplianceAlertHandler<PagerDutyAlertHandler>();
- Configure continuous monitoring (hourly recommended)
- Set alert severity threshold (Medium or High)
- Integrate with incident management (PagerDuty, Slack, etc.)
Phase 2: Security Controls (CC1-CC9) - Week 2-3
2.1 CC4: Monitoring Activities (Audit Logging)
Control Requirement: The entity monitors the system and takes action to remediate identified deficiencies in a timely manner.
Framework Implementation:
IAuditLoggerinterface with tamper-evident hash chain- Structured audit logs with correlation IDs
- Immutable append-only audit trails
Consumer Checklist:
- Inject
IAuditLoggerinto services
Code Example:
using Excalibur.Dispatch.Compliance;
public class UserService
{
private readonly IAuditLogger _auditLogger;
public async Task UpdateUserAsync(User user, CancellationToken ct)
{
// Perform update
await _repository.UpdateAsync(user, ct);
// Audit the action
await _auditLogger.LogAsync(new AuditEvent
{
EventId = Guid.NewGuid().ToString(),
EventType = AuditEventType.DataModification,
Action = "User.Update",
ActorId = _currentUser.Id,
Outcome = AuditOutcome.Success,
Timestamp = DateTimeOffset.UtcNow,
ResourceId = user.Id.ToString(),
ResourceType = "User"
}, ct);
}
}
- Configure audit event types
- Implement
IAuditStorepersistence layer (SQL Server recommended) - Verify hash chain integrity with tests
- Configure RBAC for audit log access
Automated Validation:
// AuditLogControlValidator automatically checks:
// - Audit logging is enabled
// - Hash chain integrity is maintained
// - Retention policies are configured
// - RBAC is enforced for audit access
- Run
AuditLogControlValidatorto verify compliance - Review validation results (4 controls: SEC-004, SEC-005, MON-001, MON-002)
Evidence:
docs/security/audit-logging.md- Audit logging guide- Audit log samples (anonymized)
- Hash chain integrity verification tests
- Conformance test results (AuditStoreConformanceTestKit - 18 tests)
SSP Statement:
"CC4 is satisfied through tamper-evident audit logging using cryptographic hash chains. The framework's
IAuditLoggercaptures all security-relevant events with correlation IDs, timestamps, and outcomes. Audit logs are append-only with RBAC access controls."
2.2 CC5: Control Activities (Authorization + Input Validation)
Control Requirement: The entity identifies and develops control activities that contribute to the mitigation of risks.
Framework Implementation:
[RequirePermission]attribute for declarative authorizationIInputValidatorfor input validation- FluentValidation integration
Consumer Checklist:
- Apply
[RequirePermission]to protected operations
Authorization Example:
using Excalibur.A3.Authorization;
[RequirePermission("users.delete")]
public class DeleteUserAction : IDispatchAction
{
public Guid UserId { get; set; }
}
// Authorization middleware enforces permission check
- Implement input validation for all commands
Validation Example:
using FluentValidation;
public class CreateUserCommandValidator : AbstractValidator<CreateUserCommand>
{
public CreateUserCommandValidator()
{
RuleFor(x => x.Email)
.NotEmpty()
.EmailAddress();
RuleFor(x => x.Password)
.NotEmpty()
.MinimumLength(12)
.Matches(@"[A-Z]").WithMessage("Password must contain uppercase")
.Matches(@"[a-z]").WithMessage("Password must contain lowercase")
.Matches(@"[0-9]").WithMessage("Password must contain digit");
}
}
- Test authorization enforcement (unit + integration tests)
- Test input validation (reject invalid inputs)
Evidence:
docs/advanced/security.md:15-78- Authorization guide- Unit tests for authorization and validation
- Code review evidence (authorization applied to sensitive operations)
SSP Statement:
"CC5 is satisfied through declarative authorization (
[RequirePermission]) and comprehensive input validation (FluentValidation). All protected operations require explicit permissions, and all user inputs are validated before processing."
2.3 CC6: Logical Access (Encryption + Key Management)
Control Requirement: The entity restricts logical access through the use of access control software and supporting utilities.
Framework Implementation:
IEncryptionProviderabstraction for pluggable encryption- AES-256-GCM encryption at rest
- TLS 1.2+ encryption in transit
- Key rotation support
Consumer Checklist:
- Configure encryption provider (Azure Key Vault, AWS KMS, etc.)
Code Example:
using Excalibur.Dispatch.Compliance;
services.AddEncryption(encryption => encryption
.UseKeyManagement<AesGcmEncryptionProvider>("aes-gcm-primary")
.ConfigureOptions(options => options.DefaultPurpose = "field-encryption"));
// Annotate sensitive fields
public class User
{
public Guid Id { get; set; }
[PersonalData] // Automatically encrypted at rest
public string Email { get; set; }
[PersonalData]
public string PhoneNumber { get; set; }
}
- Annotate sensitive fields with
[PersonalData] - Verify encryption at rest (inspect database)
- Configure TLS 1.2+ for all HTTP endpoints
- Document key rotation procedures
Automated Validation:
// EncryptionControlValidator automatically checks:
// - Encryption at rest is enabled (AES-256-GCM)
// - Key management is configured
// - Key rotation policies are active
- Run
EncryptionControlValidatorto verify compliance - Review validation results (4 controls: SEC-001, SEC-002, SEC-003, CNF-001)
Evidence:
docs/advanced/security.md:170-213- Encryption guide- Encryption verification tests
- Key management procedures
- TLS configuration (testssl.sh scan results)
SSP Statement:
"CC6 is satisfied through AES-256-GCM encryption at rest and TLS 1.2+ encryption in transit. The framework's
IEncryptionProviderintegrates with Azure Key Vault for centralized key management with automated rotation."
2.4 CC7: System Operations (Health Checks + Monitoring)
Control Requirement: The entity manages the operational activities of the system to meet the entity's objectives.
Framework Implementation:
- OpenTelemetry integration for distributed tracing
- Health check endpoints
- Structured logging with correlation IDs
Consumer Checklist:
- Configure OpenTelemetry exporter (Application Insights, Jaeger, etc.)
Code Example:
using OpenTelemetry.Trace;
using OpenTelemetry.Metrics;
services.AddOpenTelemetry()
.WithTracing(builder => builder
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddApplicationInsightsExporter(options =>
{
options.ConnectionString = Configuration["ApplicationInsights:ConnectionString"];
}))
.WithMetrics(builder => builder
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddApplicationInsightsExporter());
// Health checks
services.AddHealthChecks()
.AddSqlServer(connectionString)
.AddRedis(redisConnectionString);
app.MapHealthChecks("/health");
- Set up alerts for failed health checks
- Configure log aggregation (ELK stack, Splunk, etc.)
- Implement runbooks for common incidents
Evidence:
docs/advanced/deployment.md:515-570- Monitoring guide- OpenTelemetry configuration
- Health check endpoint verification
- Alert rules and runbooks
SSP Statement:
"CC7 is satisfied through OpenTelemetry integration for distributed tracing and metrics. Health check endpoints monitor system availability. Structured logging with correlation IDs enables incident investigation."
2.5 CC8: Change Management (CI/CD Pipeline)
Control Requirement: The entity implements change management processes to manage changes to the system.
Framework Implementation:
- Comprehensive CI/CD pipeline with quality gates
- Automated testing (unit, integration, functional)
- Security scanning (SAST, DAST, container, secrets)
- SBOM generation on every build
Consumer Checklist:
- Review CI/CD pipeline configuration
Pipeline Stages:
# .github/workflows/ci.yml
jobs:
build:
- Checkout code
- Setup .NET 9.0
- Restore dependencies
- Build solution
- Run unit tests
- Upload coverage (≥60% enforced)
security-sast:
- CodeQL analysis (SAST)
- Dependency vulnerability scan
- Secrets scanning (Gitleaks)
security-dast:
- ZAP baseline scan (DAST)
- API security testing
container-scan:
- Trivy container scan
- Critical vulnerability blocking
sbom-generation:
- CycloneDX SBOM generation
- Upload artifacts (90-day retention)
- Verify all quality gates pass (GitHub Actions workflow runs)
- Review deployment approval workflow
- Document rollback procedures
Evidence:
.github/workflows/ci.yml- CI/CD pipeline- GitHub Actions workflow runs (90-day audit trail)
- Deployment logs
- Rollback documentation
SSP Statement:
"CC8 is satisfied through a comprehensive CI/CD pipeline with automated quality gates. Every code change undergoes unit tests, security scans (SAST, DAST, container), and dependency vulnerability checks before deployment. SBOM artifacts provide supply chain transparency."
2.6 CC9: Risk Mitigation (Security Scanning)
Control Requirement: The entity identifies, assesses, and manages risks associated with the system.
Framework Implementation:
- SAST (CodeQL)
- DAST (OWASP ZAP)
- Container scanning (Trivy)
- Secrets scanning (Gitleaks)
- Dependency vulnerability scanning
Consumer Checklist:
- Review security scan results from CI/CD pipeline
- Verify CRITICAL vulnerabilities block deployment
- Document remediation procedures
- Test incident response (tabletop exercises)
Evidence:
- Security scan reports (SARIF, JSON)
- Vulnerability remediation tracking
- Incident response plan
- Tabletop exercise documentation
SSP Statement:
"CC9 is satisfied through comprehensive security scanning in the CI/CD pipeline. SAST, DAST, container scanning, and dependency vulnerability checks run on every build. CRITICAL vulnerabilities block deployment until remediated."
Phase 3: Availability Controls (A1-A3) - Week 4
3.1 A1: Infrastructure Management (Health Checks + Retry Policies)
Control Requirement: The entity maintains, monitors, and evaluates current processing capacity and use of system components.
Framework Implementation:
- Health check endpoints
- Retry policies (Polly)
- Circuit breakers
Consumer Checklist:
- Configure health checks for all dependencies
- Implement retry policies with exponential backoff
Code Example:
// Health checks
services.AddHealthChecks()
.AddSqlServer(connectionString)
.AddRedis(redisConnectionString)
.AddAzureKeyVault(keyVaultUri);
// Retry policies
services.AddHttpClient("ExternalAPI")
.AddPolicyHandler(Policy
.HandleResult<HttpResponseMessage>(r => !r.IsSuccessStatusCode)
.WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))));
- Test health check failures (simulate dependency outage)
- Test retry policies (verify exponential backoff)
Automated Validation:
// AvailabilityControlValidator automatically checks:
// - Health checks are configured
// - Retry policies are in place
// - Backup configurations exist
- Run
AvailabilityControlValidatorto verify compliance - Review validation results (3 controls: AVL-001, AVL-002, AVL-003)
Evidence:
- Health check configuration
- Retry policy tests
- Uptime monitoring dashboards
SSP Statement:
"A1 is satisfied through comprehensive health checks for all system dependencies. Retry policies with exponential backoff handle transient failures. Circuit breakers prevent cascading failures."
3.2 A2: Capacity Management
Control Requirement: The entity monitors system components and resource utilization to enable the implementation of additional capacity to help meet its objectives.
Consumer Checklist:
- Configure auto-scaling (Azure App Service, AWS ECS, Kubernetes HPA)
- Set up capacity monitoring (CPU, memory, network, disk)
- Define scaling thresholds (e.g., scale out at 70% CPU)
- Test scaling under load (load testing with k6, JMeter, Gatling)
Evidence:
- Auto-scaling configuration
- Capacity monitoring dashboards
- Load test results
- Scaling event logs
SSP Statement:
"A2 is satisfied through auto-scaling based on CPU and memory utilization. Azure App Service scales out when CPU exceeds 70% for 5 minutes. Load testing validates scaling behavior under peak load."
3.3 A3: Backup & Recovery
Control Requirement: The entity maintains data backup and recovery procedures to meet its objectives.
Consumer Checklist:
- Configure automated backups (SQL Server, Azure Storage, AWS S3)
- Define RPO (Recovery Point Objective) and RTO (Recovery Time Objective)
- Test backup restoration (quarterly recommended)
- Document disaster recovery procedures
Evidence:
- Backup configuration
- Backup verification logs
- Disaster recovery plan
- Recovery test results
SSP Statement:
"A3 is satisfied through automated daily backups with 30-day retention. SQL Server backups are replicated to geo-redundant storage. RPO is 24 hours, RTO is 4 hours. Quarterly backup restoration tests verify recoverability."
Phase 4: Processing Integrity Controls (PI1-PI3) - Week 5
4.1 PI1: Input Validation
Control Requirement: Inputs are complete, accurate, and valid for processing.
Framework Implementation:
IInputValidatorinterface- FluentValidation integration
- Automatic validation in pipeline
Consumer Checklist:
- Implement validators for all actions
Code Example:
public class CreateOrderActionValidator : AbstractValidator<CreateOrderAction>
{
public CreateOrderCommandValidator()
{
RuleFor(x => x.CustomerId)
.NotEmpty().WithMessage("CustomerId is required");
RuleFor(x => x.Items)
.NotEmpty().WithMessage("Order must contain at least one item");
RuleFor(x => x.Total)
.GreaterThan(0).WithMessage("Total must be positive");
}
}
- Test validation (reject invalid inputs)
- Verify validation errors are logged
Automated Validation:
// ProcessingIntegrityControlValidator automatically checks:
// - Input validation is enabled
// - FluentValidation is configured
- Run
ProcessingIntegrityControlValidatorto verify compliance
Evidence:
- Validator implementations
- Validation test results
- Error logs (invalid input rejections)
SSP Statement:
"PI1 is satisfied through comprehensive input validation using FluentValidation. All commands are validated before processing. Invalid inputs are rejected with descriptive error messages."
4.2 PI2: Processing Accuracy (Outbox Pattern + Idempotency)
Control Requirement: Processing is complete, accurate, and timely.
Framework Implementation:
- Outbox pattern for reliable messaging
- Idempotency keys for duplicate prevention
- Correlation IDs for traceability
Consumer Checklist:
- Configure outbox pattern for all published events
Code Example:
services.AddOutbox(options =>
{
options.PublishingInterval = TimeSpan.FromSeconds(5);
options.MaxRetryAttempts = 3;
options.BatchSize = 100;
});
// Idempotency
public class ProcessPaymentCommand : ICommand
{
[IdempotencyKey]
public Guid PaymentId { get; set; } // Duplicate prevention
}
- Test duplicate message handling (verify idempotency)
- Test outbox retry logic
Evidence:
- Outbox configuration
- Idempotency tests
- Correlation ID tracing
SSP Statement:
"PI2 is satisfied through the outbox pattern for reliable message publishing. Idempotency keys prevent duplicate processing. Correlation IDs enable end-to-end traceability."
4.3 PI3: Output Completeness (Event Ordering + Correlation IDs)
Control Requirement: Outputs are complete, accurate, and timely.
Framework Implementation:
- Event ordering guarantees
- Correlation IDs for request tracing
- OpenTelemetry distributed tracing
Consumer Checklist:
- Verify event ordering in integration tests
- Configure correlation ID propagation
- Test end-to-end tracing
Evidence:
- Event ordering tests
- Distributed tracing examples
- Correlation ID propagation verification
SSP Statement:
"PI3 is satisfied through guaranteed event ordering within aggregates. Correlation IDs propagate through all service calls. OpenTelemetry distributed tracing validates end-to-end processing."
Phase 5: Confidentiality Controls (C1-C3) - Week 6
5.1 C1: Data Classification
Control Requirement: Information designated as confidential is identified and classified.
Framework Implementation:
[PersonalData]attribute for personal data[Sensitive]attribute for confidential data- Automatic discovery for data inventory
Consumer Checklist:
- Annotate all confidential fields with
[PersonalData]or[Sensitive]
Code Example:
public class CreditCard
{
public Guid Id { get; set; }
[PersonalData]
[Sensitive]
public string CardNumber { get; set; } // PII + confidential
[PersonalData]
[Sensitive]
public string CVV { get; set; }
public DateTime ExpirationDate { get; set; } // NOT sensitive
}
- Generate data classification report
- Review classification with security team
Automated Validation:
// ConfidentialityControlValidator automatically checks:
// - Data classification is enabled
// - [Sensitive] attributes are used
// - [PersonalData] attributes are used
- Run
ConfidentialityControlValidatorto verify compliance
Evidence:
- Data classification report
- Annotated source code
- Classification review documentation
SSP Statement:
"C1 is satisfied through attribute-based data classification. All confidential fields are annotated with
[PersonalData]or[Sensitive]attributes. Automatic discovery generates a comprehensive data inventory."
5.2 C2: Data Protection (Encryption)
Control Requirement: Procedures exist to protect information designated as confidential from unauthorized access.
Framework Implementation:
- Field-level encryption for
[PersonalData]and[Sensitive]fields - AES-256-GCM encryption
- Integration with Azure Key Vault / AWS KMS
Consumer Checklist:
- Verify encryption at rest (see CC6 above)
- Test access control (unauthorized users cannot decrypt)
Evidence:
- Encryption verification tests (see CC6)
- Access control tests
SSP Statement:
"C2 is satisfied through field-level encryption using AES-256-GCM. All
[PersonalData]and[Sensitive]fields are automatically encrypted at rest. Access control prevents unauthorized decryption."
5.3 C3: Data Disposal (Cryptographic Erasure)
Control Requirement: Information designated as confidential is disposed of in accordance with the entity's objectives.
Framework Implementation:
IErasureServicefor GDPR-compliant erasure- Cryptographic erasure (key deletion)
- Erasure certificates for compliance proof
Consumer Checklist:
- Configure erasure service (see GDPR checklist)
- Test erasure workflow (request → execution → certificate)
Evidence:
- Erasure configuration
- Erasure certificates
- Conformance test results (ErasureStoreConformanceTestKit - 24 tests)
SSP Statement:
"C3 is satisfied through cryptographic erasure using the
IErasureService. Deletion of encryption keys renders confidential data irrecoverable. Erasure certificates provide cryptographic proof of disposal."
Report Generation
Type I Report (Point-in-Time)
When to Use:
- Initial SOC 2 certification
- Quarterly compliance check
- Pre-sales requirements
Consumer Checklist:
- Generate Type I report
Code Example:
var options = new ReportOptions
{
CustomTitle = "Acme Corp - Dispatch Message Processing Platform",
Categories =
[
TrustServicesCategory.Security,
TrustServicesCategory.Availability,
TrustServicesCategory.Confidentiality
],
IncludeDetailedEvidence = true,
IncludeManagementAssertion = true
};
var report = await _complianceService.GenerateTypeIReportAsync(
DateTimeOffset.UtcNow,
options,
cancellationToken);
// Export for auditor (via ISoc2AuditExporter sub-interface)
var exporter = (ISoc2AuditExporter)_complianceService.GetService(typeof(ISoc2AuditExporter))!;
var pdf = await exporter.ExportForAuditorAsync(
ExportFormat.Pdf,
DateTimeOffset.UtcNow.AddMonths(-1),
DateTimeOffset.UtcNow,
cancellationToken);
- Review report sections (management assertion, control design, evidence)
- Export report (JSON, CSV, Excel, PDF)
- Provide to auditor for Type I assessment
Type II Report (Period Assessment)
When to Use:
- Annual SOC 2 audit
- Operating effectiveness demonstration
- Customer due diligence
Consumer Checklist:
- Generate Type II report (typically 6-12 month period)
Code Example:
var report = await _complianceService.GenerateTypeIIReportAsync(
periodStart: new DateTimeOffset(2025, 1, 1, 0, 0, 0, TimeSpan.Zero),
periodEnd: new DateTimeOffset(2025, 12, 31, 23, 59, 59, TimeSpan.Zero),
options,
cancellationToken);
- Review test results (operating effectiveness over period)
- Document any exceptions or findings
- Provide to auditor for Type II assessment
Consumer Responsibilities
Framework Provides:
- Automated control validation (6 validators: Encryption, Audit, Availability, ProcessingIntegrity, Confidentiality, Privacy)
- Evidence collection from audit logs and system state
- Type I and Type II report generation
- Export formats for auditors (JSON, CSV, Excel, PDF)
Consumer Must Implement:
- Organizational controls (CC1, CC2, CC3)
- Management commitment and ethics policies
- Risk assessment procedures
- Change management approvals
- Backup and disaster recovery testing
- Security awareness training
- Vendor management
- Physical security
Compliance Verification
Pre-Certification Testing
Week 7: Automated Validation
- Run all built-in validators:
EncryptionControlValidator(4 controls)AuditLogControlValidator(4 controls)AvailabilityControlValidator(3 controls)ProcessingIntegrityControlValidator(3 controls)ConfidentialityControlValidator(3 controls)
- Review validation results (all controls should be EFFECTIVE)
- Document any gaps and remediate
Week 8: Evidence Collection
- Generate Type I report (point-in-time)
- Review evidence completeness:
- Audit logs (sample)
- Encryption configuration
- Access control policies
- Monitoring dashboards
- CI/CD pipeline runs
- Security scan results
- Export evidence package for auditor
Week 9: External Audit Preparation
- Select SOC 2 auditor (CPA firm)
- Schedule kickoff meeting
- Provide system description and scope
- Provide Type I report and evidence
- Respond to auditor questions
- Remediate any findings
Type I Assessment (8-12 weeks)
- Auditor reviews control design
- Auditor tests control implementation
- Auditor issues Type I report (unqualified opinion = success)
Type II Assessment (6-12 months later)
- Operate controls for review period (typically 6-12 months)
- Generate Type II report (period assessment)
- Auditor tests operating effectiveness
- Auditor issues Type II report
Evidence References
Primary Evidence
Framework Implementation:
docs/security/soc2-compliance.md- SOC 2 guide (500+ lines)docs/advanced/security.md- Security capabilitiesdocs/security/audit-logging.md- Audit logging guide
Automated Validation:
- Built-in validators (6 validators, 17+ controls)
- Conformance test kits (80 tests: Audit, Erasure, LegalHold, DataInventory)
Evidence Artifacts:
- Audit log samples
- Encryption configuration
- Health check results
- CI/CD pipeline runs (90-day retention)
- Security scan reports (SAST, DAST, container)
- SBOM artifacts
Supporting Documentation
Standards:
Framework Documentation:
Continuous Compliance
Automated Monitoring
Hourly (Recommended):
- Control validation (all 17+ controls)
- Gap detection (severity threshold: Medium)
- Alerting (PagerDuty, Slack, email)
Daily:
- Audit log integrity verification
- Encryption key rotation status
- Health check status
- Backup verification
Weekly:
- Security scan results review
- Vulnerability remediation tracking
- Incident review
Monthly:
- Compliance status report
- Gap remediation review
- Evidence collection
Contact
Questions:
- Product Manager: SOC 2 scope, service commitments
- Software Architect: Technical controls, automation
- Project Manager: Audit coordination, evidence package
Escalation:
- Control failures: See incident response procedures
- Compliance gaps: Create GitHub issue with
compliancelabel - Audit requests: Contact Project Manager for evidence package
See Also
- Compliance Checklists - All compliance checklists overview
- Audit Logging - Tamper-evident audit logging with hash chain integrity
- Security Overview - Security architecture and threat model
Last Updated: 2026-01-01 Next Review: 2026-04-01 Status: SOC 2 checklist COMPLETE ✅