@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,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
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Control Environment — CC 1.1–1.5
|
|
2
|
+
|
|
3
|
+
Per-criterion audit guidance for governance, ethics, organizational structure, and accountability.
|
|
4
|
+
|
|
5
|
+
## CC 1.1 — Ethics and integrity
|
|
6
|
+
|
|
7
|
+
**Priority**: Medium | **NIST**: PS-1, PS-3, PS-6 | **ISO**: A.6.1, A.6.2, A.6.4
|
|
8
|
+
|
|
9
|
+
Auditors assess whether the organization sets the tone from the top on integrity and ethical behavior. This isn't about having a perfect culture — it's about demonstrating that leadership has established expectations, communicated them, and created mechanisms for accountability. For startups, the code of conduct and background checks are the minimum viable evidence.
|
|
10
|
+
|
|
11
|
+
**What auditors test**:
|
|
12
|
+
- Code of conduct or ethics policy exists and is signed by all employees (including founders)
|
|
13
|
+
- Background checks completed for employees with access to sensitive data — verify checks completed before start date
|
|
14
|
+
- Whistleblower or ethics reporting mechanism exists (even a simple anonymous form counts)
|
|
15
|
+
- Management demonstrates ethical tone: policies apply equally to leadership and staff
|
|
16
|
+
- Sample 3-5 employee files for signed acknowledgments
|
|
17
|
+
|
|
18
|
+
**Evidence to prepare**:
|
|
19
|
+
- Code of conduct or ethics policy (with effective date predating audit period)
|
|
20
|
+
- Signed acknowledgment records for all employees (export from HRIS or document management)
|
|
21
|
+
- Background check completion records (date of check vs. start date)
|
|
22
|
+
- Whistleblower policy or ethics reporting channel documentation
|
|
23
|
+
- Employee handbook section covering ethical standards and consequences
|
|
24
|
+
|
|
25
|
+
**Startup pitfalls**:
|
|
26
|
+
- Code of conduct doesn't exist or was written after the audit period started
|
|
27
|
+
- Background checks skipped for early employees and contractors
|
|
28
|
+
- "We're too small for a whistleblower policy" — auditors expect one regardless of size
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## CC 1.2 — Board oversight
|
|
33
|
+
|
|
34
|
+
**Priority**: Medium | **NIST**: PM-1, PM-2 | **ISO**: C.5.1, C.5.3
|
|
35
|
+
|
|
36
|
+
Auditors verify that governance bodies (board, advisory board, or management committee) exercise oversight of the internal control environment. For startups without a formal board, the equivalent is documented management reviews where leadership evaluates security posture and risk.
|
|
37
|
+
|
|
38
|
+
**What auditors test**:
|
|
39
|
+
- Board or management committee meets at regular intervals (at least quarterly)
|
|
40
|
+
- Meeting minutes include discussion of security, risk, or compliance topics
|
|
41
|
+
- Board members have relevant expertise or access to advisors for security/technology oversight
|
|
42
|
+
- Management reporting: leadership receives periodic updates on security metrics, incidents, and compliance status
|
|
43
|
+
- Charter or terms of reference define the governance body's responsibilities for internal controls
|
|
44
|
+
|
|
45
|
+
**Evidence to prepare**:
|
|
46
|
+
- Board or management meeting minutes from the audit period (at least quarterly)
|
|
47
|
+
- Board charter or management review charter covering security oversight responsibilities
|
|
48
|
+
- Security/compliance status reports presented to leadership
|
|
49
|
+
- Board member biographies showing relevant expertise
|
|
50
|
+
- Evidence of independent oversight (external advisors, audit committee, or independent board members)
|
|
51
|
+
|
|
52
|
+
**Startup pitfalls**:
|
|
53
|
+
- No documented board meetings — investor updates don't count unless they cover security governance
|
|
54
|
+
- Management reviews happen informally but are never documented with minutes
|
|
55
|
+
- Security is never a board/management agenda item — only discussed reactively after incidents
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## CC 1.3 — Organizational structure
|
|
60
|
+
|
|
61
|
+
**Priority**: Medium | **NIST**: PM-2 | **ISO**: C.5.3
|
|
62
|
+
|
|
63
|
+
Auditors verify that the organization has a defined structure with clear lines of authority and reporting for security-related functions. Someone must be accountable for the security program — even if it's a shared responsibility in a small team, it should be documented.
|
|
64
|
+
|
|
65
|
+
**What auditors test**:
|
|
66
|
+
- Organizational chart showing reporting lines for security function
|
|
67
|
+
- Named security owner (CISO, VP Engineering, CTO, or designated security lead)
|
|
68
|
+
- Reporting line: security function reports to management with authority to act
|
|
69
|
+
- Segregation of duties: key security functions (access management, change approval, incident response) are not concentrated in one person without compensating controls
|
|
70
|
+
- Job descriptions include security responsibilities where applicable
|
|
71
|
+
|
|
72
|
+
**Evidence to prepare**:
|
|
73
|
+
- Current organizational chart (with date)
|
|
74
|
+
- Security program charter or policy naming the responsible individual
|
|
75
|
+
- Job descriptions for security-relevant roles (even if security is one of several responsibilities)
|
|
76
|
+
- RACI matrix for key security processes (access management, incident response, change control)
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## CC 1.4 — Competence commitment
|
|
81
|
+
|
|
82
|
+
**Priority**: High | **NIST**: AT-2, PS-3 | **ISO**: A.6.1, A.6.3
|
|
83
|
+
|
|
84
|
+
Auditors verify that the organization hires competent people and invests in keeping their skills current through training. Security awareness training is the most commonly tested element — expect auditors to check completion rates and content relevance.
|
|
85
|
+
|
|
86
|
+
**What auditors test**:
|
|
87
|
+
- Security awareness training completed by all employees within audit period (100% completion expected)
|
|
88
|
+
- Training content covers: phishing recognition, password hygiene, incident reporting, acceptable use
|
|
89
|
+
- New hire training completed within first 30 days of employment
|
|
90
|
+
- Role-specific training for security-critical positions (e.g., secure coding for developers)
|
|
91
|
+
- Training records are maintained with dates, participants, and completion status
|
|
92
|
+
|
|
93
|
+
**Evidence to prepare**:
|
|
94
|
+
- Training completion records with dates (export from LMS, Google Classroom, or training platform)
|
|
95
|
+
- Training content outline or syllabus covering security topics
|
|
96
|
+
- Phishing simulation results (if applicable — demonstrates training effectiveness)
|
|
97
|
+
- New hire onboarding checklist showing security training step with deadline
|
|
98
|
+
- Certificates or completion records for role-specific training
|
|
99
|
+
|
|
100
|
+
**Startup pitfalls**:
|
|
101
|
+
- No formal training — "we talk about security in all-hands" isn't documented or verifiable
|
|
102
|
+
- Training completed by 80% of employees — the 20% gap is a finding
|
|
103
|
+
- Training content is generic and doesn't cover the organization's specific policies
|
|
104
|
+
- No tracking mechanism — "everyone did it" without records is unverifiable
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## CC 1.5 — Accountability
|
|
109
|
+
|
|
110
|
+
**Priority**: Medium | **NIST**: PS-3, PS-4 | **ISO**: A.6.4, A.6.5
|
|
111
|
+
|
|
112
|
+
Auditors verify that individuals are held accountable for their internal control responsibilities. This connects ethics (CC 1.1) with consequences — if someone violates security policy, there's a defined process for addressing it. Accountability also means performance evaluations include security responsibilities.
|
|
113
|
+
|
|
114
|
+
**What auditors test**:
|
|
115
|
+
- Disciplinary process exists for security policy violations (documented in employee handbook)
|
|
116
|
+
- The process is communicated to all employees (typically at onboarding and via training)
|
|
117
|
+
- Performance evaluations include security-related responsibilities for relevant roles
|
|
118
|
+
- Consequences are applied consistently — leadership is not exempt
|
|
119
|
+
- Termination procedures include security considerations (access revocation, NDA reminders)
|
|
120
|
+
|
|
121
|
+
**Evidence to prepare**:
|
|
122
|
+
- Employee handbook section covering disciplinary process for policy violations
|
|
123
|
+
- Signed policy acknowledgment forms (proving employees know the consequences)
|
|
124
|
+
- Performance review template showing security-related criteria (for security-relevant roles)
|
|
125
|
+
- Termination checklist with security steps (access revocation, equipment return, NDA reminder)
|
|
126
|
+
- Exit interview template covering ongoing confidentiality obligations
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# Logical and Physical Access — CC 6.1–6.8
|
|
2
|
+
|
|
3
|
+
Per-criterion audit guidance for access control, provisioning, physical security, threat detection, and data protection.
|
|
4
|
+
|
|
5
|
+
## CC 6.1 — Logical access security
|
|
6
|
+
|
|
7
|
+
**Priority**: Critical | **NIST**: AC-2, AC-3, IA-2, SC-28 | **ISO**: A.5.15, A.8.5, A.8.24
|
|
8
|
+
|
|
9
|
+
Auditors assess whether the organization restricts system access to authorized users through layered controls — identity verification, role-based permissions, encryption, and session management. The focus is on whether controls work together as a system, not just whether individual tools are configured.
|
|
10
|
+
|
|
11
|
+
**What auditors test**:
|
|
12
|
+
- Sample 10-15 user accounts across systems: verify each account's access matches the person's documented role
|
|
13
|
+
- Confirm MFA is enforced (not just available) on all systems storing or processing sensitive data
|
|
14
|
+
- Verify encryption at rest (AES-256 or equivalent) for databases, object storage, and backups
|
|
15
|
+
- Check for shared or generic accounts — each should be documented with a named owner
|
|
16
|
+
- Test that failed login attempts are logged and trigger alerts after threshold (typically 5-10 attempts)
|
|
17
|
+
|
|
18
|
+
**Evidence to prepare**:
|
|
19
|
+
```bash
|
|
20
|
+
# Google Workspace: user list with MFA enforcement status
|
|
21
|
+
gam print users fields primaryEmail,name,orgUnitPath,isAdmin,isEnforcedIn2Sv
|
|
22
|
+
|
|
23
|
+
# GitHub: org-level security settings
|
|
24
|
+
gh api orgs/{org} | jq '{two_factor_requirement_enabled, default_repository_permission}'
|
|
25
|
+
|
|
26
|
+
# GCP: IAM bindings showing role assignments
|
|
27
|
+
gcloud projects get-iam-policy {project} --format=json | jq '.bindings[] | {role, members}'
|
|
28
|
+
|
|
29
|
+
# TLS configuration check
|
|
30
|
+
openssl s_client -connect {host}:443 -tls1_2 < /dev/null 2>&1 | grep "Protocol\|Cipher"
|
|
31
|
+
|
|
32
|
+
# Azure: list role assignments
|
|
33
|
+
az role assignment list --all --output json | jq '.[] | {principalName, roleDefinitionName, scope}'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Startup pitfalls**:
|
|
37
|
+
- Using personal Gmail/GitHub accounts for company systems — creates access gaps when people leave
|
|
38
|
+
- MFA "enabled" but not "enforced" — users can skip enrollment indefinitely
|
|
39
|
+
- Encryption at rest assumed because "cloud provider handles it" — auditors want explicit confirmation per service
|
|
40
|
+
- Shared credentials for CI/CD, monitoring, or SaaS tools with no documented owner
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## CC 6.2 — Access provisioning and deprovisioning
|
|
45
|
+
|
|
46
|
+
**Priority**: Critical | **NIST**: AC-2, PS-4, PS-5 | **ISO**: A.5.18, A.6.5
|
|
47
|
+
|
|
48
|
+
Auditors verify that access is granted through a documented authorization process and revoked promptly when no longer needed. The provisioning-to-deprovisioning lifecycle is one of the most frequently tested areas in a SOC 2 audit — expect auditors to trace individual employees from hire to termination.
|
|
49
|
+
|
|
50
|
+
**What auditors test**:
|
|
51
|
+
- Sample 5-10 new hires: verify access was authorized before provisioning (ticket, email approval, or workflow)
|
|
52
|
+
- Sample 5-10 terminations: verify access was revoked within 24-48 hours across all systems
|
|
53
|
+
- Cross-reference HR termination dates with last-active dates in IdP, GitHub, cloud consoles, and SaaS tools
|
|
54
|
+
- Check for orphaned accounts — active accounts with no corresponding current employee
|
|
55
|
+
- Verify that access request and revocation processes are documented, not just tribal knowledge
|
|
56
|
+
|
|
57
|
+
**Evidence to prepare**:
|
|
58
|
+
```bash
|
|
59
|
+
# Google Workspace: identify potentially orphaned accounts
|
|
60
|
+
gam print users fields primaryEmail,lastLoginTime,suspended | \
|
|
61
|
+
awk -F',' '$2 < "2024-01-01" && $3 != "True" {print $1, $2}'
|
|
62
|
+
|
|
63
|
+
# GitHub: org members with activity dates
|
|
64
|
+
gh api orgs/{org}/members --paginate | jq '.[] | {login, type}'
|
|
65
|
+
|
|
66
|
+
# Cross-reference terminated employees (manual step):
|
|
67
|
+
# Export HR termination list → compare against active accounts in each system
|
|
68
|
+
```
|
|
69
|
+
- HR-to-IT onboarding workflow documentation (ticketing system or checklist)
|
|
70
|
+
- Termination checklist with explicit IT deprovisioning steps
|
|
71
|
+
- Access request approval records (email threads, Jira tickets, or HRIS workflow logs)
|
|
72
|
+
|
|
73
|
+
**Startup pitfalls**:
|
|
74
|
+
- No formal offboarding process — founder "remembers" to revoke access but misses secondary systems
|
|
75
|
+
- Deprovisioning only covers email — GitHub, cloud console, SaaS tools, and API keys are forgotten
|
|
76
|
+
- Relying on quarterly access reviews to catch terminations instead of event-driven revocation
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## CC 6.3 — Access modification
|
|
81
|
+
|
|
82
|
+
**Priority**: High | **NIST**: AC-2, AC-6 | **ISO**: A.5.15, A.5.18
|
|
83
|
+
|
|
84
|
+
When employees change roles, get promoted, or shift teams, their access should be reviewed and adjusted. Auditors look for permission accumulation — people who retain old access after moving to a new role, gradually amassing broader access than any single role requires.
|
|
85
|
+
|
|
86
|
+
**What auditors test**:
|
|
87
|
+
- Sample 3-5 internal transfers or promotions: verify previous role's access was reviewed and excess removed
|
|
88
|
+
- Check for users with permissions spanning multiple business functions (e.g., engineering + finance access)
|
|
89
|
+
- Verify that role changes trigger an access review workflow, not just additive provisioning
|
|
90
|
+
- Look for dormant permissions: access granted months ago that hasn't been used
|
|
91
|
+
|
|
92
|
+
**Evidence to prepare**:
|
|
93
|
+
```bash
|
|
94
|
+
# GCP: identify users with multiple high-privilege roles
|
|
95
|
+
gcloud projects get-iam-policy {project} --format=json | \
|
|
96
|
+
jq '[.bindings[] | .members[] as $m | {member: $m, role: .role}] | group_by(.member) | map(select(length > 2))'
|
|
97
|
+
|
|
98
|
+
# GitHub: users who are members of multiple teams
|
|
99
|
+
gh api orgs/{org}/members --paginate | jq '.[].login' | while read user; do
|
|
100
|
+
teams=$(gh api orgs/{org}/members/$user/teams 2>/dev/null | jq length)
|
|
101
|
+
echo "$user: $teams teams"
|
|
102
|
+
done
|
|
103
|
+
```
|
|
104
|
+
- Access review records from most recent quarterly review cycle
|
|
105
|
+
- Documentation of role-change access review process
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## CC 6.4 — Physical access controls
|
|
110
|
+
|
|
111
|
+
**Priority**: High | **NIST**: PE-2, PE-3, PE-6 | **ISO**: A.7.2, A.7.4
|
|
112
|
+
|
|
113
|
+
Physical access to facilities housing systems and data must be restricted to authorized personnel. For cloud-native companies, this primarily means relying on cloud provider SOC 2 reports for data center controls while managing office and endpoint physical security directly.
|
|
114
|
+
|
|
115
|
+
**What auditors test**:
|
|
116
|
+
- For on-premises: visitor logs, badge access records, security camera footage availability
|
|
117
|
+
- For cloud-hosted: confirm cloud provider SOC 2 Type II report covers physical security and review for exceptions
|
|
118
|
+
- Office security: verify that server rooms, network closets, or sensitive areas have restricted access
|
|
119
|
+
- Remote workforce: endpoint encryption and screen lock policies serve as compensating controls
|
|
120
|
+
- Verify that physical access lists are reviewed periodically (at least annually)
|
|
121
|
+
|
|
122
|
+
**Evidence to prepare**:
|
|
123
|
+
```bash
|
|
124
|
+
# macOS: verify FileVault disk encryption
|
|
125
|
+
fdesetup status
|
|
126
|
+
|
|
127
|
+
# macOS: verify screen lock is configured
|
|
128
|
+
system_profiler SPConfigurationProfileDataType 2>/dev/null | grep -A5 "maxInactivity"
|
|
129
|
+
```
|
|
130
|
+
- Cloud provider SOC 2 Type II reports (AWS, GCP, Azure) — specifically the physical security sections
|
|
131
|
+
- Office badge access logs or visitor sign-in records (if applicable)
|
|
132
|
+
- Clean desk policy documentation
|
|
133
|
+
- Remote work security policy with endpoint requirements
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## CC 6.5 — Asset disposal
|
|
138
|
+
|
|
139
|
+
**Priority**: Medium | **NIST**: MP-6 | **ISO**: A.7.10, A.7.14
|
|
140
|
+
|
|
141
|
+
When hardware, media, or storage containing sensitive data is decommissioned, the organization must ensure data is irrecoverably destroyed. Auditors verify that disposal is documented and that data can't be recovered from retired assets.
|
|
142
|
+
|
|
143
|
+
**What auditors test**:
|
|
144
|
+
- Inventory of disposed hardware and storage media during the audit period
|
|
145
|
+
- Certificates of destruction from disposal vendors (for physical media)
|
|
146
|
+
- Verification that cloud storage and database instances are fully deleted, not just "stopped"
|
|
147
|
+
- Data wiping procedures for laptops and devices before reassignment or disposal
|
|
148
|
+
|
|
149
|
+
**Evidence to prepare**:
|
|
150
|
+
```bash
|
|
151
|
+
# GCP: list deleted instances (audit log)
|
|
152
|
+
gcloud logging read 'resource.type="gce_instance" AND protoPayload.methodName="v1.compute.instances.delete"' \
|
|
153
|
+
--limit=20 --format=json | jq '.[].protoPayload | {timestamp: .requestMetadata.requestAttributes.time, instance: .resourceName}'
|
|
154
|
+
|
|
155
|
+
# Azure: activity log for resource deletions
|
|
156
|
+
az monitor activity-log list --offset 90d --query "[?operationName.value=='Microsoft.Compute/virtualMachines/delete']" --output json
|
|
157
|
+
```
|
|
158
|
+
- Hardware disposal log (serial number, date, method, witness)
|
|
159
|
+
- Certificates of destruction from e-waste or shredding vendors
|
|
160
|
+
- Policy document covering data sanitization standards (NIST 800-88 reference)
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## CC 6.6 — Threat and vulnerability detection
|
|
165
|
+
|
|
166
|
+
**Priority**: Critical | **NIST**: RA-5, SI-4 | **ISO**: A.8.8, A.8.16
|
|
167
|
+
|
|
168
|
+
Auditors verify that the organization proactively identifies vulnerabilities and threats before they're exploited. This means automated scanning, not just reactive patching. Expect auditors to ask for scan reports and remediation timelines.
|
|
169
|
+
|
|
170
|
+
**What auditors test**:
|
|
171
|
+
- Vulnerability scanning: automated scans running at least weekly against production infrastructure
|
|
172
|
+
- Scan coverage: all production-facing systems are in scope, not just a subset
|
|
173
|
+
- Remediation SLAs: critical vulnerabilities patched within 14-30 days, with evidence of tracking
|
|
174
|
+
- Penetration testing: at least annual, with documented findings and remediation
|
|
175
|
+
- Dependency scanning: automated checks for known vulnerabilities in third-party libraries
|
|
176
|
+
|
|
177
|
+
**Evidence to prepare**:
|
|
178
|
+
```bash
|
|
179
|
+
# GitHub: Dependabot alerts summary
|
|
180
|
+
gh api repos/{owner}/{repo}/dependabot/alerts --jq '[.[] | {severity: .security_advisory.severity, state}] | group_by(.severity) | map({severity: .[0].severity, count: length})'
|
|
181
|
+
|
|
182
|
+
# GitHub: code scanning alerts
|
|
183
|
+
gh api repos/{owner}/{repo}/code-scanning/alerts --jq '[.[] | {severity: .rule.severity, state}] | group_by(.state) | map({state: .[0].state, count: length})'
|
|
184
|
+
|
|
185
|
+
# GCP: Security Command Center findings
|
|
186
|
+
gcloud scc findings list organizations/{org_id} --format=json | jq '.[].finding | {category, severity, state}'
|
|
187
|
+
```
|
|
188
|
+
- Most recent vulnerability scan report (redacted if needed)
|
|
189
|
+
- Penetration test report and remediation status
|
|
190
|
+
- Vulnerability management policy with remediation SLAs by severity
|
|
191
|
+
|
|
192
|
+
**Startup pitfalls**:
|
|
193
|
+
- Dependabot enabled but alerts ignored — hundreds of unresolved alerts is worse than no scanner
|
|
194
|
+
- No penetration test ever conducted — budget at least one external test before audit
|
|
195
|
+
- Scanning only covers web app, not infrastructure, containers, or dependencies
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## CC 6.7 — Transmission security
|
|
200
|
+
|
|
201
|
+
**Priority**: High | **NIST**: SC-8 | **ISO**: A.5.14, A.8.24
|
|
202
|
+
|
|
203
|
+
Data in transit must be protected from interception and tampering. Auditors verify that TLS/encryption is enforced on all channels carrying sensitive data — not just the main web app, but internal service communication, API endpoints, and data transfers.
|
|
204
|
+
|
|
205
|
+
**What auditors test**:
|
|
206
|
+
- TLS 1.2+ enforced on all public-facing endpoints (TLS 1.0/1.1 disabled)
|
|
207
|
+
- Internal service-to-service communication encrypted (mutual TLS or service mesh)
|
|
208
|
+
- Email encryption for sensitive communications (TLS enforcement on mail servers)
|
|
209
|
+
- File transfer mechanisms use encrypted protocols (SFTP, SCP — not plain FTP)
|
|
210
|
+
- Certificate management: no expired certificates, automated renewal preferred
|
|
211
|
+
|
|
212
|
+
**Evidence to prepare**:
|
|
213
|
+
```bash
|
|
214
|
+
# Check TLS version and cipher on production endpoint
|
|
215
|
+
openssl s_client -connect {host}:443 -tls1_2 < /dev/null 2>&1 | grep "Protocol\|Cipher"
|
|
216
|
+
|
|
217
|
+
# Verify TLS 1.0/1.1 are rejected
|
|
218
|
+
openssl s_client -connect {host}:443 -tls1 < /dev/null 2>&1 | grep "alert"
|
|
219
|
+
openssl s_client -connect {host}:443 -tls1_1 < /dev/null 2>&1 | grep "alert"
|
|
220
|
+
|
|
221
|
+
# GCP: SSL policy check
|
|
222
|
+
gcloud compute ssl-policies describe {policy-name} --format=json | jq '{minTlsVersion, profile}'
|
|
223
|
+
|
|
224
|
+
# Check certificate expiration
|
|
225
|
+
echo | openssl s_client -connect {host}:443 2>/dev/null | openssl x509 -noout -dates
|
|
226
|
+
```
|
|
227
|
+
- Network architecture diagram showing encryption boundaries
|
|
228
|
+
- TLS configuration documentation for internal services
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## CC 6.8 — Malware prevention
|
|
233
|
+
|
|
234
|
+
**Priority**: High | **NIST**: SI-2, SI-3 | **ISO**: A.8.7, A.8.19
|
|
235
|
+
|
|
236
|
+
Auditors verify that endpoint and server protection mechanisms detect, prevent, and respond to malware. For cloud-native organizations, this extends to container image scanning and CI/CD pipeline protections.
|
|
237
|
+
|
|
238
|
+
**What auditors test**:
|
|
239
|
+
- Endpoint protection deployed on all company-managed devices (laptops, workstations)
|
|
240
|
+
- Endpoint agent is active and reporting — not just installed but disabled
|
|
241
|
+
- Server/container protection: image scanning in CI/CD, runtime protection in production
|
|
242
|
+
- Patch management: OS and application patches applied within defined SLAs
|
|
243
|
+
- Email filtering: anti-phishing and attachment scanning on inbound email
|
|
244
|
+
|
|
245
|
+
**Evidence to prepare**:
|
|
246
|
+
```bash
|
|
247
|
+
# macOS: check for endpoint protection agent
|
|
248
|
+
ls /Library/Application\ Support/ | grep -i -E "(crowdstrike|sentinel|carbon|defender)"
|
|
249
|
+
|
|
250
|
+
# macOS: verify OS is current
|
|
251
|
+
sw_vers
|
|
252
|
+
|
|
253
|
+
# GitHub: check for container scanning in CI
|
|
254
|
+
gh api repos/{owner}/{repo}/actions/workflows --jq '.workflows[].name' | grep -i -E "scan|security|snyk|trivy"
|
|
255
|
+
```
|
|
256
|
+
- Endpoint protection dashboard export showing device coverage and status
|
|
257
|
+
- Patch management report showing compliance percentage
|
|
258
|
+
- Container image scanning results from CI/CD pipeline
|
|
259
|
+
- Email security configuration (SPF, DKIM, DMARC records)
|
|
260
|
+
|
|
261
|
+
**Startup pitfalls**:
|
|
262
|
+
- "We use Macs, Macs don't get malware" — auditors expect endpoint protection regardless of OS
|
|
263
|
+
- Endpoint agent installed during onboarding but never verified as running
|
|
264
|
+
- No patch management cadence — relying on users to update their own devices
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Monitoring Activities — CC 4.1–4.2
|
|
2
|
+
|
|
3
|
+
Per-criterion audit guidance for ongoing monitoring and deficiency evaluation.
|
|
4
|
+
|
|
5
|
+
## CC 4.1 — Ongoing monitoring
|
|
6
|
+
|
|
7
|
+
**Priority**: Medium | **NIST**: CA-7, PM-6 | **ISO**: C.9.1
|
|
8
|
+
|
|
9
|
+
Auditors verify that the organization continuously monitors the effectiveness of its internal controls — not just at audit time, but throughout the year. This means management has mechanisms to detect when controls degrade, stop working, or are bypassed. The distinction from CC 7.2 (anomaly detection) is that CC 4.1 covers monitoring of the controls themselves, not just the systems they protect.
|
|
10
|
+
|
|
11
|
+
**What auditors test**:
|
|
12
|
+
- Management reviews of control effectiveness at defined intervals (at least quarterly)
|
|
13
|
+
- Automated monitoring: alerts when critical controls fail (e.g., branch protection disabled, MFA turned off, backups stop running)
|
|
14
|
+
- Key metrics tracked over time: access review completion rates, vulnerability remediation timelines, training completion percentages
|
|
15
|
+
- Internal audit or self-assessment conducted during the audit period
|
|
16
|
+
- Control monitoring results are reported to management with trends and exceptions
|
|
17
|
+
|
|
18
|
+
**Evidence to prepare**:
|
|
19
|
+
```bash
|
|
20
|
+
# GitHub: verify branch protection is still active (control monitoring)
|
|
21
|
+
gh api repos/{owner}/{repo}/branches/main/protection --jq '{enforced: true}' 2>&1
|
|
22
|
+
|
|
23
|
+
# GCP: verify monitoring policies are active (alerting on control failures)
|
|
24
|
+
gcloud monitoring policies list --format=json | jq '.[] | {displayName, enabled}'
|
|
25
|
+
|
|
26
|
+
# GCP: check backup automation status
|
|
27
|
+
gcloud sql instances describe {instance} --format=json | jq '.settings.backupConfiguration'
|
|
28
|
+
```
|
|
29
|
+
- Management review meeting minutes discussing control effectiveness
|
|
30
|
+
- Control monitoring dashboard or metrics report (quarterly at minimum)
|
|
31
|
+
- Internal audit or self-assessment report from the audit period
|
|
32
|
+
- Exception log: instances where controls failed or were bypassed, with resolution
|
|
33
|
+
|
|
34
|
+
**Startup pitfalls**:
|
|
35
|
+
- Controls implemented at audit prep time but no ongoing monitoring to verify they keep working
|
|
36
|
+
- Management reviews are informal conversations with no documentation
|
|
37
|
+
- No alerting on control failures — branch protection silently disabled for months
|
|
38
|
+
- Metrics collected but never reviewed or acted upon
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## CC 4.2 — Deficiency evaluation and remediation
|
|
43
|
+
|
|
44
|
+
**Priority**: Medium | **NIST**: CA-2 | **ISO**: C.9.2.1
|
|
45
|
+
|
|
46
|
+
Auditors verify that when control deficiencies are identified — through monitoring, incidents, audits, or testing — they are evaluated for severity, tracked to remediation, and reported to management. A deficiency that's identified but never fixed is arguably worse than one never discovered, because it demonstrates awareness without action.
|
|
47
|
+
|
|
48
|
+
**What auditors test**:
|
|
49
|
+
- Deficiencies identified through monitoring (CC 4.1), incidents (CC 7.3), or assessments are logged
|
|
50
|
+
- Each deficiency has: severity rating, owner, remediation plan, and target completion date
|
|
51
|
+
- Remediation is tracked to completion — not just planned but verified as resolved
|
|
52
|
+
- Management receives reports on open deficiencies and remediation progress
|
|
53
|
+
- Root cause analysis conducted for significant deficiencies to prevent recurrence
|
|
54
|
+
|
|
55
|
+
**Evidence to prepare**:
|
|
56
|
+
- Deficiency tracking log or remediation tracker (Jira, spreadsheet, or GRC tool)
|
|
57
|
+
- Remediation evidence for deficiencies closed during the audit period
|
|
58
|
+
- Management reports showing deficiency status and trends
|
|
59
|
+
- Root cause analysis documentation for significant deficiencies
|
|
60
|
+
- Corrective action verification records (confirming fixes actually work)
|
|
61
|
+
|
|
62
|
+
**Startup pitfalls**:
|
|
63
|
+
- Deficiencies noted during previous audit but not remediated by the next one — repeat findings
|
|
64
|
+
- No formal tracking — issues discussed in Slack but never logged or followed through
|
|
65
|
+
- Remediation planned but not verified — "we fixed it" without testing the fix
|
|
66
|
+
- No root cause analysis — same type of deficiency keeps recurring
|