@open-agreements/open-agreements 0.2.2 → 0.3.0
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.
- package/README.md +30 -0
- package/content/templates/closing-checklist/template.docx +0 -0
- package/content/templates/common-paper-ai-addendum/README.md +18 -0
- package/content/templates/common-paper-ai-addendum/metadata.yaml +136 -0
- package/content/templates/common-paper-ai-addendum/replacements.json +5 -0
- package/content/templates/common-paper-ai-addendum/selections.json +62 -0
- package/content/templates/common-paper-ai-addendum/template.docx +0 -0
- package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +88 -0
- package/content/templates/common-paper-ai-addendum-in-app/replacements.json +5 -0
- package/content/templates/common-paper-ai-addendum-in-app/selections.json +62 -0
- package/content/templates/common-paper-amendment/README.md +18 -0
- package/content/templates/common-paper-amendment/metadata.yaml +48 -0
- package/content/templates/common-paper-amendment/template.docx +0 -0
- package/content/templates/common-paper-business-associate-agreement/README.md +20 -1
- package/content/templates/common-paper-business-associate-agreement/metadata.yaml +111 -3
- package/content/templates/common-paper-business-associate-agreement/replacements.json +2 -1
- package/content/templates/common-paper-business-associate-agreement/selections.json +38 -0
- package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
- package/content/templates/common-paper-cloud-service-agreement/README.md +18 -0
- package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +48 -0
- package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
- package/content/templates/common-paper-csa-with-ai/README.md +18 -0
- package/content/templates/common-paper-csa-with-ai/metadata.yaml +462 -2
- package/content/templates/common-paper-csa-with-ai/replacements.json +5 -2
- package/content/templates/common-paper-csa-with-ai/selections.json +291 -0
- package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
- package/content/templates/common-paper-csa-with-sla/README.md +18 -0
- package/content/templates/common-paper-csa-with-sla/metadata.yaml +387 -2
- package/content/templates/common-paper-csa-with-sla/replacements.json +4 -2
- package/content/templates/common-paper-csa-with-sla/selections.json +257 -0
- package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
- package/content/templates/common-paper-csa-without-sla/README.md +18 -0
- package/content/templates/common-paper-csa-without-sla/metadata.yaml +380 -2
- package/content/templates/common-paper-csa-without-sla/replacements.json +5 -2
- package/content/templates/common-paper-csa-without-sla/selections.json +250 -0
- package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
- package/content/templates/common-paper-data-processing-agreement/README.md +16 -0
- package/content/templates/common-paper-data-processing-agreement/metadata.yaml +397 -3
- package/content/templates/common-paper-data-processing-agreement/replacements.json +2 -1
- package/content/templates/common-paper-data-processing-agreement/selections.json +211 -0
- package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
- package/content/templates/common-paper-design-partner-agreement/README.md +18 -0
- package/content/templates/common-paper-design-partner-agreement/metadata.yaml +99 -3
- package/content/templates/common-paper-design-partner-agreement/selections.json +27 -0
- package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
- package/content/templates/common-paper-independent-contractor-agreement/README.md +18 -0
- package/content/templates/common-paper-independent-contractor-agreement/clean.json +8 -0
- package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +52 -0
- package/content/templates/common-paper-independent-contractor-agreement/replacements.json +3 -0
- package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
- package/content/templates/common-paper-letter-of-intent/README.md +18 -0
- package/content/templates/common-paper-letter-of-intent/metadata.yaml +48 -0
- package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
- package/content/templates/common-paper-mutual-nda/README.md +29 -7
- package/content/templates/common-paper-mutual-nda/metadata.yaml +48 -0
- package/content/templates/common-paper-mutual-nda/template.docx +0 -0
- package/content/templates/common-paper-one-way-nda/README.md +13 -0
- package/content/templates/common-paper-one-way-nda/metadata.yaml +24 -0
- package/content/templates/common-paper-one-way-nda/selections.json +38 -0
- package/content/templates/common-paper-one-way-nda/template.docx +0 -0
- package/content/templates/common-paper-order-form/README.md +18 -0
- package/content/templates/common-paper-order-form/metadata.yaml +115 -3
- package/content/templates/common-paper-order-form/replacements.json +5 -2
- package/content/templates/common-paper-order-form/selections.json +56 -0
- package/content/templates/common-paper-order-form/template.docx +0 -0
- package/content/templates/common-paper-order-form-with-sla/README.md +18 -0
- package/content/templates/common-paper-order-form-with-sla/metadata.yaml +149 -3
- package/content/templates/common-paper-order-form-with-sla/replacements.json +6 -2
- package/content/templates/common-paper-order-form-with-sla/selections.json +64 -0
- package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
- package/content/templates/common-paper-partnership-agreement/README.md +18 -0
- package/content/templates/common-paper-partnership-agreement/metadata.yaml +293 -4
- package/content/templates/common-paper-partnership-agreement/replacements.json +5 -2
- package/content/templates/common-paper-partnership-agreement/selections.json +138 -0
- package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
- package/content/templates/common-paper-pilot-agreement/README.md +18 -0
- package/content/templates/common-paper-pilot-agreement/metadata.yaml +48 -0
- package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
- package/content/templates/common-paper-professional-services-agreement/README.md +18 -0
- package/content/templates/common-paper-professional-services-agreement/metadata.yaml +338 -4
- package/content/templates/common-paper-professional-services-agreement/replacements.json +7 -4
- package/content/templates/common-paper-professional-services-agreement/selections.json +207 -0
- package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
- package/content/templates/common-paper-statement-of-work/README.md +18 -0
- package/content/templates/common-paper-statement-of-work/metadata.yaml +110 -2
- package/content/templates/common-paper-statement-of-work/replacements.json +4 -1
- package/content/templates/common-paper-statement-of-work/selections.json +55 -0
- package/content/templates/common-paper-statement-of-work/template.docx +0 -0
- package/content/templates/common-paper-term-sheet/README.md +18 -0
- package/content/templates/common-paper-term-sheet/metadata.yaml +48 -0
- package/content/templates/common-paper-term-sheet/template.docx +0 -0
- package/content/templates/working-group-list/template.docx +0 -0
- package/dist/commands/checklist.d.ts.map +1 -1
- package/dist/commands/checklist.js +2 -1
- package/dist/commands/checklist.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +1 -46
- package/dist/commands/list.js.map +1 -1
- package/dist/core/checklist/format-checklist-docx.d.ts +10 -0
- package/dist/core/checklist/format-checklist-docx.d.ts.map +1 -0
- package/dist/core/checklist/format-checklist-docx.js +321 -0
- package/dist/core/checklist/format-checklist-docx.js.map +1 -0
- package/dist/core/checklist/index.d.ts +1 -0
- package/dist/core/checklist/index.d.ts.map +1 -1
- package/dist/core/checklist/index.js +7 -3
- package/dist/core/checklist/index.js.map +1 -1
- package/dist/core/engine.d.ts +1 -0
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +72 -11
- package/dist/core/engine.js.map +1 -1
- package/dist/core/selector.d.ts +2 -0
- package/dist/core/selector.d.ts.map +1 -1
- package/dist/core/selector.js +181 -39
- package/dist/core/selector.js.map +1 -1
- package/dist/core/template-listing.d.ts +40 -0
- package/dist/core/template-listing.d.ts.map +1 -0
- package/dist/core/template-listing.js +91 -0
- package/dist/core/template-listing.js.map +1 -0
- package/dist/core/validation/template.d.ts.map +1 -1
- package/dist/core/validation/template.js +10 -2
- package/dist/core/validation/template.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
- package/skills/iso-27001-evidence-collection/CONNECTORS.md +25 -9
- package/skills/iso-27001-evidence-collection/SKILL.md +10 -6
- package/skills/iso-27001-internal-audit/CONNECTORS.md +25 -9
- package/skills/iso-27001-internal-audit/SKILL.md +12 -9
- package/skills/soc2-readiness/CONNECTORS.md +25 -9
- package/skills/soc2-readiness/SKILL.md +17 -5
- package/skills/soc2-readiness/rules/change-vendor-management.md +104 -0
- package/skills/soc2-readiness/rules/communication-info.md +85 -0
- package/skills/soc2-readiness/rules/control-activities.md +95 -0
- package/skills/soc2-readiness/rules/control-environment.md +126 -0
- package/skills/soc2-readiness/rules/logical-access.md +264 -0
- package/skills/soc2-readiness/rules/monitoring-activities.md +66 -0
- package/skills/soc2-readiness/rules/optional-categories.md +264 -0
- package/skills/soc2-readiness/rules/privacy-criteria.md +359 -0
- package/skills/soc2-readiness/rules/risk-assessment.md +100 -0
- package/skills/soc2-readiness/rules/system-operations.md +170 -0
- 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.
|