@open-agreements/open-agreements 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +30 -0
  2. package/content/templates/closing-checklist/template.docx +0 -0
  3. package/content/templates/common-paper-ai-addendum/README.md +18 -0
  4. package/content/templates/common-paper-ai-addendum/metadata.yaml +136 -0
  5. package/content/templates/common-paper-ai-addendum/replacements.json +5 -0
  6. package/content/templates/common-paper-ai-addendum/selections.json +62 -0
  7. package/content/templates/common-paper-ai-addendum/template.docx +0 -0
  8. package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +88 -0
  9. package/content/templates/common-paper-ai-addendum-in-app/replacements.json +5 -0
  10. package/content/templates/common-paper-ai-addendum-in-app/selections.json +62 -0
  11. package/content/templates/common-paper-amendment/README.md +18 -0
  12. package/content/templates/common-paper-amendment/metadata.yaml +48 -0
  13. package/content/templates/common-paper-amendment/template.docx +0 -0
  14. package/content/templates/common-paper-business-associate-agreement/README.md +20 -1
  15. package/content/templates/common-paper-business-associate-agreement/metadata.yaml +111 -3
  16. package/content/templates/common-paper-business-associate-agreement/replacements.json +2 -1
  17. package/content/templates/common-paper-business-associate-agreement/selections.json +38 -0
  18. package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
  19. package/content/templates/common-paper-cloud-service-agreement/README.md +18 -0
  20. package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +48 -0
  21. package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
  22. package/content/templates/common-paper-csa-with-ai/README.md +18 -0
  23. package/content/templates/common-paper-csa-with-ai/metadata.yaml +462 -2
  24. package/content/templates/common-paper-csa-with-ai/replacements.json +5 -2
  25. package/content/templates/common-paper-csa-with-ai/selections.json +291 -0
  26. package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
  27. package/content/templates/common-paper-csa-with-sla/README.md +18 -0
  28. package/content/templates/common-paper-csa-with-sla/metadata.yaml +387 -2
  29. package/content/templates/common-paper-csa-with-sla/replacements.json +4 -2
  30. package/content/templates/common-paper-csa-with-sla/selections.json +257 -0
  31. package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
  32. package/content/templates/common-paper-csa-without-sla/README.md +18 -0
  33. package/content/templates/common-paper-csa-without-sla/metadata.yaml +380 -2
  34. package/content/templates/common-paper-csa-without-sla/replacements.json +5 -2
  35. package/content/templates/common-paper-csa-without-sla/selections.json +250 -0
  36. package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
  37. package/content/templates/common-paper-data-processing-agreement/README.md +16 -0
  38. package/content/templates/common-paper-data-processing-agreement/metadata.yaml +397 -3
  39. package/content/templates/common-paper-data-processing-agreement/replacements.json +2 -1
  40. package/content/templates/common-paper-data-processing-agreement/selections.json +211 -0
  41. package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
  42. package/content/templates/common-paper-design-partner-agreement/README.md +18 -0
  43. package/content/templates/common-paper-design-partner-agreement/metadata.yaml +99 -3
  44. package/content/templates/common-paper-design-partner-agreement/selections.json +27 -0
  45. package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
  46. package/content/templates/common-paper-independent-contractor-agreement/README.md +18 -0
  47. package/content/templates/common-paper-independent-contractor-agreement/clean.json +8 -0
  48. package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +52 -0
  49. package/content/templates/common-paper-independent-contractor-agreement/replacements.json +3 -0
  50. package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  51. package/content/templates/common-paper-letter-of-intent/README.md +18 -0
  52. package/content/templates/common-paper-letter-of-intent/metadata.yaml +48 -0
  53. package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
  54. package/content/templates/common-paper-mutual-nda/README.md +29 -7
  55. package/content/templates/common-paper-mutual-nda/metadata.yaml +48 -0
  56. package/content/templates/common-paper-mutual-nda/template.docx +0 -0
  57. package/content/templates/common-paper-one-way-nda/README.md +13 -0
  58. package/content/templates/common-paper-one-way-nda/metadata.yaml +24 -0
  59. package/content/templates/common-paper-one-way-nda/selections.json +38 -0
  60. package/content/templates/common-paper-one-way-nda/template.docx +0 -0
  61. package/content/templates/common-paper-order-form/README.md +18 -0
  62. package/content/templates/common-paper-order-form/metadata.yaml +115 -3
  63. package/content/templates/common-paper-order-form/replacements.json +5 -2
  64. package/content/templates/common-paper-order-form/selections.json +56 -0
  65. package/content/templates/common-paper-order-form/template.docx +0 -0
  66. package/content/templates/common-paper-order-form-with-sla/README.md +18 -0
  67. package/content/templates/common-paper-order-form-with-sla/metadata.yaml +149 -3
  68. package/content/templates/common-paper-order-form-with-sla/replacements.json +6 -2
  69. package/content/templates/common-paper-order-form-with-sla/selections.json +64 -0
  70. package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
  71. package/content/templates/common-paper-partnership-agreement/README.md +18 -0
  72. package/content/templates/common-paper-partnership-agreement/metadata.yaml +293 -4
  73. package/content/templates/common-paper-partnership-agreement/replacements.json +5 -2
  74. package/content/templates/common-paper-partnership-agreement/selections.json +138 -0
  75. package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
  76. package/content/templates/common-paper-pilot-agreement/README.md +18 -0
  77. package/content/templates/common-paper-pilot-agreement/metadata.yaml +48 -0
  78. package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
  79. package/content/templates/common-paper-professional-services-agreement/README.md +18 -0
  80. package/content/templates/common-paper-professional-services-agreement/metadata.yaml +338 -4
  81. package/content/templates/common-paper-professional-services-agreement/replacements.json +7 -4
  82. package/content/templates/common-paper-professional-services-agreement/selections.json +207 -0
  83. package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
  84. package/content/templates/common-paper-statement-of-work/README.md +18 -0
  85. package/content/templates/common-paper-statement-of-work/metadata.yaml +110 -2
  86. package/content/templates/common-paper-statement-of-work/replacements.json +4 -1
  87. package/content/templates/common-paper-statement-of-work/selections.json +55 -0
  88. package/content/templates/common-paper-statement-of-work/template.docx +0 -0
  89. package/content/templates/common-paper-term-sheet/README.md +18 -0
  90. package/content/templates/common-paper-term-sheet/metadata.yaml +48 -0
  91. package/content/templates/common-paper-term-sheet/template.docx +0 -0
  92. package/content/templates/working-group-list/template.docx +0 -0
  93. package/dist/commands/checklist.d.ts.map +1 -1
  94. package/dist/commands/checklist.js +2 -1
  95. package/dist/commands/checklist.js.map +1 -1
  96. package/dist/commands/list.d.ts.map +1 -1
  97. package/dist/commands/list.js +1 -46
  98. package/dist/commands/list.js.map +1 -1
  99. package/dist/core/checklist/format-checklist-docx.d.ts +10 -0
  100. package/dist/core/checklist/format-checklist-docx.d.ts.map +1 -0
  101. package/dist/core/checklist/format-checklist-docx.js +321 -0
  102. package/dist/core/checklist/format-checklist-docx.js.map +1 -0
  103. package/dist/core/checklist/index.d.ts +1 -0
  104. package/dist/core/checklist/index.d.ts.map +1 -1
  105. package/dist/core/checklist/index.js +7 -3
  106. package/dist/core/checklist/index.js.map +1 -1
  107. package/dist/core/engine.d.ts +1 -0
  108. package/dist/core/engine.d.ts.map +1 -1
  109. package/dist/core/engine.js +72 -11
  110. package/dist/core/engine.js.map +1 -1
  111. package/dist/core/selector.d.ts +2 -0
  112. package/dist/core/selector.d.ts.map +1 -1
  113. package/dist/core/selector.js +181 -39
  114. package/dist/core/selector.js.map +1 -1
  115. package/dist/core/template-listing.d.ts +40 -0
  116. package/dist/core/template-listing.d.ts.map +1 -0
  117. package/dist/core/template-listing.js +91 -0
  118. package/dist/core/template-listing.js.map +1 -0
  119. package/dist/core/validation/template.d.ts.map +1 -1
  120. package/dist/core/validation/template.js +10 -2
  121. package/dist/core/validation/template.js.map +1 -1
  122. package/dist/index.d.ts +2 -0
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +4 -0
  125. package/dist/index.js.map +1 -1
  126. package/package.json +8 -2
  127. package/skills/iso-27001-evidence-collection/CONNECTORS.md +25 -9
  128. package/skills/iso-27001-evidence-collection/SKILL.md +10 -6
  129. package/skills/iso-27001-internal-audit/CONNECTORS.md +25 -9
  130. package/skills/iso-27001-internal-audit/SKILL.md +12 -9
  131. package/skills/soc2-readiness/CONNECTORS.md +25 -9
  132. package/skills/soc2-readiness/SKILL.md +17 -5
  133. package/skills/soc2-readiness/rules/change-vendor-management.md +104 -0
  134. package/skills/soc2-readiness/rules/communication-info.md +85 -0
  135. package/skills/soc2-readiness/rules/control-activities.md +95 -0
  136. package/skills/soc2-readiness/rules/control-environment.md +126 -0
  137. package/skills/soc2-readiness/rules/logical-access.md +264 -0
  138. package/skills/soc2-readiness/rules/monitoring-activities.md +66 -0
  139. package/skills/soc2-readiness/rules/optional-categories.md +264 -0
  140. package/skills/soc2-readiness/rules/privacy-criteria.md +359 -0
  141. package/skills/soc2-readiness/rules/risk-assessment.md +100 -0
  142. package/skills/soc2-readiness/rules/system-operations.md +170 -0
  143. package/skills/soc2-readiness/rules/trust-services.md +0 -230
