Automate evidence gathering for SOC2 Type I and Type II audits across all 5 Trust Service Criteria.
Gather these from the user before generating:
EvidenceSourceCollection MethodOrg chart with security rolesHR system / ConfluenceManual export quarterlySecurity policy documentsPolicy repo / wikiGit log showing annual reviewCode of conduct acknowledgmentsHR systemExport signed acknowledgmentsBoard/management meeting minutes on securityCalendar + notesScreenshot + agenda exportRisk assessment documentationGRC tool / spreadsheetExport current risk register
EvidenceSourceCollection MethodSecurity awareness training recordsLMS / training platformCompletion report exportOnboarding security checklistHR systemTemplate + completion logsIncident communication proceduresRunbook / wikiVersion-controlled doc with review historyExternal communication policiesPolicy repoGit log + approval records
EvidenceSourceCollection MethodAnnual risk assessment reportGRC toolPDF export with sign-offVendor risk assessmentsVendor management toolExport assessment recordsPenetration test reportsSecurity vendorPDF reports with remediation trackingVulnerability scan resultsScanner (Qualys, Nessus, etc.)Automated export, monthly
EvidenceSourceCollection MethodSIEM dashboards and alert configsDatadog / Splunk / CloudWatchScreenshot + config exportUptime monitoring evidencePingdom / Datadog / UptimeRobotMonthly uptime reportsLog retention configurationCloud provider consoleConfig export / IaC snippetAnomaly detection rulesSIEM / monitoring toolRule export with change log
EvidenceSourceCollection MethodAccess control matrixIdP / IAM consoleExport user-role mappingsMFA enforcement evidenceIdP admin consolePolicy config screenshotFirewall / security group rulesCloud console / IaCterraform state or console exportEncryption at rest configurationCloud console / IaCConfig export showing encryption enabledEncryption in transit (TLS)Load balancer / CDN configCertificate + config export
EvidenceSourceCollection MethodUser access reviews (quarterly)IdP + spreadsheetReview meeting notes + updated access listTerminated user deprovisioningIdP audit logExport showing timely deactivationSSH key / credential rotation logsSecrets managerRotation event logsPhysical access logs (if applicable)Building managementBadge access reports
EvidenceSourceCollection MethodChange management recordsJira / GitHub PRsExport merged PRs with approvalsCI/CD pipeline configurationGitHub Actions / CircleCIConfig file export from repoDeployment approval processPR review settingsBranch protection rule screenshotsIncident response logsPagerDuty / OpsgenieIncident timeline exportsBackup configuration and test resultsCloud console / IaCBackup policy + restore test logs
EvidenceSourceCollection MethodPR review requirementsGitHub / GitLab settingsBranch protection configCode review evidenceGitHub PR historyExport PRs with review commentsRelease notes / changelogsRepoCHANGELOG.md with version historyRollback proceduresRunbookDocumented procedure with test evidence
EvidenceSourceCollection MethodBusiness continuity planPolicy repoDocument with annual review evidenceDisaster recovery test resultsDR runbookTest execution logs + resultsInsurance certificatesFinance / legalCurrent certificate copiesSub-processor agreementsLegal / contract managementSigned DPAs + vendor list
EvidenceSourceCollection MethodSLA definitions and monitoringProduct docs + monitoringSLA doc + uptime dashboard exportsCapacity planning documentationArchitecture docsQuarterly capacity review notesAuto-scaling configurationCloud console / IaCConfig exportIncident response SLA adherencePagerDuty / incident trackerResponse time reportsRedundancy / failover configurationCloud architectureArchitecture diagram + failover test logs
EvidenceSourceCollection MethodData validation rulesApplication code / configCode snippets + test resultsQA / testing proceduresCI/CD pipelineTest suite config + pass/fail reportsError handling and correction proceduresRunbook / codeError handling docs + incident examplesData reconciliation reportsApplication logs / reportsMonthly reconciliation output
EvidenceSourceCollection MethodData classification policyPolicy repoDocument with review historyNDA / confidentiality agreementsLegal / HRSigned agreement copiesData retention and disposal policyPolicy repoPolicy doc + disposal logsDLP tool configurationDLP tool adminConfig export + alert samples
EvidenceSourceCollection MethodPrivacy policy (public)WebsiteURL + version historyData processing agreementsLegalSigned DPAsConsent management recordsCMP / applicationConsent log exportsData subject request proceduresPolicy repo / ticketingProcedure doc + DSR ticket samplesPrivacy impact assessmentsGRC tool / docsPIA reports for high-risk processing
When the user's stack is identified, generate shell scripts for automated evidence collection:
bash
#!/bin/bash
# SOC2 Evidence Collector — AWS
# Generated by AfrexAI SOC2 Evidence Collector skill
set -euo pipefail
EVIDENCE_DIR="soc2-evidence/$(date +%Y-%m-%d)"
mkdir -p "$EVIDENCE_DIR"/{iam,network,encryption,logging,compute}
echo "=== CC5: Access Controls ==="
aws iam get-account-summary > "$EVIDENCE_DIR/iam/account-summary.json"
aws iam generate-credential-report && sleep 5
aws iam get-credential-report --output text --query Content | base64 -d > "$EVIDENCE_DIR/iam/credential-report.csv"
aws iam list-users --output json > "$EVIDENCE_DIR/iam/users.json"
aws iam list-policies --scope Local --output json > "$EVIDENCE_DIR/iam/custom-policies.json"
echo "=== CC5: Encryption at Rest ==="
aws rds describe-db-instances --query 'DBInstances[*].{ID:DBInstanceIdentifier,Encrypted:StorageEncrypted,KmsKey:KmsKeyId}' > "$EVIDENCE_DIR/encryption/rds-encryption.json"
aws s3api list-buckets --query 'Buckets[*].Name' --output text | tr '\t' '\n' | while read bucket; do
aws s3api get-bucket-encryption --bucket "$bucket" >> "$EVIDENCE_DIR/encryption/s3-encryption.json" 2>/dev/null || echo "{\"bucket\":\"$bucket\",\"encryption\":\"NONE\"}" >> "$EVIDENCE_DIR/encryption/s3-encryption.json"
done
echo "=== CC4: Logging ==="
aws cloudtrail describe-trails > "$EVIDENCE_DIR/logging/cloudtrail-config.json"
aws cloudwatch describe-alarms --state-value ALARM > "$EVIDENCE_DIR/logging/active-alarms.json"
echo "=== CC5: Network Security ==="
aws ec2 describe-security-groups > "$EVIDENCE_DIR/network/security-groups.json"
aws ec2 describe-vpcs > "$EVIDENCE_DIR/network/vpcs.json"
echo "=== CC6: MFA Status ==="
aws iam list-virtual-mfa-devices > "$EVIDENCE_DIR/iam/mfa-devices.json"
echo "Evidence collected in $EVIDENCE_DIR"
echo "Review and redact sensitive values before sharing with auditors."
bash
#!/bin/bash
# SOC2 Evidence Collector — GitHub
set -euo pipefail
ORG="${1:?Usage: $0 <github-org>}"
EVIDENCE_DIR="soc2-evidence/$(date +%Y-%m-%d)/github"
mkdir -p "$EVIDENCE_DIR"
echo "=== CC8: Branch Protection ==="
gh api "/orgs/$ORG/repos" --paginate --jq '.[].name' | while read repo; do
gh api "/repos/$ORG/$repo/branches/main/protection" 2>/dev/null > "$EVIDENCE_DIR/${repo}-branch-protection.json" || true
done
echo "=== CC7: Recent Deployments ==="
gh api "/orgs/$ORG/repos" --paginate --jq '.[].name' | head -10 | while read repo; do
gh api "/repos/$ORG/$repo/deployments?per_page=10" > "$EVIDENCE_DIR/${repo}-deployments.json" 2>/dev/null || true
done
echo "=== CC8: PR Review Evidence ==="
gh api "/orgs/$ORG/repos" --paginate --jq '.[].name' | head -10 | while read repo; do
gh pr list --repo "$ORG/$repo" --state merged --limit 20 --json number,title,mergedAt,reviewDecision > "$EVIDENCE_DIR/${repo}-merged-prs.json" 2>/dev/null || true
done
echo "=== CC5: Org Security Settings ==="
gh api "/orgs/$ORG" --jq '{two_factor_requirement: .two_factor_requirement_enabled, default_permissions: .default_repository_permission}' > "$EVIDENCE_DIR/org-security.json"
echo "Evidence collected in $EVIDENCE_DIR"
Generate a structured evidence package:
text
soc2-evidence/
├── README.md # Overview, scope, period, auditor info
├── evidence-matrix.md # Full checklist with status (collected/pending/N-A)
├── collection-scripts/
│ ├── collect-aws.sh
│ ├── collect-github.sh
│ ├── collect-idp.sh
│ └── collect-monitoring.sh
├── gap-analysis.md # Missing evidence + remediation steps
└── schedule.md # Evidence collection calendar (what to refresh when)
markdown
| # | Control | Evidence | Status | Source | Last Collected | Notes |
|---|---------|----------|--------|--------|---------------|-------|
| CC1.1 | Org chart | org-chart-2026-Q1.pdf | ✅ Collected | HR export | 2026-01-15 | |
| CC5.3 | MFA enforcement | mfa-config.json | ✅ Automated | IdP API | 2026-03-17 | Script: collect-idp.sh |
| CC3.2 | Pen test report | — | ⏳ Pending | External vendor | — | Due 2026-04-01 |
This skill generates the framework and automation scaffolding. For hands-on SOC2 audit preparation with managed AI agents handling continuous evidence collection, monitoring, and auditor coordination — that's what AfrexAI's AI-as-a-Service delivers. Contact us at hello@afrexai.com.