create-filegrc 0.1.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/LICENSE +21 -0
- package/README.md +18 -0
- package/bin/create-filegrc.js +8 -0
- package/package.json +26 -0
- package/src/cli.js +64 -0
- package/src/defaults.js +1063 -0
- package/src/index.js +252 -0
- package/template/AGENTS.md +227 -0
- package/template/README.md +102 -0
- package/template/data/AGENTS.md +185 -0
- package/template/data/action-items/AGENTS.md +11 -0
- package/template/data/audit-populations/AGENTS.md +13 -0
- package/template/data/audits/AGENTS.md +21 -0
- package/template/data/documents/document-business-continuity-disaster-recovery.json +29 -0
- package/template/data/documents/document-business-continuity-disaster-recovery.md +190 -0
- package/template/data/documents/document-contractor-policy-acknowledgement.json +21 -0
- package/template/data/documents/document-contractor-policy-acknowledgement.md +24 -0
- package/template/data/documents/document-contractor-training-acknowledgement.json +22 -0
- package/template/data/documents/document-contractor-training-acknowledgement.md +20 -0
- package/template/data/documents/document-data-retention-schedule.json +25 -0
- package/template/data/documents/document-data-retention-schedule.md +33 -0
- package/template/data/documents/document-employee-handbook-acknowledgement.json +21 -0
- package/template/data/documents/document-employee-handbook-acknowledgement.md +19 -0
- package/template/data/documents/document-employee-policy-acknowledgement.json +21 -0
- package/template/data/documents/document-employee-policy-acknowledgement.md +24 -0
- package/template/data/documents/document-employee-training-acknowledgement.json +22 -0
- package/template/data/documents/document-employee-training-acknowledgement.md +20 -0
- package/template/data/documents/document-incident-response-plan.json +29 -0
- package/template/data/documents/document-incident-response-plan.md +136 -0
- package/template/data/documents/document-soc2-management-assertion.json +17 -0
- package/template/data/documents/document-soc2-management-assertion.md +24 -0
- package/template/data/documents/document-soc2-management-representation.json +17 -0
- package/template/data/documents/document-soc2-management-representation.md +20 -0
- package/template/data/documents/document-soc2-period-completeness.json +17 -0
- package/template/data/documents/document-soc2-period-completeness.md +32 -0
- package/template/data/documents/document-soc2-system-description.json +17 -0
- package/template/data/documents/document-soc2-system-description.md +65 -0
- package/template/data/evidence/AGENTS.md +30 -0
- package/template/data/obligation-events/AGENTS.md +18 -0
- package/template/data/obligations/AGENTS.md +11 -0
- package/template/data/people/person-independent-approver.json +10 -0
- package/template/data/people/person-policy-owner.json +10 -0
- package/template/data/policies/AGENTS.md +15 -0
- package/template/data/policies/policy-anti-bribery-corruption.json +25 -0
- package/template/data/policies/policy-anti-bribery-corruption.md +87 -0
- package/template/data/policies/policy-clear-desk-screen.json +24 -0
- package/template/data/policies/policy-clear-desk-screen.md +49 -0
- package/template/data/policies/policy-data-protection-handling.json +34 -0
- package/template/data/policies/policy-data-protection-handling.md +130 -0
- package/template/data/policies/policy-employee-handbook.json +31 -0
- package/template/data/policies/policy-employee-handbook.md +161 -0
- package/template/data/policies/policy-information-security.json +61 -0
- package/template/data/policies/policy-information-security.md +233 -0
- package/template/data/policies/policy-mobile-computing-communications.json +28 -0
- package/template/data/policies/policy-mobile-computing-communications.md +74 -0
- package/template/data/renderer.json +7 -0
- package/template/data/risk-assessments/AGENTS.md +16 -0
- package/template/data/systems/system-filegrc-program-repository.md +9 -0
- package/template/data/training/training-anti-bribery-high-risk-roles.json +17 -0
- package/template/data/training/training-anti-bribery-high-risk-roles.md +19 -0
- package/template/data/training/training-privileged-sensitive-roles.json +21 -0
- package/template/data/training/training-privileged-sensitive-roles.md +20 -0
- package/template/data/training/training-secure-development.json +20 -0
- package/template/data/training/training-secure-development.md +22 -0
- package/template/data/training/training-security-awareness.json +28 -0
- package/template/data/training/training-security-awareness.md +192 -0
- package/template/data/workspace.json +27 -0
- package/template/docs/filegrc-audit.png +0 -0
- package/template/docs/filegrc-home.png +0 -0
- package/template/gitignore +4 -0
- package/template/package.json +15 -0
- package/template-parameters.json +34 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "document-employee-policy-acknowledgement",
|
|
4
|
+
"type": "document",
|
|
5
|
+
"title": "Employee Policy Acknowledgement",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"documentKind": "attestation-template",
|
|
8
|
+
"ownerIds": ["person-policy-owner"],
|
|
9
|
+
"approverIds": ["person-independent-approver"],
|
|
10
|
+
"version": "1.0",
|
|
11
|
+
"effectiveOn": "{{effective_date}}",
|
|
12
|
+
"reviewCadence": {
|
|
13
|
+
"mode": "calendar",
|
|
14
|
+
"unit": "year",
|
|
15
|
+
"interval": 1,
|
|
16
|
+
"anchorDate": "{{effective_date}}"
|
|
17
|
+
},
|
|
18
|
+
"classification": "internal",
|
|
19
|
+
"audience": ["employees"],
|
|
20
|
+
"controlIds": ["control-workforce-expectations"]
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Employee Policy Acknowledgement
|
|
2
|
+
|
|
3
|
+
I acknowledge that I received access to the following {{company_name}} documents:
|
|
4
|
+
|
|
5
|
+
- Anti-Bribery and Corruption Policy
|
|
6
|
+
- Business Continuity and Disaster Recovery Plan
|
|
7
|
+
- Clear Desk and Clear Screen Policy
|
|
8
|
+
- Data Protection and Handling Policy
|
|
9
|
+
- Information Security Policy
|
|
10
|
+
- Mobile Computing and Communications Policy
|
|
11
|
+
|
|
12
|
+
I understand that I am responsible for reading and following these documents, asking questions when a requirement is unclear, and reporting suspected violations.
|
|
13
|
+
|
|
14
|
+
I understand that the documents may be updated. When {{company_name}} requires a new acknowledgement, I will review the identified revisions before signing. The Git commit below identifies the exact revisions covered by this acknowledgement.
|
|
15
|
+
|
|
16
|
+
This acknowledgement does not change the terms of employment or create a contract where one does not otherwise exist.
|
|
17
|
+
|
|
18
|
+
Content Git commit: ___________________________________
|
|
19
|
+
|
|
20
|
+
Employee name: ______________________________________
|
|
21
|
+
|
|
22
|
+
Signature: __________________________________________
|
|
23
|
+
|
|
24
|
+
Date: ______________________________________________
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "document-employee-training-acknowledgement",
|
|
4
|
+
"type": "document",
|
|
5
|
+
"title": "Employee Training Acknowledgement",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"documentKind": "attestation-template",
|
|
8
|
+
"ownerIds": ["person-policy-owner"],
|
|
9
|
+
"approverIds": ["person-independent-approver"],
|
|
10
|
+
"version": "1.0",
|
|
11
|
+
"effectiveOn": "{{effective_date}}",
|
|
12
|
+
"reviewCadence": {
|
|
13
|
+
"mode": "calendar",
|
|
14
|
+
"unit": "year",
|
|
15
|
+
"interval": 1,
|
|
16
|
+
"anchorDate": "{{effective_date}}"
|
|
17
|
+
},
|
|
18
|
+
"classification": "internal",
|
|
19
|
+
"audience": ["employees"],
|
|
20
|
+
"controlIds": ["control-security-training"],
|
|
21
|
+
"relatedResourceIds": ["training-security-awareness"]
|
|
22
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Employee Training Acknowledgement
|
|
2
|
+
|
|
3
|
+
I acknowledge that I completed the following {{company_name}} training:
|
|
4
|
+
|
|
5
|
+
- Security Awareness and Incident Response Training
|
|
6
|
+
- Other assigned training: ______________________________
|
|
7
|
+
|
|
8
|
+
I understand the security responsibilities and reporting process described in the training. I had an opportunity to ask questions, and I will follow the policies and procedures that apply to my work.
|
|
9
|
+
|
|
10
|
+
I understand that training and policies may be updated. When {{company_name}} assigns revised or additional training, I will review the identified material and complete the required acknowledgement. The Git commit below identifies the exact training revision covered by this acknowledgement.
|
|
11
|
+
|
|
12
|
+
This acknowledgement confirms completion of assigned training. It does not create an employment contract or change written employment terms.
|
|
13
|
+
|
|
14
|
+
Training Git commit: __________________________________
|
|
15
|
+
|
|
16
|
+
Employee name: ______________________________________
|
|
17
|
+
|
|
18
|
+
Signature: __________________________________________
|
|
19
|
+
|
|
20
|
+
Date: ______________________________________________
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "document-incident-response-plan",
|
|
4
|
+
"type": "document",
|
|
5
|
+
"title": "Incident Response Plan",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"documentKind": "plan",
|
|
8
|
+
"ownerIds": ["person-policy-owner"],
|
|
9
|
+
"approverIds": ["person-independent-approver"],
|
|
10
|
+
"version": "1.0",
|
|
11
|
+
"effectiveOn": "{{effective_date}}",
|
|
12
|
+
"reviewCadence": {
|
|
13
|
+
"mode": "calendar",
|
|
14
|
+
"unit": "year",
|
|
15
|
+
"interval": 1,
|
|
16
|
+
"anchorDate": "{{effective_date}}"
|
|
17
|
+
},
|
|
18
|
+
"classification": "internal",
|
|
19
|
+
"audience": ["employees", "contractors"],
|
|
20
|
+
"acknowledgementRequired": false,
|
|
21
|
+
"controlIds": [
|
|
22
|
+
"control-security-communication",
|
|
23
|
+
"control-logging-monitoring",
|
|
24
|
+
"control-incident-response",
|
|
25
|
+
"control-incident-exercise"
|
|
26
|
+
],
|
|
27
|
+
"relatedDocumentIds": ["document-business-continuity-disaster-recovery"],
|
|
28
|
+
"evidenceIds": []
|
|
29
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Incident Response Plan
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This plan defines how {{company_name}} identifies, declares, contains, investigates, communicates, recovers from, and learns from security incidents.
|
|
6
|
+
|
|
7
|
+
## Scope
|
|
8
|
+
|
|
9
|
+
This plan applies to suspected or confirmed events affecting company or customer systems, data, identities, devices, facilities, vendors, or business operations. Availability disruptions may also activate the Business Continuity and Disaster Recovery Plan.
|
|
10
|
+
|
|
11
|
+
Questions and incident reports should be sent immediately to {{security_contact_email}}. If that route is unavailable or may be compromised, contact {{policy_owner_name}} through a known alternate channel.
|
|
12
|
+
|
|
13
|
+
## Definitions
|
|
14
|
+
|
|
15
|
+
A **security event** is an observable occurrence that may affect the confidentiality, integrity, or availability of systems or information.
|
|
16
|
+
|
|
17
|
+
A **security incident** is a security event that requires coordinated investigation, containment, recovery, or communication.
|
|
18
|
+
|
|
19
|
+
A **material incident** is an incident that:
|
|
20
|
+
|
|
21
|
+
- Causes or is reasonably likely to cause significant harm to customers, workers, operations, systems, or data
|
|
22
|
+
- Causes a significant failure to meet a service commitment or system requirement
|
|
23
|
+
- Results from a material control failure
|
|
24
|
+
- Requires notice to a customer, regulator, insurer, or another outside party
|
|
25
|
+
- Is designated material by the incident lead or executive sponsor based on the known facts
|
|
26
|
+
|
|
27
|
+
Critical and High incidents are material unless the incident lead records why they are not. A lower-severity incident may still be material.
|
|
28
|
+
|
|
29
|
+
## Severity
|
|
30
|
+
|
|
31
|
+
The incident lead assigns an initial severity during triage and updates it as facts change.
|
|
32
|
+
|
|
33
|
+
| Severity | General criteria | Response posture |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| Critical | Active or widespread compromise, severe customer or operational harm, major Restricted-data exposure, or an urgent external-notification duty | Immediate executive and technical coordination with continuous ownership until contained |
|
|
36
|
+
| High | Confirmed unauthorized access, material production or security-control impact, significant Confidential-data exposure, or likely material incident | Immediate coordinated response and frequent leadership updates |
|
|
37
|
+
| Medium | Confirmed incident with limited scope or impact that can be contained through normal response procedures | Assigned incident lead, documented response, and escalation if impact grows |
|
|
38
|
+
| Low | Security event requiring investigation or corrective work with little realized impact | Assigned owner, documented resolution, and trend review where useful |
|
|
39
|
+
|
|
40
|
+
Severity considers affected data, systems, customers, privileges, duration, spread, exploitability, business impact, and notification duties. Every severity change records the reason and time.
|
|
41
|
+
|
|
42
|
+
## Roles and authority
|
|
43
|
+
|
|
44
|
+
### Reporter
|
|
45
|
+
|
|
46
|
+
Anyone may report a suspected incident. Reporters preserve available evidence, stop unsafe activity when they can do so safely, and follow response instructions. They do not need proof before reporting.
|
|
47
|
+
|
|
48
|
+
### Incident lead
|
|
49
|
+
|
|
50
|
+
The incident lead declares the incident, assigns severity, coordinates work, maintains the incident record, approves status changes, and decides when the incident is contained and closed. {{policy_owner_name}} acts as incident lead until another qualified person is assigned.
|
|
51
|
+
|
|
52
|
+
### Technical responders
|
|
53
|
+
|
|
54
|
+
Technical responders investigate, contain, preserve evidence, remove the cause, restore service, and validate affected systems under the incident lead's direction.
|
|
55
|
+
|
|
56
|
+
### System and process owners
|
|
57
|
+
|
|
58
|
+
Owners explain business impact, dependencies, data, customer commitments, and recovery needs. They approve restored operation and remaining risk within their authority.
|
|
59
|
+
|
|
60
|
+
### Executive sponsor
|
|
61
|
+
|
|
62
|
+
The executive sponsor makes decisions beyond the incident lead's authority, accepts material residual risk, and approves material external communications.
|
|
63
|
+
|
|
64
|
+
### Legal, privacy, insurance, and communications owners
|
|
65
|
+
|
|
66
|
+
The responsible owners assess notification duties, preserve privilege where applicable, coordinate required third parties, and approve communications within their authority.
|
|
67
|
+
|
|
68
|
+
## Reporting and declaration
|
|
69
|
+
|
|
70
|
+
Report suspected phishing, malware, unauthorized access, credential exposure, data loss, unintended disclosure, security-control failure, or other security harm immediately.
|
|
71
|
+
|
|
72
|
+
The incident lead records:
|
|
73
|
+
|
|
74
|
+
- The report, detection time, and known occurrence time
|
|
75
|
+
- Affected systems, identities, data, customers, locations, and vendors
|
|
76
|
+
- Initial impact, severity, and materiality decision
|
|
77
|
+
- Response participants and assigned owners
|
|
78
|
+
- Evidence sources and preservation actions
|
|
79
|
+
- Decisions, actions, communications, and timestamps
|
|
80
|
+
- Required notifications and their owners and deadlines
|
|
81
|
+
- Recovery status, remaining risk, and follow-up work
|
|
82
|
+
|
|
83
|
+
An event becomes an incident when the incident lead determines that coordinated response is needed. Uncertainty is not a reason to delay containment or escalation.
|
|
84
|
+
|
|
85
|
+
## Response
|
|
86
|
+
|
|
87
|
+
The incident lead coordinates these activities in the order appropriate to the incident:
|
|
88
|
+
|
|
89
|
+
1. Validate the report and assign an initial severity.
|
|
90
|
+
2. Protect people and contain continuing harm.
|
|
91
|
+
3. Preserve evidence and establish a reliable incident timeline.
|
|
92
|
+
4. Identify affected systems, data, identities, customers, and dependencies.
|
|
93
|
+
5. Remove the cause and close the path used by the incident.
|
|
94
|
+
6. Recover systems and data through approved procedures.
|
|
95
|
+
7. Validate security, integrity, monitoring, and expected operation.
|
|
96
|
+
8. Complete required internal and external communications.
|
|
97
|
+
9. Monitor for recurrence.
|
|
98
|
+
10. Close the incident after owners accept the restored state and remaining risk.
|
|
99
|
+
|
|
100
|
+
Responders may take emergency action needed to contain harm. Emergency changes must be recorded and reviewed through the normal change process after service is stable.
|
|
101
|
+
|
|
102
|
+
## Evidence and investigation
|
|
103
|
+
|
|
104
|
+
Responders preserve relevant messages, logs, alerts, files, system images, access records, configuration, and communications. Evidence records identify the collector, source, collection time, affected system, handling method, and integrity information available from the source.
|
|
105
|
+
|
|
106
|
+
Access to incident evidence is limited to people with a response, legal, privacy, insurance, or audit need. Do not put credentials, active session material, regulated personal data, or confidential third-party reports in this repository unless its access and retention rules permit them.
|
|
107
|
+
|
|
108
|
+
## Communications and notification
|
|
109
|
+
|
|
110
|
+
Only authorized people communicate externally on behalf of {{company_name}}. The incident lead coordinates internal updates so responders, owners, and leadership receive the facts and decisions they need.
|
|
111
|
+
|
|
112
|
+
For each potential external notice, the responsible owner records:
|
|
113
|
+
|
|
114
|
+
- The triggering law, contract, policy, or commitment
|
|
115
|
+
- The affected audience and known facts
|
|
116
|
+
- The decision-maker and communication owner
|
|
117
|
+
- The deadline and the event that started the deadline
|
|
118
|
+
- The decision, approval, delivery time, and retained evidence
|
|
119
|
+
|
|
120
|
+
Communications distinguish confirmed facts from estimates, avoid unsupported claims, and preserve confidentiality.
|
|
121
|
+
|
|
122
|
+
## Recovery and closure
|
|
123
|
+
|
|
124
|
+
Recovery follows approved system objectives and the Business Continuity and Disaster Recovery Plan when coordinated continuity work is needed. Systems do not return to service until the incident lead and system owner accept their security, integrity, monitoring, and remaining risk.
|
|
125
|
+
|
|
126
|
+
Closure requires a final severity and materiality decision, an incident summary, disposition of notification duties, linked evidence, and assigned follow-up work.
|
|
127
|
+
|
|
128
|
+
## Review and exercises
|
|
129
|
+
|
|
130
|
+
Material incidents receive a root-cause and lessons review within one week. The review records contributing conditions, control failures, recovery results, communications, corrective actions, owners, and due dates.
|
|
131
|
+
|
|
132
|
+
{{company_name}} tests this plan at least annually. Exercises cover declaration, roles, escalation, evidence, communications, recovery coordination, and lessons. Each annual exercise also tests at least one representative security alert from generation through receipt, acknowledgement, escalation, and a fallback route. Record timestamps, expected and actual recipients, failed steps, findings, and follow-up work.
|
|
133
|
+
|
|
134
|
+
After a material change to monitoring, alert routing, escalation contacts, or response tooling, the owner tests the affected path within 30 days or records why the change cannot affect alert delivery or response.
|
|
135
|
+
|
|
136
|
+
The policy owner reviews this plan at least annually and after a material incident or material change to systems, risks, contacts, or notification duties. Git history records approvals and changes.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "document-soc2-management-assertion",
|
|
4
|
+
"type": "document",
|
|
5
|
+
"title": "SOC 2 Management Assertion",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"documentKind": "soc2-management-assertion",
|
|
8
|
+
"template": true,
|
|
9
|
+
"ownerIds": [
|
|
10
|
+
"person-policy-owner"
|
|
11
|
+
],
|
|
12
|
+
"approverIds": [
|
|
13
|
+
"person-independent-approver"
|
|
14
|
+
],
|
|
15
|
+
"version": "0.1",
|
|
16
|
+
"classification": "Confidential"
|
|
17
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# {{company_name}} Management Assertion
|
|
2
|
+
|
|
3
|
+
> Draft preparation document. Reconcile this draft to the wording agreed with the service auditor before approval.
|
|
4
|
+
|
|
5
|
+
<!-- type-1:start -->
|
|
6
|
+
Management is responsible for the attached description of the in-scope system as of [as-of date] and for designing, implementing, and documenting the controls within that system.
|
|
7
|
+
|
|
8
|
+
Based on the criteria selected for the engagement, management asserts that:
|
|
9
|
+
|
|
10
|
+
1. The description presents the system that was designed and implemented as of [as-of date].
|
|
11
|
+
2. The controls stated in the description were suitably designed to provide reasonable assurance that the applicable service commitments, system requirements, and Trust Services Criteria would be met, assuming the complementary controls identified in the description operated effectively.
|
|
12
|
+
<!-- type-1:end -->
|
|
13
|
+
|
|
14
|
+
<!-- type-2:start -->
|
|
15
|
+
Management is responsible for the attached description of the in-scope system for [start date] through [end date] and for designing, implementing, operating, and documenting the controls within that system.
|
|
16
|
+
|
|
17
|
+
Based on the criteria selected for the engagement, management asserts that:
|
|
18
|
+
|
|
19
|
+
1. The description presents the system that was designed and implemented during [start date] through [end date].
|
|
20
|
+
2. The controls stated in the description were suitably designed to provide reasonable assurance that the applicable service commitments, system requirements, and Trust Services Criteria would be met, assuming the complementary controls identified in the description operated effectively.
|
|
21
|
+
3. The controls operated effectively throughout [start date] through [end date].
|
|
22
|
+
<!-- type-2:end -->
|
|
23
|
+
|
|
24
|
+
[Identify the responsible management signer, title, signature or approval method, and date.]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "document-soc2-management-representation",
|
|
4
|
+
"type": "document",
|
|
5
|
+
"title": "SOC 2 Management Representation Letter",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"documentKind": "soc2-management-representation",
|
|
8
|
+
"template": true,
|
|
9
|
+
"ownerIds": [
|
|
10
|
+
"person-policy-owner"
|
|
11
|
+
],
|
|
12
|
+
"approverIds": [
|
|
13
|
+
"person-independent-approver"
|
|
14
|
+
],
|
|
15
|
+
"version": "0.1",
|
|
16
|
+
"classification": "Confidential"
|
|
17
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# {{company_name}} Management Representation Letter
|
|
2
|
+
|
|
3
|
+
> The service auditor normally supplies the required representation-letter wording near the end of fieldwork. Replace this preparation note with the agreed final letter, obtain the required management signature, and retain the signed fixed-format copy as linked evidence.
|
|
4
|
+
|
|
5
|
+
Before signing, reconcile the auditor's letter to:
|
|
6
|
+
|
|
7
|
+
- The final system description and management assertion
|
|
8
|
+
- The reporting date or period, [engagement date or period], and selected criteria
|
|
9
|
+
- All service commitments, system requirements, controls, and complementary controls
|
|
10
|
+
- Subservice organizations and the selected presentation method
|
|
11
|
+
- Complete event and control populations supplied to the auditor
|
|
12
|
+
- Known control exceptions, findings, incidents, fraud, legal matters, and significant changes
|
|
13
|
+
- Corrected and uncorrected description or evidence issues
|
|
14
|
+
- Subsequent events through the report date
|
|
15
|
+
|
|
16
|
+
Final letter received from auditor: [Date]
|
|
17
|
+
|
|
18
|
+
Management signer and title: [Name and title]
|
|
19
|
+
|
|
20
|
+
Signed letter evidence record: [Evidence ID]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "document-soc2-period-completeness",
|
|
4
|
+
"type": "document",
|
|
5
|
+
"title": "SOC 2 Period Completeness Statement",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"documentKind": "soc2-period-completeness",
|
|
8
|
+
"template": true,
|
|
9
|
+
"ownerIds": [
|
|
10
|
+
"person-policy-owner"
|
|
11
|
+
],
|
|
12
|
+
"approverIds": [
|
|
13
|
+
"person-independent-approver"
|
|
14
|
+
],
|
|
15
|
+
"version": "0.1",
|
|
16
|
+
"classification": "Confidential"
|
|
17
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# {{company_name}} Period Completeness Statement
|
|
2
|
+
|
|
3
|
+
> Complete this for the exact Type 2 reporting period. It records how management established that both recorded events and zero-event populations are complete.
|
|
4
|
+
|
|
5
|
+
Reporting period: [start date] through [end date]
|
|
6
|
+
|
|
7
|
+
Management reconciled every audit-population record linked to this engagement to its authoritative source and included every item relevant to the in-scope system and controls. The generated `population-index.csv` is incorporated into this statement by reference and records each population ID, source system, query, timezone, count, validation, reviewer, conclusion, and fixed export.
|
|
8
|
+
|
|
9
|
+
| Population | FileGRC population ID | Result or exception |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| Workforce starts, role changes, and departures | [Population ID] | [Result] |
|
|
12
|
+
| Access grants, changes, reviews, and removals | [Population ID] | [Result] |
|
|
13
|
+
| Production and infrastructure changes | [Population ID] | [Result] |
|
|
14
|
+
| Security events and incidents | [Population ID] | [Result] |
|
|
15
|
+
| Vulnerabilities and security scans | [Population ID] | [Result] |
|
|
16
|
+
| Vendors and vendor changes | [Population ID] | [Result] |
|
|
17
|
+
| Devices and other important assets | [Population ID] | [Result] |
|
|
18
|
+
| Training and policy acknowledgements | [Population ID] | [Result] |
|
|
19
|
+
| Backup failures and restoration tests | [Population ID] | [Result] |
|
|
20
|
+
| Security exceptions and control findings | [Population ID] | [Result] |
|
|
21
|
+
|
|
22
|
+
For a population with zero items, retain the source-system export or report that produced the zero count. Describe any source limitation, omitted item, or reconciliation difference below.
|
|
23
|
+
|
|
24
|
+
## Exceptions and Source Limitations
|
|
25
|
+
|
|
26
|
+
[None, or explain each exception and its treatment.]
|
|
27
|
+
|
|
28
|
+
## Management Confirmation
|
|
29
|
+
|
|
30
|
+
To the best of management's knowledge after the reconciliations above, FileGRC and the linked evidence contain the complete populations and reportable events relevant to the engagement period.
|
|
31
|
+
|
|
32
|
+
[Identify the responsible signer, title, signature or approval method, and date.]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "document-soc2-system-description",
|
|
4
|
+
"type": "document",
|
|
5
|
+
"title": "SOC 2 System Description",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"documentKind": "soc2-system-description",
|
|
8
|
+
"template": true,
|
|
9
|
+
"ownerIds": [
|
|
10
|
+
"person-policy-owner"
|
|
11
|
+
],
|
|
12
|
+
"approverIds": [
|
|
13
|
+
"person-independent-approver"
|
|
14
|
+
],
|
|
15
|
+
"version": "0.1",
|
|
16
|
+
"classification": "Internal"
|
|
17
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# {{company_name}} SOC 2 System Description
|
|
2
|
+
|
|
3
|
+
> Draft preparation document. Complete every bracketed item, reconcile it to the FileGRC records, and have the service auditor review the final presentation.
|
|
4
|
+
|
|
5
|
+
## Reporting Period and Scope
|
|
6
|
+
|
|
7
|
+
- Reporting date or period: [engagement date or period]
|
|
8
|
+
- In-scope service: [engagement scope]
|
|
9
|
+
- In-scope systems and environments: [in-scope systems]
|
|
10
|
+
- Trust Services Categories: [selected categories]
|
|
11
|
+
- Subservice organization method: [Carve-out, inclusive, or not applicable]
|
|
12
|
+
|
|
13
|
+
## DC1: Services Provided
|
|
14
|
+
|
|
15
|
+
[Describe what the service does, who uses it, and the main service workflows.]
|
|
16
|
+
|
|
17
|
+
## DC2: Service Commitments and System Requirements
|
|
18
|
+
|
|
19
|
+
[Summarize customer commitments, contractual security promises, internal objectives, and the system requirements needed to meet them. Link the FileGRC commitment records.]
|
|
20
|
+
|
|
21
|
+
## DC3: System Components
|
|
22
|
+
|
|
23
|
+
### Infrastructure
|
|
24
|
+
|
|
25
|
+
[Cloud accounts, networks, compute, storage, facilities, and supporting infrastructure.]
|
|
26
|
+
|
|
27
|
+
### Software
|
|
28
|
+
|
|
29
|
+
[Application components, repositories, deployment systems, identity systems, monitoring, and important business software.]
|
|
30
|
+
|
|
31
|
+
### People
|
|
32
|
+
|
|
33
|
+
[Teams and roles that develop, operate, secure, support, and oversee the service.]
|
|
34
|
+
|
|
35
|
+
### Procedures
|
|
36
|
+
|
|
37
|
+
[The main operating and security procedures that support the controls.]
|
|
38
|
+
|
|
39
|
+
### Data
|
|
40
|
+
|
|
41
|
+
[Important data types, classifications, flows, storage locations, retention, and disposal.]
|
|
42
|
+
|
|
43
|
+
## DC4: Significant System Incidents
|
|
44
|
+
|
|
45
|
+
[For Type 2, list significant incidents during the period and their effect, or state that management identified none after reconciling the incident population to the authoritative source. For Type 1, describe significant incidents relevant to understanding the system as of the reporting date.]
|
|
46
|
+
|
|
47
|
+
## DC5: Applicable Criteria and Controls
|
|
48
|
+
|
|
49
|
+
[Reference the selected criteria and control matrix generated by FileGRC.]
|
|
50
|
+
|
|
51
|
+
## DC6: Complementary User Entity Controls
|
|
52
|
+
|
|
53
|
+
[List controls customers must operate for the service controls to work as intended, or explain why none are required.]
|
|
54
|
+
|
|
55
|
+
## DC7: Subservice Organizations
|
|
56
|
+
|
|
57
|
+
[List relevant subservice organizations, the services they provide, the selected presentation method, relevant complementary subservice controls, and how they are monitored.]
|
|
58
|
+
|
|
59
|
+
## DC8: Criteria Not Relevant
|
|
60
|
+
|
|
61
|
+
[Identify any criteria within an included category that are not relevant and explain why.]
|
|
62
|
+
|
|
63
|
+
## DC9: Significant Changes
|
|
64
|
+
|
|
65
|
+
[For Type 2, describe changes during the period that could affect a report user's understanding, or state that management identified none after reconciling the change population. For Type 1, describe significant changes relevant to understanding the system as of the reporting date.]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Evidence Instructions
|
|
2
|
+
|
|
3
|
+
An evidence record explains what a proof item is, where it came from, what period it supports, who collected it, and which records or controls it supports. The attachment alone is not enough.
|
|
4
|
+
|
|
5
|
+
## Create evidence
|
|
6
|
+
|
|
7
|
+
1. Run `npx filegrc guide evidence --json`.
|
|
8
|
+
2. Use one evidence record for one coherent proof item or fixed export.
|
|
9
|
+
3. Put local attachments under `data/evidence/EVIDENCE_ID/` and list their data-relative paths in `filePaths`.
|
|
10
|
+
4. Use `externalReference` only when the file must remain in an approved external system. FileGRC never fetches it.
|
|
11
|
+
5. Link `sourceResourceIds`, `controlIds`, and `auditIds` as applicable. Use `sourceCommit` when the evidence represents repository state.
|
|
12
|
+
6. Name the actual collector. A `verified` record also needs the actual verifier and verification date.
|
|
13
|
+
|
|
14
|
+
Copy a local fixed file and update the record atomically:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npx filegrc attach EVIDENCE_ID /path/to/source-file --name auditor-facing-name.csv
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The command never overwrites an existing attachment.
|
|
21
|
+
|
|
22
|
+
Use `npx filegrc detach EVIDENCE_ID FILE_NAME --yes` when removing a mistaken attachment. FileGRC will not delete an evidence record while local attachments remain.
|
|
23
|
+
|
|
24
|
+
For a rendered page capture, record the route, filters, audit period, exact Git commit, capture time and method, source resource IDs, and screenshot. A current screenshot cannot prove an earlier state unless it is rendered from or bound to that revision.
|
|
25
|
+
|
|
26
|
+
For a signed acknowledgement, bind the attestation to the exact content Git revision and store the signed file as evidence.
|
|
27
|
+
|
|
28
|
+
For a `population-export`, also record the authoritative `sourceSystemId`, exact period, generation timestamp, timezone, query or report parameters, item count, completeness check, and accuracy check. A zero-item population still needs its source export and query.
|
|
29
|
+
|
|
30
|
+
Do not commit secrets, session data, regulated data, or personal data that may need erasure. Use an approved external reference when Git is not an appropriate store.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Policy Event Instructions
|
|
2
|
+
|
|
3
|
+
Do not create an `obligation-event` or its action items by hand. Start the configured checklist:
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
npx filegrc obligations --json
|
|
7
|
+
npx filegrc trigger EVENT_TYPE --occurred-on YYYY-MM-DD --subject RESOURCE_ID --json
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Use `--occurred-at` with an RFC 3339 timestamp when any action has an hour-based deadline. The command creates the event and full action checklist atomically.
|
|
11
|
+
|
|
12
|
+
Complete each action with the requested resource type and proof. Then close the workflow:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
npx filegrc complete-event OBLIGATION_EVENT_ID --completed-on YYYY-MM-DD
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
FileGRC refuses to close an event with unfinished or unproved actions. Cancel an event only when the triggering event itself was entered in error or did not occur; explain the reason in related records or the commit message.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Obligation Instructions
|
|
2
|
+
|
|
3
|
+
An obligation is a reusable policy schedule or event template. It is not the record that proves one occurrence happened.
|
|
4
|
+
|
|
5
|
+
- Calendar obligations need a valid recurrence anchor, owners, expected completion types, and policy or control links.
|
|
6
|
+
- Event obligations need a stable lowercase `eventType`, a prompt, owners, expected completion types, and an explicit deadline window.
|
|
7
|
+
- Keep completed occurrences in `completionResourceIds`. Do not replace prior links when a new period starts.
|
|
8
|
+
- When an approved cadence changes, update the policy, control, and obligation together.
|
|
9
|
+
- Pause or retire a template only when the underlying policy work no longer applies. Do not delete historical templates that explain prior periods.
|
|
10
|
+
|
|
11
|
+
Use `npx filegrc obligations --json` to inspect calculated work. Use `npx filegrc complete OBLIGATION_ID completion-mutation.json` to create and link a dated occurrence in one validated write.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "person-independent-approver",
|
|
4
|
+
"type": "person",
|
|
5
|
+
"title": "Independent Approver",
|
|
6
|
+
"status": "external",
|
|
7
|
+
"role": "External Security and Risk Oversight Reviewer",
|
|
8
|
+
"employmentType": "external-reviewer",
|
|
9
|
+
"teamIds": ["team-security-risk-oversight"]
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Policy Instructions
|
|
2
|
+
|
|
3
|
+
Policies state required behavior. Controls, obligations, training, attestations, and evidence show how the organization applies that behavior.
|
|
4
|
+
|
|
5
|
+
Use the `content` Markdown slot for the policy text. Keep ownership and approval metadata in JSON. The approver must be separate from the owner, including through team membership, and must not operate the controls they review.
|
|
6
|
+
|
|
7
|
+
Keep a policy `draft` until its text, owner, scope, related requirements and controls, approval, effective date, review cadence, and acknowledgement requirement match actual practice. When activating it:
|
|
8
|
+
|
|
9
|
+
1. Record the real approver and approval date.
|
|
10
|
+
2. Set the effective date.
|
|
11
|
+
3. Link the controls and requirements it supports.
|
|
12
|
+
4. Update or create its recurring and event obligations.
|
|
13
|
+
5. Assign training or attestations when the policy requires them.
|
|
14
|
+
|
|
15
|
+
For a material revision, preserve Git history, obtain a new approval, and require a new acknowledgement when the audience’s responsibilities changed. Do not reuse the audit firm as a management approver without confirming independence.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "policy-anti-bribery-corruption",
|
|
4
|
+
"type": "policy",
|
|
5
|
+
"title": "Anti-Bribery and Corruption Policy",
|
|
6
|
+
"status": "draft",
|
|
7
|
+
"ownerIds": ["person-policy-owner"],
|
|
8
|
+
"approverIds": ["person-independent-approver"],
|
|
9
|
+
"policyKind": "corporate-conduct",
|
|
10
|
+
"version": "1.0",
|
|
11
|
+
"effectiveOn": "{{effective_date}}",
|
|
12
|
+
"reviewCadence": {
|
|
13
|
+
"mode": "calendar",
|
|
14
|
+
"unit": "year",
|
|
15
|
+
"interval": 1,
|
|
16
|
+
"anchorDate": "{{effective_date}}"
|
|
17
|
+
},
|
|
18
|
+
"audience": ["employees", "contractors", "agents"],
|
|
19
|
+
"acknowledgementRequired": true,
|
|
20
|
+
"controlIds": [
|
|
21
|
+
"control-security-governance",
|
|
22
|
+
"control-policy-management",
|
|
23
|
+
"control-workforce-expectations"
|
|
24
|
+
]
|
|
25
|
+
}
|