@@ -0,0 +1,100 @@
1
+ # Risk Assessment — CC 3.1–3.4
2
+
3
+ Per-criterion audit guidance for risk objectives, identification, fraud risk, and change impact analysis.
4
+
5
+ ## CC 3.1 — Risk objectives
6
+
7
+ **Priority**: High | **NIST**: PM-9, RA-1 | **ISO**: C.6.1.1
8
+
9
+ Auditors verify that the organization defines clear objectives against which risks are assessed. Without stated objectives, there's no basis for evaluating whether risks are acceptable. In practice, this means the organization has documented what it's trying to protect, what "good" looks like, and what level of risk is tolerable.
10
+
11
+ **What auditors test**:
12
+ - Information security objectives are documented and approved by management
13
+ - Objectives are specific enough to be measurable (e.g., "99.9% uptime" not just "high availability")
14
+ - Objectives align with business strategy and customer commitments (SLAs, contracts)
15
+ - Risk appetite or tolerance statement exists — management has decided how much risk is acceptable
16
+ - Objectives are reviewed at least annually and updated when business changes
17
+
18
+ **Evidence to prepare**:
19
+ - Information security policy with stated objectives (effective date within audit period)
20
+ - Risk appetite statement or risk tolerance matrix (signed by management)
21
+ - SLA commitments to customers that drive security objectives
22
+ - Management review minutes where objectives were discussed/approved
23
+ - Year-over-year comparison showing objectives were reviewed and updated
24
+
25
+ **Startup pitfalls**:
26
+ - No written security objectives — "don't get hacked" is not a measurable objective
27
+ - Objectives copied from a template without customization to actual business context
28
+ - Risk appetite never discussed — every risk is treated equally instead of being prioritized
29
+
30
+ ---
31
+
32
+ ## CC 3.2 — Risk identification and analysis
33
+
34
+ **Priority**: High | **NIST**: RA-3 | **ISO**: C.6.1.2, C.8.2
35
+
36
+ Auditors verify that the organization systematically identifies and analyzes risks to achieving its objectives. The risk assessment must be documented, cover relevant categories (operational, technical, compliance, people), and use a consistent methodology for evaluating likelihood and impact.
37
+
38
+ **What auditors test**:
39
+ - Formal risk assessment conducted at least annually with documented methodology
40
+ - Risk register includes: risk description, likelihood, impact, risk rating, owner, and treatment decision
41
+ - Risk categories cover: technical (infra, code), operational (process, people), compliance (regulatory), and third-party
42
+ - Risk assessment considers both internal and external threats
43
+ - Assessment methodology is consistent (e.g., 5×5 likelihood-impact matrix used uniformly)
44
+
45
+ **Evidence to prepare**:
46
+ - Risk register (spreadsheet or GRC tool export) with all required fields populated
47
+ - Risk assessment methodology document (how risks are scored and prioritized)
48
+ - Most recent risk assessment report with date and participants
49
+ - Threat landscape analysis or threat modeling documentation
50
+ - Risk register change log showing risks added, updated, or closed during audit period
51
+
52
+ **Startup pitfalls**:
53
+ - Risk register is a checkbox exercise — created once, never updated
54
+ - Only technical risks listed — operational, compliance, and people risks are absent
55
+ - Risk assessment done by one person in isolation — should involve cross-functional input
56
+ - All risks rated "medium" to avoid triggering remediation
57
+
58
+ ---
59
+
60
+ ## CC 3.3 — Fraud risk
61
+
62
+ **Priority**: Medium | **NIST**: RA-3 | **ISO**: C.6.1.2
63
+
64
+ Auditors verify that the organization considers the potential for fraud when assessing risks — both internal (employee misuse, embezzlement, data theft) and external (social engineering, account takeover). This doesn't require a massive fraud program; it requires that fraud scenarios are part of the risk assessment.
65
+
66
+ **What auditors test**:
67
+ - Risk assessment explicitly includes fraud risk scenarios (not just technical vulnerabilities)
68
+ - Internal fraud risks considered: data theft by insiders, financial fraud, unauthorized access abuse
69
+ - External fraud risks considered: phishing, business email compromise, social engineering
70
+ - Segregation of duties addresses fraud opportunity (e.g., person approving payments ≠ person initiating)
71
+ - Management override controls: even founders/executives cannot bypass financial or access controls without detection
72
+
73
+ **Evidence to prepare**:
74
+ - Risk register entries specifically categorized as fraud risks
75
+ - Segregation of duties matrix for financial and access management processes
76
+ - Anti-fraud controls documentation (approval workflows, dual authorization for payments)
77
+ - Phishing simulation results demonstrating awareness of social engineering threats
78
+ - Financial reconciliation procedures showing detection controls for unauthorized transactions
79
+
80
+ ---
81
+
82
+ ## CC 3.4 — Change impact on controls
83
+
84
+ **Priority**: Medium | **NIST**: RA-3, CM-4 | **ISO**: C.6.1.2, A.8.9
85
+
86
+ Auditors verify that the organization assesses how changes — business, technical, regulatory, or personnel — affect the internal control environment. When the company adds a new product, enters a new market, adopts a new cloud provider, or undergoes significant personnel changes, the risk assessment should be revisited.
87
+
88
+ **What auditors test**:
89
+ - Process exists for evaluating control impact when significant changes occur
90
+ - Evidence of risk reassessment triggered by actual changes during the audit period
91
+ - New systems, vendors, or services underwent security review before deployment
92
+ - Organizational changes (mergers, rapid hiring, leadership changes) triggered control reviews
93
+ - Regulatory changes relevant to the business were identified and controls adjusted
94
+
95
+ **Evidence to prepare**:
96
+ - Change impact assessment records for significant changes during the audit period
97
+ - Security review documentation for new vendors, systems, or services onboarded
98
+ - Risk register entries added or modified in response to business changes
99
+ - Management review minutes discussing impact of organizational changes on controls
100
+ - Regulatory monitoring log showing awareness of relevant regulatory developments
@@ -0,0 +1,170 @@
1
+ # System Operations — CC 7.1–7.5
2
+
3
+ Per-criterion audit guidance for configuration management, monitoring, incident response, and recovery.
4
+
5
+ ## CC 7.1 — Configuration and baseline monitoring
6
+
7
+ **Priority**: Critical | **NIST**: CM-6, RA-5 | **ISO**: A.8.9, A.8.8
8
+
9
+ Auditors verify that production systems run from documented, approved configurations and that drift from baselines is detected. This means infrastructure-as-code, golden images, or documented configuration standards — not ad-hoc server setup.
10
+
11
+ **What auditors test**:
12
+ - Configuration baselines exist for production systems (OS hardening, application settings, network rules)
13
+ - Drift detection: mechanism to identify when running config diverges from approved baseline
14
+ - Configuration changes follow the change management process (CC 8.1)
15
+ - Default credentials and unnecessary services are removed from production systems
16
+ - Firewall rules and security group configurations are reviewed at least quarterly
17
+
18
+ **Evidence to prepare**:
19
+ ```bash
20
+ # GCP: firewall rules
21
+ gcloud compute firewall-rules list --format=json | jq '.[] | {name, direction, allowed, sourceRanges, targetTags}'
22
+
23
+ # GCP: instance configurations
24
+ gcloud compute instances list --format=json | jq '.[] | {name, machineType, zone, status}'
25
+
26
+ # Azure: NSG rules
27
+ az network nsg list --output json | jq '.[] | {name, location, securityRules: [.securityRules[] | {name, access, direction, sourceAddressPrefix, destinationPortRange}]}'
28
+
29
+ # GitHub: infrastructure-as-code repos (Terraform, Pulumi, etc.)
30
+ gh repo list {org} --json name,description --jq '.[] | select(.name | test("infra|terraform|pulumi|deploy"))'
31
+ ```
32
+ - Infrastructure-as-code repository with version history
33
+ - CIS benchmark assessment results (if available)
34
+ - Configuration review records from most recent quarterly review
35
+
36
+ **Startup pitfalls**:
37
+ - Production servers configured manually via SSH — no reproducible baseline exists
38
+ - Security groups with 0.0.0.0/0 inbound rules left from early development
39
+ - No documentation of what "production configuration" actually is
40
+
41
+ ---
42
+
43
+ ## CC 7.2 — Anomaly detection and monitoring
44
+
45
+ **Priority**: Critical | **NIST**: AU-6, SI-4 | **ISO**: A.8.15, A.8.16
46
+
47
+ Auditors assess whether the organization collects, centralizes, and actively monitors logs for security-relevant events. Passive log collection is insufficient — there must be alerting rules that trigger investigation when anomalies occur.
48
+
49
+ **What auditors test**:
50
+ - Log centralization: security events from all systems flow to a single platform (SIEM or log aggregator)
51
+ - Alert rules configured for: authentication failures, privilege escalation, unauthorized access attempts, configuration changes
52
+ - Sample 2-3 recent alerts: verify each was investigated and documented with a resolution
53
+ - Log retention covers the full audit period (typically 12 months for Type II)
54
+ - Log integrity: logs are protected from tampering (write-once storage or separate account)
55
+
56
+ **Evidence to prepare**:
57
+ ```bash
58
+ # GCP: alerting policies
59
+ gcloud monitoring policies list --format=json | jq '.[].displayName'
60
+
61
+ # GCP: log sinks (centralization)
62
+ gcloud logging sinks list --format=json | jq '.[] | {name, destination, filter}'
63
+
64
+ # GCP: log retention settings
65
+ gcloud logging buckets list --location=global --format=json | jq '.[] | {name, retentionDays}'
66
+
67
+ # Azure: alert rules
68
+ az monitor metrics alert list --output json | jq '.[] | {name, enabled, severity}'
69
+
70
+ # Azure: diagnostic settings (log forwarding)
71
+ az monitor diagnostic-settings list --resource {resource_id} --output json
72
+ ```
73
+ - SIEM dashboard screenshot showing active alert rules
74
+ - Sample alert investigation records (ticket or incident log)
75
+ - Log retention policy document
76
+
77
+ **Startup pitfalls**:
78
+ - Logs exist in cloud provider but nobody monitors them — no alert rules configured
79
+ - Alert fatigue: hundreds of alerts firing daily, all ignored
80
+ - Log retention set to default 30 days — insufficient for a 12-month audit period
81
+
82
+ ---
83
+
84
+ ## CC 7.3 — Incident response
85
+
86
+ **Priority**: Critical | **NIST**: IR-4 | **ISO**: A.5.24, A.5.25
87
+
88
+ Auditors verify that the organization has a defined, tested process for responding to security incidents. The plan must exist before the audit period — writing it during the audit is a finding. Expect auditors to walk through a recent incident or tabletop exercise.
89
+
90
+ **What auditors test**:
91
+ - Incident response plan exists, is approved by management, and was in effect during the audit period
92
+ - Plan covers: identification, containment, eradication, recovery, and lessons learned
93
+ - Roles and responsibilities are defined (who leads response, who communicates, who escalates)
94
+ - Plan has been tested: tabletop exercise or response to actual incident within the audit period
95
+ - Post-incident reviews are conducted and documented with action items
96
+
97
+ **Evidence to prepare**:
98
+ - Incident response plan document (with version date proving it predates the audit period)
99
+ - Tabletop exercise records: scenario, participants, decisions made, findings
100
+ - Post-incident review reports (if real incidents occurred)
101
+ - On-call rotation or escalation contact list
102
+ - Incident severity classification matrix
103
+
104
+ **Startup pitfalls**:
105
+ - No written plan — "we'd just figure it out" is a guaranteed finding
106
+ - Plan exists but has never been tested — auditors expect at least one tabletop exercise per year
107
+ - No post-incident review process — incidents happen but lessons aren't captured
108
+ - Incident response plan written by one person and unknown to the rest of the team
109
+
110
+ ---
111
+
112
+ ## CC 7.4 — Incident communication
113
+
114
+ **Priority**: High | **NIST**: IR-5, IR-6 | **ISO**: A.5.25, A.5.26
115
+
116
+ Beyond responding to incidents internally, auditors check whether the organization communicates appropriately with affected parties — customers, regulators, and management. Notification timelines and channels should be predefined, not improvised.
117
+
118
+ **What auditors test**:
119
+ - Communication plan: who gets notified, through what channel, within what timeframe
120
+ - Customer notification SLAs match contractual commitments (check customer agreements for breach notification terms)
121
+ - Regulatory notification requirements identified by jurisdiction (e.g., 72 hours for GDPR, state breach laws)
122
+ - Management receives periodic incident summaries (at least quarterly)
123
+ - Status page or customer communication channel for service-affecting incidents
124
+
125
+ **Evidence to prepare**:
126
+ - Incident communication procedures (section of IR plan or standalone document)
127
+ - Sample customer notification (if a reportable incident occurred during audit period)
128
+ - Regulatory notification requirements matrix (jurisdiction × data type × timeline)
129
+ - Management incident summary reports
130
+ - Status page URL and historical incident postings
131
+
132
+ ---
133
+
134
+ ## CC 7.5 — Recovery operations
135
+
136
+ **Priority**: Critical | **NIST**: CP-4, CP-9, CP-10 | **ISO**: A.5.30, A.8.13
137
+
138
+ Auditors verify that the organization can recover from incidents and disasters — not just that backups exist, but that recovery has been tested and meets defined objectives. Untested backups are assumed to be non-functional.
139
+
140
+ **What auditors test**:
141
+ - Backup configuration: automated, encrypted, and stored separately from production (different region or account)
142
+ - Backup frequency matches RPO (recovery point objective) — if RPO is 1 hour, daily backups fail
143
+ - Restore testing: at least one successful restore test during the audit period, documented with results
144
+ - RTO/RPO defined for critical systems and achievable based on test results
145
+ - Disaster recovery plan covering major failure scenarios (region outage, data corruption, ransomware)
146
+
147
+ **Evidence to prepare**:
148
+ ```bash
149
+ # GCP: Cloud SQL backup configuration
150
+ gcloud sql instances describe {instance} --format=json | jq '{backupConfiguration, settings: {backupConfiguration}}'
151
+
152
+ # GCP: recent backups
153
+ gcloud sql backups list --instance={instance} --limit=10 --format=json | jq '.[0:5] | .[] | {id, startTime, status, type}'
154
+
155
+ # Azure: backup status
156
+ az backup item list --resource-group {rg} --vault-name {vault} --output json | jq '.[] | {name, properties: {lastBackupTime, protectionState}}'
157
+
158
+ # GCP: snapshot policies
159
+ gcloud compute resource-policies list --format=json | jq '.[] | {name, snapshotSchedulePolicy}'
160
+ ```
161
+ - Backup restore test report (date, scope, time to restore, success/failure, issues encountered)
162
+ - RTO/RPO definitions per critical system
163
+ - Disaster recovery plan document
164
+ - Business impact analysis identifying critical systems and acceptable downtime
165
+
166
+ **Startup pitfalls**:
167
+ - Cloud provider "handles backups" — but automated backups may not be enabled or may not cover all services
168
+ - Backups exist but have never been restored — first restore attempt during a real outage reveals corruption
169
+ - No defined RTO/RPO — "as fast as possible" is not measurable
170
+ - DR plan is a copy-paste template that doesn't match actual infrastructure
@@ -1,230 +0,0 @@
1
- # Trust Services Criteria — Detailed Guidance
2
-
3
- Per-criterion guidance for SOC 2 audits. Covers all 5 trust service categories.
4
-
5
- ## Security (Common Criteria) — Always Required
6
-
7
- ### CC 6.1 — Logical Access Security
8
-
9
- **Priority**: Critical | **NIST**: AC-2, AC-3, IA-2, SC-28 | **ISO**: A.5.15, A.8.5, A.8.24
10
-
11
- The entity implements logical access security software, infrastructure, and architectures over protected information assets to protect them from security events.
12
-
13
- **What auditors test**:
14
- - Sample user accounts: verify access is appropriate for role
15
- - Check MFA enforcement on all systems with sensitive data
16
- - Verify encryption at rest and in transit
17
- - Test that unauthorized access attempts are blocked and logged
18
-
19
- **Evidence to prepare**:
20
- ```bash
21
- # User access list with roles
22
- gam print users fields primaryEmail,name,orgUnitPath,isAdmin,isEnforcedIn2Sv
23
-
24
- # GitHub: org access settings
25
- gh api orgs/{org} | jq '{two_factor_requirement_enabled, default_repository_permission}'
26
-
27
- # Encryption: TLS check
28
- openssl s_client -connect {host}:443 -tls1_2 < /dev/null 2>&1 | grep "Protocol"
29
- ```
30
-
31
- ---
32
-
33
- ### CC 6.2 — Access Provisioning and Deprovisioning
34
-
35
- **Priority**: Critical | **NIST**: AC-2, PS-4, PS-5 | **ISO**: A.5.18, A.6.5
36
-
37
- New access requests require authorization. Access is removed promptly when no longer needed.
38
-
39
- **What auditors test**:
40
- - Sample 5-10 new hires: verify access was authorized before provisioning
41
- - Sample 5-10 terminations: verify access was revoked within 24-48 hours
42
- - Check for orphaned accounts (active accounts with no corresponding employee)
43
-
44
- **Evidence to prepare**:
45
- - HR-to-IT onboarding workflow documentation
46
- - Termination checklist with IT steps
47
- - Cross-reference: termination dates vs. last-active dates in systems
48
-
49
- ---
50
-
51
- ### CC 7.2 — Anomaly Detection and Monitoring
52
-
53
- **Priority**: Critical | **NIST**: AU-6, SI-4 | **ISO**: A.8.15, A.8.16
54
-
55
- The entity monitors system components and anomalies that indicate malicious acts, natural disasters, and errors.
56
-
57
- **What auditors test**:
58
- - Alert configuration: what triggers alerts?
59
- - Sample alerts: show a recent alert and the response
60
- - Log retention: are logs kept for the full audit period?
61
- - Log centralization: is there a single view of security events?
62
-
63
- **Evidence to prepare**:
64
- ```bash
65
- # GCP: alerting policies
66
- gcloud monitoring policies list --format=json | jq '.[].displayName'
67
-
68
- # GCP: log sinks
69
- gcloud logging sinks list --format=json
70
-
71
- # Azure: alert rules
72
- az monitor alert list --output json | jq '.[].{name, enabled}'
73
- ```
74
-
75
- ---
76
-
77
- ### CC 7.5 — Recovery Operations
78
-
79
- **Priority**: Critical | **NIST**: CP-4, CP-9, CP-10 | **ISO**: A.5.30, A.8.13
80
-
81
- The entity identifies, develops, and implements activities to recover from identified security incidents.
82
-
83
- **What auditors test**:
84
- - Backup configuration: are backups automated and encrypted?
85
- - Backup testing: has a restore been tested in the audit period?
86
- - DR plan: does it exist and has it been tested?
87
- - RTO/RPO: are they defined and achievable?
88
-
89
- **Evidence to prepare**:
90
- ```bash
91
- # GCP: backup configuration
92
- gcloud sql backups list --instance={instance} --format=json | jq '.[0:5]'
93
-
94
- # Backup restore test documentation (manual)
95
- ```
96
-
97
- ---
98
-
99
- ### CC 8.1 — Change Management
100
-
101
- **Priority**: Critical | **NIST**: CM-3, CM-5, SA-3 | **ISO**: A.8.9, A.8.25, A.8.32
102
-
103
- Changes to infrastructure, data, software, and procedures are authorized, designed, developed, configured, documented, tested, approved, and implemented.
104
-
105
- **What auditors test**:
106
- - Sample 10-15 production changes: verify each had authorization, testing, and approval
107
- - Emergency change process: how are hotfixes handled?
108
- - Segregation: developers can't push directly to production
109
- - Rollback: can changes be reverted?
110
-
111
- **Evidence to prepare**:
112
- ```bash
113
- # GitHub: merged PRs with review status
114
- gh pr list --state merged --limit 20 --json number,title,author,reviewDecision,mergedAt,mergedBy
115
-
116
- # GitHub: branch protection
117
- gh api repos/{owner}/{repo}/branches/main/protection | jq '{
118
- required_reviews: .required_pull_request_reviews.required_approving_review_count,
119
- enforce_admins: .enforce_admins.enabled
120
- }'
121
- ```
122
-
123
- ---
124
-
125
- ## Availability — For SaaS and Infrastructure
126
-
127
- ### A 1.1 — System Availability Monitoring
128
-
129
- **Priority**: High | **NIST**: SC-5, SI-4 | **ISO**: A.8.6, A.8.16
130
-
131
- Monitor capacity and availability to meet commitments.
132
-
133
- **What auditors test**:
134
- - Uptime monitoring: is there a system monitoring availability?
135
- - Capacity planning: is there a process for scaling?
136
- - Status page: is availability communicated to customers?
137
-
138
- ---
139
-
140
- ### A 1.2 — Recovery Planning
141
-
142
- **Priority**: High | **NIST**: CP-2, CP-6, CP-7 | **ISO**: A.5.30, A.8.14
143
-
144
- Environmental protections and recovery infrastructure support availability commitments.
145
-
146
- **What auditors test**:
147
- - Multi-AZ or multi-region deployment for production
148
- - Auto-scaling configuration
149
- - Failover testing records
150
-
151
- ---
152
-
153
- ### A 1.3 — Recovery Testing
154
-
155
- **Priority**: High | **NIST**: CP-4 | **ISO**: A.5.30
156
-
157
- Recovery plans are tested periodically.
158
-
159
- **What auditors test**:
160
- - DR test records (date, scope, results)
161
- - Actual recovery time vs. RTO target
162
-
163
- ---
164
-
165
- ## Processing Integrity — For Data Processing Services
166
-
167
- ### PI 1.1-1.3 — Processing Completeness, Accuracy, and Timeliness
168
-
169
- **Priority**: Medium | **NIST**: SI-10, SI-11 | **ISO**: A.8.28
170
-
171
- System processing is complete, valid, accurate, and timely.
172
-
173
- **What auditors test**:
174
- - Input validation controls
175
- - Error handling and exception reporting
176
- - Reconciliation processes for data accuracy
177
- - SLA monitoring for timeliness
178
-
179
- ---
180
-
181
- ## Confidentiality — For Sensitive Data
182
-
183
- ### C 1.1 — Confidential Information Protection
184
-
185
- **Priority**: High | **NIST**: AC-21, SC-28 | **ISO**: A.5.14, A.8.24
186
-
187
- Confidential information is protected during processing and storage.
188
-
189
- **What auditors test**:
190
- - Data classification scheme
191
- - Encryption at rest for confidential data
192
- - Access restrictions based on classification
193
-
194
- ### C 1.2 — Confidential Information Disposal
195
-
196
- **Priority**: Medium | **NIST**: MP-6, SI-12 | **ISO**: A.7.14, A.8.10
197
-
198
- Confidential information is disposed of when no longer needed.
199
-
200
- **What auditors test**:
201
- - Data retention policy
202
- - Evidence of data disposal (deletion records, media destruction)
203
-
204
- ---
205
-
206
- ## Privacy — When Processing PII
207
-
208
- ### P 4.2 — Privacy Notice
209
-
210
- **Priority**: Medium | **ISO**: A.5.34
211
-
212
- Privacy notice is provided and accessible.
213
-
214
- ### P 6.1-6.6 — Data Subject Rights and Incident Response
215
-
216
- **Priority**: Medium (if PII in scope)
217
-
218
- Data subject requests are handled. Privacy incidents are reported.
219
-
220
- **What auditors test**:
221
- - Privacy policy on website
222
- - Process for data subject access requests (DSARs)
223
- - Privacy incident notification process
224
- - Data processing agreements with sub-processors
225
-
226
- ### P 8.1 — Quality Assurance
227
-
228
- **Priority**: Low
229
-
230
- Data quality procedures are in place.