@open-agreements/open-agreements 0.2.0 → 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 +40 -2
- package/content/templates/closing-checklist/metadata.yaml +6 -13
- 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/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +47 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/checklist.d.ts +21 -1
- package/dist/commands/checklist.d.ts.map +1 -1
- package/dist/commands/checklist.js +176 -44
- 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/commands/recipe.js +3 -11
- package/dist/commands/recipe.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 +23 -14
- package/dist/core/checklist/index.d.ts.map +1 -1
- package/dist/core/checklist/index.js +83 -39
- package/dist/core/checklist/index.js.map +1 -1
- package/dist/core/checklist/jsonl-stores.d.ts +3 -0
- package/dist/core/checklist/jsonl-stores.d.ts.map +1 -0
- package/dist/core/checklist/jsonl-stores.js +16 -0
- package/dist/core/checklist/jsonl-stores.js.map +1 -0
- package/dist/core/checklist/schemas.d.ts +2 -2
- package/dist/core/checklist/schemas.js +1 -1
- package/dist/core/checklist/schemas.js.map +1 -1
- package/dist/core/checklist/state-manager.d.ts +146 -0
- package/dist/core/checklist/state-manager.d.ts.map +1 -0
- package/dist/core/checklist/state-manager.js +147 -0
- package/dist/core/checklist/state-manager.js.map +1 -0
- package/dist/core/checklist/status-labels.d.ts +6 -0
- package/dist/core/checklist/status-labels.d.ts.map +1 -0
- package/dist/core/checklist/status-labels.js +29 -0
- package/dist/core/checklist/status-labels.js.map +1 -0
- 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/recipe.d.ts.map +1 -1
- package/dist/core/validation/recipe.js +47 -61
- package/dist/core/validation/recipe.js.map +1 -1
- 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/cloud-service-agreement/SKILL.md +9 -0
- package/skills/data-privacy-agreement/SKILL.md +9 -0
- package/skills/edit-docx-agreement/CONNECTORS.md +20 -0
- package/skills/edit-docx-agreement/SKILL.md +77 -0
- package/skills/employment-contract/SKILL.md +9 -0
- package/skills/iso-27001-evidence-collection/CONNECTORS.md +39 -0
- package/skills/iso-27001-evidence-collection/SKILL.md +304 -0
- package/skills/iso-27001-evidence-collection/rules/api-exports.md +191 -0
- package/skills/iso-27001-evidence-collection/rules/evidence-types.md +107 -0
- package/skills/iso-27001-evidence-collection/rules/screenshot-guide.md +77 -0
- package/skills/iso-27001-internal-audit/CONNECTORS.md +39 -0
- package/skills/iso-27001-internal-audit/SKILL.md +275 -0
- package/skills/iso-27001-internal-audit/rules/access-control.md +191 -0
- package/skills/iso-27001-internal-audit/rules/business-continuity.md +94 -0
- package/skills/iso-27001-internal-audit/rules/change-management.md +211 -0
- package/skills/iso-27001-internal-audit/rules/encryption.md +93 -0
- package/skills/iso-27001-internal-audit/rules/incident-response.md +127 -0
- package/skills/iso-27001-internal-audit/rules/isms-management.md +164 -0
- package/skills/iso-27001-internal-audit/rules/logging-monitoring.md +96 -0
- package/skills/iso-27001-internal-audit/rules/people-controls.md +161 -0
- package/skills/iso-27001-internal-audit/rules/supplier-management.md +92 -0
- package/skills/nda/SKILL.md +9 -0
- package/skills/open-agreements/SKILL.md +9 -0
- package/skills/safe/SKILL.md +9 -0
- package/skills/services-agreement/SKILL.md +9 -0
- package/skills/soc2-readiness/CONNECTORS.md +39 -0
- package/skills/soc2-readiness/SKILL.md +301 -0
- 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/venture-financing/SKILL.md +9 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: soc2-readiness
|
|
3
|
+
description: >-
|
|
4
|
+
Assess SOC 2 Type II readiness. Map Trust Services Criteria to controls,
|
|
5
|
+
identify gaps, and build a remediation plan. Uses NIST SP 800-53 (public
|
|
6
|
+
domain) as canonical reference with SOC 2 criterion cross-mapping.
|
|
7
|
+
license: MIT
|
|
8
|
+
compatibility: >-
|
|
9
|
+
Works with any AI agent. Enhanced with compliance MCP server for live
|
|
10
|
+
status data. Falls back to embedded reference material when no live data
|
|
11
|
+
available.
|
|
12
|
+
metadata:
|
|
13
|
+
author: open-agreements
|
|
14
|
+
version: "0.1.0"
|
|
15
|
+
frameworks:
|
|
16
|
+
- SOC 2 Type II
|
|
17
|
+
- NIST SP 800-53 Rev 5
|
|
18
|
+
- ISO 27001:2022
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# SOC 2 Readiness Assessment
|
|
22
|
+
|
|
23
|
+
Assess readiness for a SOC 2 Type II audit. This skill walks through the Trust Services Criteria, identifies gaps, maps to NIST controls, and generates a prioritized remediation plan.
|
|
24
|
+
|
|
25
|
+
## Security Model
|
|
26
|
+
|
|
27
|
+
- **No scripts executed** — markdown-only procedural guidance
|
|
28
|
+
- **No secrets required** — works with reference checklists
|
|
29
|
+
- **IP-clean** — AICPA Trust Services Criteria are publicly cited; descriptions are original writing
|
|
30
|
+
- **Evidence stays local** — all collection outputs go to local filesystem
|
|
31
|
+
|
|
32
|
+
## When to Use
|
|
33
|
+
|
|
34
|
+
Activate this skill when:
|
|
35
|
+
|
|
36
|
+
1. **First SOC 2 preparation** — building controls from scratch for initial Type I or Type II
|
|
37
|
+
2. **Pre-audit readiness check** — 4-8 weeks before audit window opens
|
|
38
|
+
3. **Gap analysis after scope change** — new systems, services, or trust criteria added
|
|
39
|
+
4. **Remediation planning** — translating audit findings into actionable work items
|
|
40
|
+
5. **Dual-framework mapping** — already pursuing ISO 27001 and need SOC 2 overlap analysis
|
|
41
|
+
|
|
42
|
+
Do NOT use for:
|
|
43
|
+
- ISO 27001 internal audit — use `iso-27001-internal-audit`
|
|
44
|
+
- Evidence collection mechanics — use `iso-27001-evidence-collection`
|
|
45
|
+
- Contract review — use legal agreement skills
|
|
46
|
+
|
|
47
|
+
## Core Concepts
|
|
48
|
+
|
|
49
|
+
### Trust Services Criteria (TSC)
|
|
50
|
+
|
|
51
|
+
SOC 2 is organized around 5 Trust Services Categories. **Security (CC)** is always in scope; others are optional based on your service:
|
|
52
|
+
|
|
53
|
+
| Category | Criteria | When Required |
|
|
54
|
+
|----------|----------|---------------|
|
|
55
|
+
| **Security** (CC) | CC 1-9 (33 criteria) | Always required |
|
|
56
|
+
| **Availability** (A) | A 1.1-1.3 (3 criteria) | SaaS with uptime SLAs |
|
|
57
|
+
| **Processing Integrity** (PI) | PI 1.1-1.5 (4 criteria) | Data processing services |
|
|
58
|
+
| **Confidentiality** (C) | C 1.1-1.2 (2 criteria) | Handling confidential data |
|
|
59
|
+
| **Privacy** (P) | P 4-8 (7 criteria) | PII processing |
|
|
60
|
+
|
|
61
|
+
### SOC 2 vs. ISO 27001
|
|
62
|
+
|
|
63
|
+
| Dimension | SOC 2 | ISO 27001 |
|
|
64
|
+
|-----------|-------|-----------|
|
|
65
|
+
| Governing body | AICPA | ISO/IEC |
|
|
66
|
+
| Geography | Primarily US/Canada | Global |
|
|
67
|
+
| Type | Attestation report by CPA | Certification by audit body |
|
|
68
|
+
| Scope | Service-specific | Organization-wide ISMS |
|
|
69
|
+
| Controls | Flexible (you define) | 93 Annex A controls |
|
|
70
|
+
| Output | SOC 2 report (restricted/general use) | Certificate |
|
|
71
|
+
| Overlap | ~70% overlap with ISO 27001 Annex A | ~70% overlap with SOC 2 CC |
|
|
72
|
+
|
|
73
|
+
### Decision Tree: Scope Selection
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
What service are you getting audited on?
|
|
77
|
+
├── SaaS product → Security + Availability (+ Confidentiality if you handle sensitive data)
|
|
78
|
+
├── Data processing → Security + Processing Integrity + Confidentiality
|
|
79
|
+
├── Infrastructure → Security + Availability
|
|
80
|
+
├── API service → Security (+ PI if you transform data)
|
|
81
|
+
│
|
|
82
|
+
Do you handle PII?
|
|
83
|
+
├── YES → Add Privacy category
|
|
84
|
+
├── NO → Skip Privacy
|
|
85
|
+
│
|
|
86
|
+
Do you have uptime SLAs?
|
|
87
|
+
├── YES → Include Availability
|
|
88
|
+
├── NO → Optional (but customers expect it for SaaS)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Step-by-Step Workflow
|
|
92
|
+
|
|
93
|
+
### Step 1: Define Scope and Categories
|
|
94
|
+
|
|
95
|
+
1. **Identify the service** being audited (product name, description, boundaries)
|
|
96
|
+
2. **Select Trust Services Categories** using the decision tree above
|
|
97
|
+
3. **Define system boundaries**: infrastructure, software, people, procedures, data
|
|
98
|
+
4. **Document sub-service organizations** (cloud providers, payment processors, etc.)
|
|
99
|
+
5. **Determine audit type**: Type I (point-in-time) or Type II (period of time, usually 6-12 months)
|
|
100
|
+
|
|
101
|
+
### Step 2: Assess Current State
|
|
102
|
+
|
|
103
|
+
For each applicable Common Criterion (CC), assess whether controls are:
|
|
104
|
+
- **Designed** — control exists on paper
|
|
105
|
+
- **Implemented** — control is operating
|
|
106
|
+
- **Effective** — control achieves its objective (evidence exists)
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
# If Internal ISO Audit MCP server is available (SOC 2 maps to ISO 27001 Annex A):
|
|
110
|
+
list_controls(domain="technological") # List tech controls (maps to CC 6-8)
|
|
111
|
+
get_control_guidance(control_id="A.5.15") # Get guidance for ISO control mapped from CC 6.1
|
|
112
|
+
get_nist_mapping(control_id="AC-2", direction="nist_to_iso") # Find ISO controls from NIST reference
|
|
113
|
+
search_guidance(query="incident response") # Search for controls matching SOC 2 criteria
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Step 3: Map Controls to Criteria
|
|
117
|
+
|
|
118
|
+
Each CC maps to specific NIST controls. Use this mapping to identify what you need:
|
|
119
|
+
|
|
120
|
+
#### CC 1 — Control Environment
|
|
121
|
+
|
|
122
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
123
|
+
|-----------|-------|---------------|---------------------|
|
|
124
|
+
| CC 1.1 | Integrity and ethics | PS-1, PS-3, PS-6 | A.6.1, A.6.2, A.6.4 |
|
|
125
|
+
| CC 1.2 | Board oversight | PM-1, PM-2 | C.5.1, C.5.3 |
|
|
126
|
+
| CC 1.3 | Organizational structure | PM-2 | C.5.3 |
|
|
127
|
+
| CC 1.4 | Competence commitment | AT-2, PS-3 | A.6.1, A.6.3 |
|
|
128
|
+
| CC 1.5 | Accountability | PS-3, PS-4 | A.6.4, A.6.5 |
|
|
129
|
+
|
|
130
|
+
#### CC 2 — Communication and Information
|
|
131
|
+
|
|
132
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
133
|
+
|-----------|-------|---------------|---------------------|
|
|
134
|
+
| CC 2.1 | Internal information | AU-2, SI-5 | C.7.5.1 |
|
|
135
|
+
| CC 2.2 | Internal communication | PM-2, AT-2 | C.7.4, A.6.3 |
|
|
136
|
+
| CC 2.3 | External communication | PM-1 | A.5.14 |
|
|
137
|
+
|
|
138
|
+
#### CC 3 — Risk Assessment
|
|
139
|
+
|
|
140
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
141
|
+
|-----------|-------|---------------|---------------------|
|
|
142
|
+
| CC 3.1 | Risk objectives | PM-9, RA-1 | C.6.1.1 |
|
|
143
|
+
| CC 3.2 | Risk identification | RA-3 | C.6.1.2, C.8.2 |
|
|
144
|
+
| CC 3.3 | Fraud risk | RA-3 | C.6.1.2 |
|
|
145
|
+
| CC 3.4 | Change impact | RA-3, CM-4 | C.6.1.2, A.8.9 |
|
|
146
|
+
|
|
147
|
+
#### CC 4 — Monitoring Activities
|
|
148
|
+
|
|
149
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
150
|
+
|-----------|-------|---------------|---------------------|
|
|
151
|
+
| CC 4.1 | Ongoing monitoring | CA-7, PM-6 | C.9.1 |
|
|
152
|
+
| CC 4.2 | Deficiency evaluation | CA-2 | C.9.2.1 |
|
|
153
|
+
|
|
154
|
+
#### CC 5 — Control Activities
|
|
155
|
+
|
|
156
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
157
|
+
|-----------|-------|---------------|---------------------|
|
|
158
|
+
| CC 5.1 | Risk mitigation | AC-5 | A.5.3 |
|
|
159
|
+
| CC 5.2 | Technology controls | AC-1, IA-2 | A.5.15, A.8.5 |
|
|
160
|
+
| CC 5.3 | Policy deployment | PM-1, PL-1 | A.5.1, C.5.2 |
|
|
161
|
+
|
|
162
|
+
#### CC 6 — Logical and Physical Access
|
|
163
|
+
|
|
164
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
165
|
+
|-----------|-------|---------------|---------------------|
|
|
166
|
+
| CC 6.1 | Access control | AC-2, AC-3, IA-2, SC-28 | A.5.15, A.8.5, A.8.24 |
|
|
167
|
+
| CC 6.2 | Access provisioning | AC-2, PS-4, PS-5 | A.5.18, A.6.5 |
|
|
168
|
+
| CC 6.3 | Access modification | AC-2, AC-6 | A.5.15, A.5.18 |
|
|
169
|
+
| CC 6.4 | Physical access | PE-2, PE-3, PE-6 | A.7.2, A.7.4 |
|
|
170
|
+
| CC 6.5 | Asset disposal | MP-6 | A.7.10, A.7.14 |
|
|
171
|
+
| CC 6.6 | Threat detection | RA-5, SI-4 | A.8.8, A.8.16 |
|
|
172
|
+
| CC 6.7 | Transmission security | SC-8 | A.5.14, A.8.24 |
|
|
173
|
+
| CC 6.8 | Malware prevention | SI-2, SI-3 | A.8.7, A.8.19 |
|
|
174
|
+
|
|
175
|
+
#### CC 7 — System Operations
|
|
176
|
+
|
|
177
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
178
|
+
|-----------|-------|---------------|---------------------|
|
|
179
|
+
| CC 7.1 | Operational monitoring | CM-6, RA-5 | A.8.9, A.8.8 |
|
|
180
|
+
| CC 7.2 | Anomaly detection | AU-6, SI-4 | A.8.15, A.8.16 |
|
|
181
|
+
| CC 7.3 | Incident response | IR-4 | A.5.24, A.5.25 |
|
|
182
|
+
| CC 7.4 | Incident management | IR-5, IR-6 | A.5.25, A.5.26 |
|
|
183
|
+
| CC 7.5 | Recovery | CP-4, CP-9, CP-10 | A.5.30, A.8.13 |
|
|
184
|
+
|
|
185
|
+
#### CC 8 — Change Management
|
|
186
|
+
|
|
187
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
188
|
+
|-----------|-------|---------------|---------------------|
|
|
189
|
+
| CC 8.1 | Change control | CM-3, CM-5, SA-3 | A.8.9, A.8.25, A.8.32 |
|
|
190
|
+
|
|
191
|
+
#### CC 9 — Risk Mitigation
|
|
192
|
+
|
|
193
|
+
| Criterion | Focus | NIST Controls | ISO Cross-Reference |
|
|
194
|
+
|-----------|-------|---------------|---------------------|
|
|
195
|
+
| CC 9.1 | Risk mitigation | CP-2, RA-7 | A.5.30, C.6.1.3 |
|
|
196
|
+
| CC 9.2 | Vendor management | AC-20, SA-9 | A.5.19, A.5.22 |
|
|
197
|
+
|
|
198
|
+
### Step 4: Generate Gap Analysis
|
|
199
|
+
|
|
200
|
+
For each criterion, document:
|
|
201
|
+
|
|
202
|
+
```markdown
|
|
203
|
+
## Gap: [CC x.x] — [Brief description]
|
|
204
|
+
|
|
205
|
+
**Current State**: [What exists today]
|
|
206
|
+
**Required State**: [What the auditor expects]
|
|
207
|
+
**Gap**: [What's missing]
|
|
208
|
+
**Remediation**:
|
|
209
|
+
1. [Specific action item]
|
|
210
|
+
2. [Specific action item]
|
|
211
|
+
**Priority**: Critical / High / Medium / Low
|
|
212
|
+
**Effort**: [Days/weeks to remediate]
|
|
213
|
+
**Owner**: [Person responsible]
|
|
214
|
+
**Evidence Needed**: [What to collect after fix]
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Step 5: Build Remediation Plan
|
|
218
|
+
|
|
219
|
+
Prioritize gaps by:
|
|
220
|
+
1. **Critical** — Audit will fail without this (CC 6.1, 6.2, 7.2, 7.5, 8.1)
|
|
221
|
+
2. **High** — Likely finding if not addressed (CC 1.4, 3.2, 6.6, 7.3)
|
|
222
|
+
3. **Medium** — Auditor will note but may not be a finding
|
|
223
|
+
4. **Low** — Best practice, not strictly required
|
|
224
|
+
|
|
225
|
+
### Step 6: Readiness Report
|
|
226
|
+
|
|
227
|
+
Generate a structured readiness assessment:
|
|
228
|
+
|
|
229
|
+
1. **Executive summary** — overall readiness percentage, estimated time to audit-ready
|
|
230
|
+
2. **Scope** — service description, trust categories, audit type
|
|
231
|
+
3. **Control matrix** — all applicable criteria with status (designed/implemented/effective)
|
|
232
|
+
4. **Gap analysis** — prioritized list of gaps with remediation plan
|
|
233
|
+
5. **Timeline** — remediation milestones leading to audit window
|
|
234
|
+
|
|
235
|
+
## Quick Reference: Top SOC 2 Failures
|
|
236
|
+
|
|
237
|
+
| # | Criterion | Common Failure | Fix |
|
|
238
|
+
|---|-----------|---------------|-----|
|
|
239
|
+
| 1 | CC 6.1 | MFA not universal | Enforce MFA on all systems with sensitive data |
|
|
240
|
+
| 2 | CC 6.2 | Access not revoked on termination | Automate deprovisioning; verify within 24h |
|
|
241
|
+
| 3 | CC 7.2 | No log monitoring | Configure alerts for auth failures, privilege changes |
|
|
242
|
+
| 4 | CC 8.1 | No change management | Require PR reviews; document deployment process |
|
|
243
|
+
| 5 | CC 7.5 | Backups never tested | Restore from backup quarterly; document results |
|
|
244
|
+
| 6 | CC 3.2 | No risk assessment | Conduct and document annual risk assessment |
|
|
245
|
+
| 7 | CC 6.6 | No vulnerability scanning | Deploy automated scanning; remediate criticals in 30d |
|
|
246
|
+
| 8 | CC 1.4 | Security training incomplete | Require annual training; track completion |
|
|
247
|
+
| 9 | CC 9.2 | Vendor risk not assessed | Maintain vendor register; collect SOC 2 reports |
|
|
248
|
+
| 10 | CC 7.3 | No incident response plan | Document plan; conduct tabletop exercise |
|
|
249
|
+
|
|
250
|
+
## DO / DON'T
|
|
251
|
+
|
|
252
|
+
### DO
|
|
253
|
+
- Start with Security (CC) criteria — they're always required and cover ~80% of effort
|
|
254
|
+
- Map to ISO 27001 if pursuing both frameworks — ~70% control overlap
|
|
255
|
+
- Collect evidence throughout the audit period, not just at audit time
|
|
256
|
+
- Include sub-service organizations in your description
|
|
257
|
+
- Define the audit period before starting evidence collection
|
|
258
|
+
|
|
259
|
+
### DON'T
|
|
260
|
+
- Include trust categories you can't support — better to pass on fewer than fail on more
|
|
261
|
+
- Assume Type I is "easy" — it requires all controls to be designed and implemented
|
|
262
|
+
- Forget the system description — auditors review this first and use it to scope their testing
|
|
263
|
+
- Use generic/template control descriptions — auditors expect your controls to match your actual environment
|
|
264
|
+
- Ignore complementary user entity controls (CUECs) — your customers need to know their responsibilities
|
|
265
|
+
|
|
266
|
+
## Troubleshooting
|
|
267
|
+
|
|
268
|
+
| Problem | Solution |
|
|
269
|
+
|---------|----------|
|
|
270
|
+
| First SOC 2, no existing controls | Start with CC 6 (access) and CC 8 (change management) — fastest to implement |
|
|
271
|
+
| Already have ISO 27001 | Map Annex A controls to SOC 2 CC; ~70% are already covered |
|
|
272
|
+
| Auditor requests evidence we don't have | Collect it now; document the process; note in description if control was implemented mid-period |
|
|
273
|
+
| Multiple environments (prod/staging/dev) | Only production environment needs to be in scope; document boundaries clearly |
|
|
274
|
+
| Sub-service org (AWS/GCP/Azure) | Use SOC 2 Type II report from the provider; document which controls they cover |
|
|
275
|
+
|
|
276
|
+
## Rules
|
|
277
|
+
|
|
278
|
+
For detailed SOC 2-specific guidance:
|
|
279
|
+
|
|
280
|
+
| File | Coverage |
|
|
281
|
+
|------|----------|
|
|
282
|
+
| `rules/logical-access.md` | CC 6.1–6.8 — access control, provisioning, physical, threat detection |
|
|
283
|
+
| `rules/system-operations.md` | CC 7.1–7.5 — monitoring, anomaly detection, incident response, recovery |
|
|
284
|
+
| `rules/change-vendor-management.md` | CC 8.1, CC 9.1–9.2 — change control, risk mitigation, vendor management |
|
|
285
|
+
| `rules/control-environment.md` | CC 1.1–1.5 — governance, ethics, org structure, competence, accountability |
|
|
286
|
+
| `rules/risk-assessment.md` | CC 3.1–3.4 — risk objectives, identification, fraud risk, change impact |
|
|
287
|
+
| `rules/control-activities.md` | CC 5.1–5.3 — risk mitigation selection, technology controls, policy deployment |
|
|
288
|
+
| `rules/communication-info.md` | CC 2.1–2.3 — internal/external communication, information quality |
|
|
289
|
+
| `rules/monitoring-activities.md` | CC 4.1–4.2 — ongoing monitoring, deficiency evaluation |
|
|
290
|
+
| `rules/optional-categories.md` | A 1.x, PI 1.x, C 1.x — Availability, Processing Integrity, Confidentiality |
|
|
291
|
+
| `rules/privacy-criteria.md` | P 1.x–8.x — Privacy criteria (when PII in scope) |
|
|
292
|
+
|
|
293
|
+
## Attribution
|
|
294
|
+
|
|
295
|
+
SOC 2 criteria mapping and readiness procedures developed with [Internal ISO Audit](https://internalisoaudit.com) (Hazel Castro, ISO 27001 Lead Auditor, 14+ years, 100+ audits).
|
|
296
|
+
|
|
297
|
+
## Runtime Detection
|
|
298
|
+
|
|
299
|
+
1. **Internal ISO Audit MCP server available** (best) — Live ISO 27001 control guidance with NIST cross-references. SOC 2 criteria map to ISO 27001 Annex A controls (~70% overlap); use `get_nist_mapping` for bidirectional lookup. Server: `internalisoaudit.com/api/mcp`
|
|
300
|
+
2. **Local compliance data available** (good) — Reads `compliance/` directory with SOC 2 test metadata
|
|
301
|
+
3. **Reference only** (baseline) — Uses embedded criteria mapping and checklists in `rules/`
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Change and Vendor Management — CC 8.1, CC 9.1–9.2
|
|
2
|
+
|
|
3
|
+
Per-criterion audit guidance for change control, risk mitigation, and third-party management.
|
|
4
|
+
|
|
5
|
+
## CC 8.1 — Change control
|
|
6
|
+
|
|
7
|
+
**Priority**: Critical | **NIST**: CM-3, CM-5, SA-3 | **ISO**: A.8.9, A.8.25, A.8.32
|
|
8
|
+
|
|
9
|
+
Auditors assess whether changes to production systems follow a documented, consistent process — authorization, testing, approval, and deployment. This is one of the top 5 most-tested criteria. Expect auditors to select a sample of production changes and trace each through the full lifecycle.
|
|
10
|
+
|
|
11
|
+
**What auditors test**:
|
|
12
|
+
- Sample 10-15 production deployments: verify each had a code review, testing evidence, and approval before merge
|
|
13
|
+
- Segregation of duties: the person who writes code cannot be the sole approver and deployer
|
|
14
|
+
- Emergency change process: hotfixes still require documentation (even if retroactive)
|
|
15
|
+
- Rollback capability: evidence that changes can be reverted if issues arise
|
|
16
|
+
- Branch protection: direct pushes to production branch are blocked; force-push is disabled
|
|
17
|
+
|
|
18
|
+
**Evidence to prepare**:
|
|
19
|
+
```bash
|
|
20
|
+
# GitHub: merged PRs with review status
|
|
21
|
+
gh pr list --state merged --limit 20 --json number,title,author,reviewDecision,mergedAt,mergedBy
|
|
22
|
+
|
|
23
|
+
# GitHub: branch protection rules
|
|
24
|
+
gh api repos/{owner}/{repo}/branches/main/protection | jq '{
|
|
25
|
+
required_reviews: .required_pull_request_reviews.required_approving_review_count,
|
|
26
|
+
dismiss_stale: .required_pull_request_reviews.dismiss_stale_reviews,
|
|
27
|
+
enforce_admins: .enforce_admins.enabled,
|
|
28
|
+
required_status_checks: .required_status_checks.contexts
|
|
29
|
+
}'
|
|
30
|
+
|
|
31
|
+
# GitHub: check for direct pushes bypassing PR process
|
|
32
|
+
gh api repos/{owner}/{repo}/commits --per-page=20 | \
|
|
33
|
+
jq '[.[] | select(.parents | length == 1)] | .[] | {sha: .sha[0:8], message: .commit.message[0:60], author: .author.login}'
|
|
34
|
+
|
|
35
|
+
# CI/CD: verify automated tests run on PRs
|
|
36
|
+
gh api repos/{owner}/{repo}/actions/workflows --jq '.workflows[] | {name, state}'
|
|
37
|
+
```
|
|
38
|
+
- Change management policy document
|
|
39
|
+
- Emergency change procedure (when and how hotfixes are handled)
|
|
40
|
+
- Deployment runbook or CI/CD pipeline documentation
|
|
41
|
+
|
|
42
|
+
**Startup pitfalls**:
|
|
43
|
+
- Founders bypass branch protection using admin override — auditors see this in the commit history
|
|
44
|
+
- "We review in Slack" — verbal approvals aren't auditable; use PR reviews
|
|
45
|
+
- No emergency change process — every hotfix is undocumented and unreviewed
|
|
46
|
+
- Testing means "it works on my machine" — no automated test suite or staging environment
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## CC 9.1 — Risk mitigation activities
|
|
51
|
+
|
|
52
|
+
**Priority**: High | **NIST**: CP-2, RA-7 | **ISO**: A.5.30, C.6.1.3
|
|
53
|
+
|
|
54
|
+
Auditors verify that identified risks have corresponding mitigation activities — controls, insurance, transfer, or documented acceptance. A risk register without linked mitigations is incomplete. The connection between risk assessment (CC 3) and concrete risk treatment is what auditors evaluate here.
|
|
55
|
+
|
|
56
|
+
**What auditors test**:
|
|
57
|
+
- Risk register entries include treatment decisions: mitigate, transfer, accept, or avoid
|
|
58
|
+
- Accepted risks have documented justification and management sign-off
|
|
59
|
+
- Mitigation controls are mapped to specific risks (traceability from risk to control)
|
|
60
|
+
- Business continuity plan addresses the organization's top operational risks
|
|
61
|
+
- Insurance coverage reviewed annually (cyber insurance, E&O, D&O as applicable)
|
|
62
|
+
|
|
63
|
+
**Evidence to prepare**:
|
|
64
|
+
- Risk register with treatment column (mitigate/transfer/accept/avoid) and control mapping
|
|
65
|
+
- Risk acceptance forms signed by management for accepted risks
|
|
66
|
+
- Business continuity plan covering top-5 operational risk scenarios
|
|
67
|
+
- Cyber insurance certificate of coverage (current policy period)
|
|
68
|
+
- Management review minutes where risk treatment decisions were discussed
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## CC 9.2 — Vendor and third-party management
|
|
73
|
+
|
|
74
|
+
**Priority**: Critical | **NIST**: AC-20, SA-9 | **ISO**: A.5.19, A.5.22
|
|
75
|
+
|
|
76
|
+
Auditors verify that the organization identifies, assesses, and monitors third-party vendors who access, store, or process data on its behalf. This includes cloud providers, SaaS tools, payment processors, and contractors with system access. The vendor management program should be proportionate to risk.
|
|
77
|
+
|
|
78
|
+
**What auditors test**:
|
|
79
|
+
- Vendor inventory: comprehensive list of vendors with data access, criticality rating, and review dates
|
|
80
|
+
- Risk assessment for critical vendors: documented evaluation of security posture before onboarding
|
|
81
|
+
- SOC 2 or equivalent reports collected annually from critical vendors (cloud providers, data processors)
|
|
82
|
+
- Vendor contracts include security requirements, data handling terms, and breach notification clauses
|
|
83
|
+
- Ongoing monitoring: critical vendor reviews at least annually, not just at initial onboarding
|
|
84
|
+
|
|
85
|
+
**Evidence to prepare**:
|
|
86
|
+
```bash
|
|
87
|
+
# GitHub: list third-party integrations
|
|
88
|
+
gh api orgs/{org}/installations --jq '.installations[] | {app_slug, permissions, events}'
|
|
89
|
+
|
|
90
|
+
# GCP: list external service accounts with access
|
|
91
|
+
gcloud projects get-iam-policy {project} --format=json | \
|
|
92
|
+
jq '.bindings[] | .members[] | select(contains("serviceAccount")) | select(contains("gserviceaccount.com") | not)'
|
|
93
|
+
```
|
|
94
|
+
- Vendor register (name, service, data access level, criticality, last review date)
|
|
95
|
+
- Vendor SOC 2 Type II reports for critical vendors (AWS, GCP, Azure, Stripe, etc.)
|
|
96
|
+
- Vendor security assessment questionnaire template
|
|
97
|
+
- Data processing agreements (DPAs) with vendors handling personal data
|
|
98
|
+
- Vendor onboarding and offboarding procedures
|
|
99
|
+
|
|
100
|
+
**Startup pitfalls**:
|
|
101
|
+
- No vendor inventory — dozens of SaaS tools adopted without tracking who has data access
|
|
102
|
+
- Relying on "they're a big company, they must be secure" instead of collecting SOC 2 reports
|
|
103
|
+
- No DPAs with vendors processing personal data — GDPR and SOC 2 both require this
|
|
104
|
+
- Vendor review is one-and-done at onboarding — no annual reassessment
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Communication and Information — CC 2.1–2.3
|
|
2
|
+
|
|
3
|
+
Per-criterion audit guidance for information quality, internal communication, and external communication.
|
|
4
|
+
|
|
5
|
+
## CC 2.1 — Internal information quality
|
|
6
|
+
|
|
7
|
+
**Priority**: Medium | **NIST**: AU-2, SI-5 | **ISO**: C.7.5.1
|
|
8
|
+
|
|
9
|
+
Auditors assess whether the organization generates and uses quality information to support the functioning of internal controls. This means security-relevant information — logs, metrics, reports, alerts — is accurate, timely, and available to the people who need it for decision-making.
|
|
10
|
+
|
|
11
|
+
**What auditors test**:
|
|
12
|
+
- Security-relevant information is generated: audit logs, access reports, vulnerability scans, incident records
|
|
13
|
+
- Information is accurate and complete: logs capture required fields (who, what, when, where)
|
|
14
|
+
- Information is timely: reports and dashboards are current, not stale exports from months ago
|
|
15
|
+
- Information systems are protected: audit logs cannot be modified or deleted by the users they track
|
|
16
|
+
- Data used for control monitoring is validated (e.g., access review data matches actual system state)
|
|
17
|
+
|
|
18
|
+
**Evidence to prepare**:
|
|
19
|
+
```bash
|
|
20
|
+
# GCP: verify audit logging is enabled
|
|
21
|
+
gcloud projects get-iam-policy {project} --format=json | jq '.auditConfigs'
|
|
22
|
+
|
|
23
|
+
# GCP: verify log integrity (export to separate project or write-once sink)
|
|
24
|
+
gcloud logging sinks list --format=json | jq '.[] | {name, destination}'
|
|
25
|
+
|
|
26
|
+
# GitHub: audit log availability
|
|
27
|
+
gh api orgs/{org}/audit-log --jq '.[0:3] | .[] | {action, actor, created_at}'
|
|
28
|
+
```
|
|
29
|
+
- List of security reports and dashboards with update frequency
|
|
30
|
+
- Audit log configuration showing required event types are captured
|
|
31
|
+
- Log integrity controls (separate storage account, write-once policies)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## CC 2.2 — Internal communication
|
|
36
|
+
|
|
37
|
+
**Priority**: Medium | **NIST**: PM-2, AT-2 | **ISO**: C.7.4, A.6.3
|
|
38
|
+
|
|
39
|
+
Auditors verify that security-related information — policies, responsibilities, changes, and expectations — is communicated effectively to all personnel. Internal communication isn't just "we have a wiki"; it's demonstrating that people actually receive and understand security requirements.
|
|
40
|
+
|
|
41
|
+
**What auditors test**:
|
|
42
|
+
- Security policies are communicated to all employees (not just published and forgotten)
|
|
43
|
+
- Onboarding includes security expectations, reporting procedures, and acceptable use
|
|
44
|
+
- Changes to security policies or procedures are communicated when they occur
|
|
45
|
+
- Regular security updates: newsletters, all-hands mentions, Slack announcements
|
|
46
|
+
- Employees in interviews can describe their security responsibilities and reporting channels
|
|
47
|
+
|
|
48
|
+
**Evidence to prepare**:
|
|
49
|
+
- Onboarding checklist showing security communication steps
|
|
50
|
+
- Security awareness communication records (email announcements, Slack messages, all-hands slides)
|
|
51
|
+
- Policy change communication evidence (email or message notifying staff of updates)
|
|
52
|
+
- Security training materials covering roles and responsibilities
|
|
53
|
+
- Internal security FAQ or knowledge base
|
|
54
|
+
|
|
55
|
+
**Startup pitfalls**:
|
|
56
|
+
- Security policies exist but nobody outside the security/compliance function knows about them
|
|
57
|
+
- Onboarding mentions security verbally but nothing is documented or acknowledged
|
|
58
|
+
- Policy changes happen silently — no communication when procedures are updated
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## CC 2.3 — External communication
|
|
63
|
+
|
|
64
|
+
**Priority**: Medium | **NIST**: PM-1 | **ISO**: A.5.14
|
|
65
|
+
|
|
66
|
+
Auditors verify that the organization communicates security-relevant information to external parties — customers, regulators, vendors, and the public — through appropriate channels. This includes the system description, security practices, incident notifications, and contractual commitments.
|
|
67
|
+
|
|
68
|
+
**What auditors test**:
|
|
69
|
+
- Security practices communicated to customers: security page, trust center, or documentation
|
|
70
|
+
- SOC 2 report distribution process: how customers request and receive the report
|
|
71
|
+
- Incident notification: contractual obligations met for customer communication during incidents
|
|
72
|
+
- Regulatory reporting: process for notifying regulators of security events when required
|
|
73
|
+
- Vendor communication: security requirements communicated to third parties in contracts and onboarding
|
|
74
|
+
|
|
75
|
+
**Evidence to prepare**:
|
|
76
|
+
- Security page or trust center URL (public-facing security information)
|
|
77
|
+
- NDA or report request process for SOC 2 report distribution
|
|
78
|
+
- Customer-facing incident communication templates and procedures
|
|
79
|
+
- Contractual breach notification obligations inventory
|
|
80
|
+
- Vendor security requirements (contract clauses, questionnaire, or onboarding materials)
|
|
81
|
+
|
|
82
|
+
**Startup pitfalls**:
|
|
83
|
+
- No public security page — customers can't find any information about security practices
|
|
84
|
+
- SOC 2 report shared openly without NDA — report is meant to be restricted use
|
|
85
|
+
- Incident notification process undefined — scrambling to communicate during an actual incident
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Control Activities — CC 5.1–5.3
|
|
2
|
+
|
|
3
|
+
Per-criterion audit guidance for risk mitigation selection, technology controls, and policy deployment.
|
|
4
|
+
|
|
5
|
+
## CC 5.1 — Risk mitigation selection
|
|
6
|
+
|
|
7
|
+
**Priority**: High | **NIST**: AC-5 | **ISO**: A.5.3
|
|
8
|
+
|
|
9
|
+
Auditors verify that the organization selects and deploys control activities that mitigate identified risks to acceptable levels. This is the bridge between the risk assessment (CC 3) and actual controls — each significant risk should trace to one or more controls. Segregation of duties is a key element auditors evaluate here.
|
|
10
|
+
|
|
11
|
+
**What auditors test**:
|
|
12
|
+
- Control activities are mapped to specific risks from the risk register (traceability)
|
|
13
|
+
- Segregation of duties: conflicting responsibilities are separated across different individuals
|
|
14
|
+
- Key incompatible functions identified and separated: access provisioning vs. access review, code development vs. deployment approval, payment initiation vs. payment approval
|
|
15
|
+
- Compensating controls documented where full segregation isn't feasible (common in small teams)
|
|
16
|
+
- Control design considers both preventive (stop it before it happens) and detective (find it after it happens) controls
|
|
17
|
+
|
|
18
|
+
**Evidence to prepare**:
|
|
19
|
+
- Risk-to-control mapping matrix (risk register entries linked to specific controls)
|
|
20
|
+
- Segregation of duties matrix identifying incompatible functions and how they're separated
|
|
21
|
+
- Compensating controls documentation for small-team exceptions
|
|
22
|
+
- Control design rationale for critical risks (why this control was selected over alternatives)
|
|
23
|
+
|
|
24
|
+
**Startup pitfalls**:
|
|
25
|
+
- No traceability between risks and controls — controls exist but aren't linked to specific risks
|
|
26
|
+
- Segregation of duties impossible with 3-person engineering team — document compensating controls instead of ignoring the requirement
|
|
27
|
+
- Only preventive controls, no detective controls — if prevention fails, there's no detection
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## CC 5.2 — Technology general controls
|
|
32
|
+
|
|
33
|
+
**Priority**: High | **NIST**: AC-1, IA-2 | **ISO**: A.5.15, A.8.5
|
|
34
|
+
|
|
35
|
+
Auditors verify that technology infrastructure supporting the control environment is itself controlled. This covers IT general controls (ITGCs): access management for infrastructure, authentication mechanisms, and the foundational technology controls that other controls depend on.
|
|
36
|
+
|
|
37
|
+
**What auditors test**:
|
|
38
|
+
- Infrastructure access controls: who can access production servers, databases, cloud consoles
|
|
39
|
+
- Authentication strength: MFA enforced for infrastructure access (cloud console, SSH, VPN)
|
|
40
|
+
- Automated controls functioning correctly: CI/CD gates, automated access reviews, scheduled scans
|
|
41
|
+
- Dependency management: technology controls don't rely on manual processes that could be skipped
|
|
42
|
+
- Technology control monitoring: alerts when automated controls fail or are bypassed
|
|
43
|
+
|
|
44
|
+
**Evidence to prepare**:
|
|
45
|
+
```bash
|
|
46
|
+
# GitHub: branch protection (automated control)
|
|
47
|
+
gh api repos/{owner}/{repo}/branches/main/protection | jq '{
|
|
48
|
+
required_reviews: .required_pull_request_reviews.required_approving_review_count,
|
|
49
|
+
required_checks: .required_status_checks.contexts,
|
|
50
|
+
enforce_admins: .enforce_admins.enabled
|
|
51
|
+
}'
|
|
52
|
+
|
|
53
|
+
# GCP: organization policies (automated guardrails)
|
|
54
|
+
gcloud resource-manager org-policies list --organization={org_id} --format=json | jq '.[].constraint'
|
|
55
|
+
|
|
56
|
+
# GitHub: required status checks (CI gates)
|
|
57
|
+
gh api repos/{owner}/{repo}/branches/main/protection/required_status_checks | jq '.contexts'
|
|
58
|
+
```
|
|
59
|
+
- Infrastructure access control matrix (who has access to what, at what level)
|
|
60
|
+
- Automated control inventory (CI/CD gates, automated scans, scheduled reviews)
|
|
61
|
+
- Technology control failure alerting configuration
|
|
62
|
+
|
|
63
|
+
**Startup pitfalls**:
|
|
64
|
+
- All engineers have production database access "for debugging" — violates least privilege
|
|
65
|
+
- CI/CD pipeline has no required checks — tests are optional and frequently skipped
|
|
66
|
+
- Cloud console access not protected by MFA — "it's inconvenient" is not an acceptable justification
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## CC 5.3 — Policy and procedure deployment
|
|
71
|
+
|
|
72
|
+
**Priority**: Medium | **NIST**: PM-1, PL-1 | **ISO**: A.5.1, C.5.2
|
|
73
|
+
|
|
74
|
+
Auditors verify that security policies and procedures are formalized, approved, communicated, and accessible to all relevant personnel. Policies must be living documents — reviewed periodically, updated when changes occur, and acknowledged by employees.
|
|
75
|
+
|
|
76
|
+
**What auditors test**:
|
|
77
|
+
- Information security policy suite exists: overarching policy plus supporting procedures
|
|
78
|
+
- Policies are approved by management (signature or formal approval record)
|
|
79
|
+
- Policies are reviewed at least annually and updated when significant changes occur
|
|
80
|
+
- Employees can access policies (intranet, shared drive, wiki) and know where to find them
|
|
81
|
+
- Policy acknowledgment: employees sign or electronically acknowledge reading policies
|
|
82
|
+
- Version control: policies have version numbers, effective dates, and review dates
|
|
83
|
+
|
|
84
|
+
**Evidence to prepare**:
|
|
85
|
+
- Policy inventory (list of all security-related policies with version, effective date, next review date)
|
|
86
|
+
- Signed management approval for each policy
|
|
87
|
+
- Policy acknowledgment records (employee signatures or electronic acknowledgment log)
|
|
88
|
+
- Policy distribution mechanism (shared drive link, wiki URL, HRIS integration)
|
|
89
|
+
- Policy review log showing annual review was conducted with any changes noted
|
|
90
|
+
|
|
91
|
+
**Startup pitfalls**:
|
|
92
|
+
- Policies exist in someone's Google Drive but aren't shared or discoverable
|
|
93
|
+
- No version control — impossible to prove which version was in effect during the audit period
|
|
94
|
+
- Policies never reviewed after initial creation — outdated content that doesn't match current practices
|
|
95
|
+
- Acknowledgment collected at onboarding but not when policies are updated
|