create-filegrc 0.3.4 → 0.5.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.
Files changed (60) hide show
  1. package/README.md +4 -3
  2. package/package.json +1 -1
  3. package/src/cli.js +12 -4
  4. package/src/defaults.js +299 -123
  5. package/src/index.js +30 -17
  6. package/template/AGENTS.md +55 -17
  7. package/template/README.md +20 -9
  8. package/template/WORKSPACE.md +13 -0
  9. package/template/data/AGENTS.md +41 -11
  10. package/template/data/action-items/AGENTS.md +2 -2
  11. package/template/data/appointments/appointment-independent-policy-reviewer.json +11 -0
  12. package/template/data/appointments/appointment-policy-owner.json +11 -0
  13. package/template/data/audits/AGENTS.md +1 -1
  14. package/template/data/collection-reviews/collection-review-complementary-control.json +10 -0
  15. package/template/data/collection-reviews/collection-review-framework.json +10 -0
  16. package/template/data/collection-reviews/collection-review-person.json +10 -0
  17. package/template/data/collection-reviews/collection-review-system.json +10 -0
  18. package/template/data/collection-reviews/collection-review-vendor.json +10 -0
  19. package/template/data/documents/document-business-continuity-disaster-recovery.json +14 -13
  20. package/template/data/documents/document-business-continuity-disaster-recovery.md +3 -1
  21. package/template/data/documents/document-contractor-policy-acknowledgement.json +12 -12
  22. package/template/data/documents/document-contractor-training-acknowledgement.json +15 -13
  23. package/template/data/documents/document-data-retention-schedule.json +11 -12
  24. package/template/data/documents/document-employee-handbook-acknowledgement.json +12 -12
  25. package/template/data/documents/document-employee-policy-acknowledgement.json +12 -12
  26. package/template/data/documents/document-employee-training-acknowledgement.json +15 -13
  27. package/template/data/documents/document-incident-response-plan.json +14 -13
  28. package/template/data/documents/document-incident-response-plan.md +4 -2
  29. package/template/data/documents/document-soc2-management-assertion.json +3 -3
  30. package/template/data/documents/document-soc2-management-representation.json +3 -3
  31. package/template/data/documents/document-soc2-period-completeness.json +3 -3
  32. package/template/data/documents/document-soc2-system-description.json +3 -3
  33. package/template/data/evidence/AGENTS.md +3 -3
  34. package/template/data/obligation-events/AGENTS.md +2 -2
  35. package/template/data/obligations/AGENTS.md +1 -1
  36. package/template/data/people/person-program-lead.json +9 -0
  37. package/template/data/policies/AGENTS.md +1 -1
  38. package/template/data/policies/policy-anti-bribery-corruption.json +10 -15
  39. package/template/data/policies/policy-anti-bribery-corruption.md +1 -1
  40. package/template/data/policies/policy-clear-desk-screen.json +9 -14
  41. package/template/data/policies/policy-clear-desk-screen.md +1 -1
  42. package/template/data/policies/policy-data-protection-handling.json +13 -24
  43. package/template/data/policies/policy-data-protection-handling.md +2 -2
  44. package/template/data/policies/policy-employee-handbook.json +9 -18
  45. package/template/data/policies/policy-information-security.json +11 -42
  46. package/template/data/policies/policy-information-security.md +3 -3
  47. package/template/data/policies/policy-mobile-computing-communications.json +9 -18
  48. package/template/data/policies/policy-mobile-computing-communications.md +1 -1
  49. package/template/data/renderer.json +1 -3
  50. package/template/data/systems/system-filegrc-program-repository.md +2 -2
  51. package/template/data/training/training-anti-bribery-high-risk-roles.json +1 -2
  52. package/template/data/training/training-privileged-sensitive-roles.json +1 -2
  53. package/template/data/training/training-secure-development.json +1 -2
  54. package/template/data/training/training-security-awareness.json +7 -9
  55. package/template/data/training/training-security-awareness.md +1 -1
  56. package/template/data/workspace.json +19 -8
  57. package/template/docs/filegrc-home.png +0 -0
  58. package/template/package.json +3 -2
  59. package/template-parameters.json +6 -1
  60. package/template/data/people/person-policy-owner.json +0 -10
@@ -42,7 +42,7 @@ Visitors must remain in authorized areas and be supervised where confidential in
42
42
 
43
43
  ## Lost material or suspected exposure
44
44
 
45
- Report lost papers, devices, badges, removable media, or suspected unauthorized viewing immediately to {{policy_owner_name}} at {{security_contact_email}}.
45
+ Report lost papers, devices, badges, removable media, or suspected unauthorized viewing immediately to the current Policy Owner at {{security_contact_email}}.
46
46
 
47
47
  ## Enforcement and review
48
48
 
@@ -1,33 +1,22 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "policy-data-protection-handling",
4
3
  "type": "policy",
5
4
  "title": "Data Protection and Handling Policy",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
6
+ "ownerIds": [
7
+ "appointment-policy-owner"
8
+ ],
8
9
  "policyKind": "information-security",
9
10
  "version": "1.0",
10
- "effectiveOn": "{{effective_date}}",
11
- "reviewCadence": {
12
- "mode": "calendar",
13
- "unit": "year",
14
- "interval": 1,
15
- "anchorDate": "{{effective_date}}"
16
- },
17
- "audience": ["employees", "contractors", "vendors"],
11
+ "audience": [
12
+ "employees",
13
+ "contractors",
14
+ "vendors"
15
+ ],
18
16
  "acknowledgementRequired": true,
19
- "relatedDocumentIds": ["document-data-retention-schedule"],
20
- "controlIds": [
21
- "control-policy-management",
22
- "control-risk-assessment",
23
- "control-access-authorization",
24
- "control-access-review-offboarding",
25
- "control-data-classification-inventory",
26
- "control-encryption-transmission",
27
- "control-data-retention-disposal",
28
- "control-incident-response",
29
- "control-vendor-due-diligence",
30
- "control-vendor-monitoring",
31
- "control-security-exceptions"
32
- ]
17
+ "relatedDocumentIds": [
18
+ "document-data-retention-schedule"
19
+ ],
20
+ "proposedEffectiveOn": "{{effective_date}}",
21
+ "programRole": "required"
33
22
  }
@@ -10,7 +10,7 @@ This policy applies to employees, contractors, vendors, systems, devices, and re
10
10
 
11
11
  ## Responsibilities
12
12
 
13
- {{policy_owner_name}} owns this policy. System and data owners decide which data a system may process, assign classifications, approve access, and set retention requirements. Everyone in scope must handle data according to its classification and report suspected loss or misuse.
13
+ The current Policy Owner owns this policy. System and data owners decide which data a system may process, assign classifications, approve access, and set retention requirements. Everyone in scope must handle data according to its classification and report suspected loss or misuse.
14
14
 
15
15
  Questions and reports should be sent to {{security_contact_email}}.
16
16
 
@@ -121,7 +121,7 @@ People who develop or materially change applications complete secure-development
121
121
 
122
122
  Violations may result in access removal, corrective action, contract remedies, or other action allowed by law and agreement.
123
123
 
124
- Exceptions require a documented business reason, owner, risk assessment, compensating controls, expiration date, and approval from {{policy_owner_name}}.
124
+ Exceptions require a documented business reason, owner, risk assessment, compensating controls, expiration date, and approval from the current Policy Owner.
125
125
 
126
126
  ## Review
127
127
 
@@ -1,30 +1,21 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "policy-employee-handbook",
4
3
  "type": "policy",
5
4
  "title": "Employee Handbook",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
6
+ "ownerIds": [
7
+ "appointment-policy-owner"
8
+ ],
8
9
  "policyKind": "workforce-conduct",
9
10
  "version": "1.0",
10
- "effectiveOn": "{{effective_date}}",
11
- "reviewCadence": {
12
- "mode": "calendar",
13
- "unit": "year",
14
- "interval": 1,
15
- "anchorDate": "{{effective_date}}"
16
- },
17
- "audience": ["employees"],
18
- "acknowledgementRequired": true,
19
- "controlIds": [
20
- "control-security-governance",
21
- "control-policy-management",
22
- "control-security-communication",
23
- "control-workforce-expectations",
24
- "control-performance-review"
11
+ "audience": [
12
+ "employees"
25
13
  ],
14
+ "acknowledgementRequired": true,
26
15
  "relatedDocumentIds": [
27
16
  "document-employee-handbook-acknowledgement",
28
17
  "document-employee-policy-acknowledgement"
29
- ]
18
+ ],
19
+ "proposedEffectiveOn": "{{effective_date}}",
20
+ "programRole": "conditional"
30
21
  }
@@ -1,60 +1,29 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "policy-information-security",
4
3
  "type": "policy",
5
4
  "title": "Information Security Policy",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
6
+ "ownerIds": [
7
+ "appointment-policy-owner"
8
+ ],
8
9
  "policyKind": "information-security",
9
10
  "version": "1.0",
10
- "effectiveOn": "{{effective_date}}",
11
- "reviewCadence": {
12
- "mode": "calendar",
13
- "unit": "year",
14
- "interval": 1,
15
- "anchorDate": "{{effective_date}}"
16
- },
17
- "audience": ["employees", "contractors", "vendors"],
11
+ "audience": [
12
+ "employees",
13
+ "contractors",
14
+ "vendors"
15
+ ],
18
16
  "acknowledgementRequired": true,
19
17
  "relatedPolicyIds": [
20
18
  "policy-clear-desk-screen",
21
19
  "policy-data-protection-handling",
22
20
  "policy-mobile-computing-communications"
23
21
  ],
24
- "controlIds": [
25
- "control-security-governance",
26
- "control-policy-management",
27
- "control-security-communication",
28
- "control-workforce-expectations",
29
- "control-security-training",
30
- "control-performance-review",
31
- "control-risk-assessment",
32
- "control-monitoring-remediation",
33
- "control-access-authorization",
34
- "control-strong-authentication",
35
- "control-access-review-offboarding",
36
- "control-physical-workspace-security",
37
- "control-data-classification-inventory",
38
- "control-encryption-transmission",
39
- "control-data-retention-disposal",
40
- "control-inventory-configuration",
41
- "control-endpoint-protection",
42
- "control-network-security",
43
- "control-change-management",
44
- "control-vulnerability-management",
45
- "control-penetration-testing",
46
- "control-logging-monitoring",
47
- "control-incident-response",
48
- "control-incident-exercise",
49
- "control-backup-restoration",
50
- "control-continuity-exercise",
51
- "control-vendor-due-diligence",
52
- "control-vendor-monitoring",
53
- "control-security-exceptions"
54
- ],
55
22
  "relatedDocumentIds": [
56
23
  "document-business-continuity-disaster-recovery",
57
24
  "document-incident-response-plan",
58
25
  "document-data-retention-schedule"
59
- ]
26
+ ],
27
+ "proposedEffectiveOn": "{{effective_date}}",
28
+ "programRole": "required"
60
29
  }
@@ -17,7 +17,7 @@ More specific standards and procedures may set stricter requirements.
17
17
 
18
18
  ## Governance and responsibilities
19
19
 
20
- {{policy_owner_name}} owns the information security program and this policy. Questions and incident reports should be sent to {{security_contact_email}}.
20
+ The current Policy Owner owns the information security program and this policy. Questions and incident reports should be sent to {{security_contact_email}}.
21
21
 
22
22
  The policy owner:
23
23
 
@@ -28,7 +28,7 @@ The policy owner:
28
28
 
29
29
  An independent reviewer chairs the security and risk oversight group. This person must be separate from the policy owner and able to challenge the owner's decisions. The reviewer will usually be another leader or manager in the organization, but may be external. The reviewer approves policies and governed plans, challenges management's assessment of control operation, and records independent decisions.
30
30
 
31
- The security and risk oversight group meets at least quarterly to review the risk register, material incidents, significant findings, vendor and access review results, policy changes, exercises, and overdue work. Each meeting has formal minutes, decisions, and assigned actions. A one-person company must appoint a qualified external person to fill the independent reviewer role because no second internal person is available.
31
+ The security and risk oversight group meets at least quarterly to review the risk register, material incidents, significant findings, vendor and access review results, policy changes, exercises, and overdue work. Each meeting has formal minutes, decisions, and assigned actions. When no suitable internal independent reviewer is available, the organization appoints a qualified external person to fill the role.
32
32
 
33
33
  System and process owners classify their systems and data, approve access, maintain safeguards, respond to findings, and keep recovery information current.
34
34
 
@@ -224,7 +224,7 @@ An exception to this policy requires:
224
224
  - Compensating controls
225
225
  - An accountable owner
226
226
  - An expiration or review date
227
- - Approval from {{policy_owner_name}} or a person with greater authority
227
+ - Approval from the current Policy Owner or a person with greater authority
228
228
 
229
229
  Violations may result in access removal, corrective action, contract remedies, or other action allowed by law and agreement.
230
230
 
@@ -1,27 +1,18 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "policy-mobile-computing-communications",
4
3
  "type": "policy",
5
4
  "title": "Mobile Computing and Communications Policy",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
6
+ "ownerIds": [
7
+ "appointment-policy-owner"
8
+ ],
8
9
  "policyKind": "information-security",
9
10
  "version": "1.0",
10
- "effectiveOn": "{{effective_date}}",
11
- "reviewCadence": {
12
- "mode": "calendar",
13
- "unit": "year",
14
- "interval": 1,
15
- "anchorDate": "{{effective_date}}"
16
- },
17
- "audience": ["employees", "contractors"],
11
+ "audience": [
12
+ "employees",
13
+ "contractors"
14
+ ],
18
15
  "acknowledgementRequired": true,
19
- "controlIds": [
20
- "control-policy-management",
21
- "control-strong-authentication",
22
- "control-physical-workspace-security",
23
- "control-encryption-transmission",
24
- "control-endpoint-protection",
25
- "control-network-security"
26
- ]
16
+ "proposedEffectiveOn": "{{effective_date}}",
17
+ "programRole": "supporting"
27
18
  }
@@ -63,7 +63,7 @@ The policy owner reviews authorized mobile devices, personal-device approvals, a
63
63
 
64
64
  ## Loss, theft, or compromise
65
65
 
66
- Report a lost, stolen, or suspected compromised device immediately to {{policy_owner_name}} at {{security_contact_email}}. Do not delay reporting while attempting to recover or investigate the device.
66
+ Report a lost, stolen, or suspected compromised device immediately to the current Policy Owner at {{security_contact_email}}. Do not delay reporting while attempting to recover or investigate the device.
67
67
 
68
68
  ## Return and disposal
69
69
 
@@ -1,11 +1,9 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "renderer-settings",
4
3
  "type": "renderer-settings",
5
4
  "title": "Renderer settings",
6
5
  "showOnboarding": true,
7
6
  "repositoryMode": "trunk",
8
7
  "authoritativeBranch": "main",
9
- "repositoryRemote": "origin",
10
- "completedStagePageIds": []
8
+ "repositoryRemote": "origin"
11
9
  }
@@ -1,9 +1,9 @@
1
1
  # filegrc Program Repository
2
2
 
3
- This Git repository is the system of record for filegrc governance records and their revision history. It can supply the training and acknowledgement catalog, exception and finding populations, policy and document approvals, obligation history, Policy Event workflows, and management evidence indexes.
3
+ This Git repository is the system of record for filegrc governance records and their revision history. It can supply the training and acknowledgement catalog, exception and finding populations, policy and document approvals, risk register and assessments, vendor inventory and reviews, oversight records, obligation history, Policy Event workflows, and management evidence indexes.
4
4
 
5
5
  ## Evidence Extraction
6
6
 
7
7
  Run filegrc from a clean commit. Use resource dates and audit links to select the exact engagement date or period, save the query or agent instructions with the export, and retain the fixed result behind an evidence record. Record a zero count when the committed source query returns no relevant items.
8
8
 
9
- The repository is authoritative only for records stored here. Identity, workforce, source-control, deployment, monitoring, endpoint, backup, vulnerability, and vendor systems remain authoritative for the activity they perform.
9
+ The repository is authoritative only for records stored here. Identity, workforce, source-control, deployment, monitoring, endpoint, backup, vulnerability, and external vendor-management systems remain authoritative for the activity they perform.
@@ -1,10 +1,9 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "training-anti-bribery-high-risk-roles",
4
3
  "type": "training",
5
4
  "title": "Anti-Bribery Training for Higher-Risk Roles",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
6
+ "ownerIds": ["appointment-policy-owner"],
8
7
  "audience": ["sales", "finance", "procurement", "government-interaction", "third-party-agents"],
9
8
  "assignmentTrigger": "covered-role-start-or-change",
10
9
  "completionWindowDays": 30,
@@ -1,10 +1,9 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "training-privileged-sensitive-roles",
4
3
  "type": "training",
5
4
  "title": "Privileged and Sensitive Role Training",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
6
+ "ownerIds": ["appointment-policy-owner"],
8
7
  "audience": ["privileged-administrators", "security", "finance", "privacy", "people-operations"],
9
8
  "assignmentTrigger": "covered-role-start-or-change",
10
9
  "completionWindowDays": 30,
@@ -1,10 +1,9 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "training-secure-development",
4
3
  "type": "training",
5
4
  "title": "Secure Development Training",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
6
+ "ownerIds": ["appointment-policy-owner"],
8
7
  "audience": ["engineering", "security", "software-development", "infrastructure"],
9
8
  "assignmentTrigger": "covered-role-start-or-change",
10
9
  "completionWindowDays": 30,
@@ -1,18 +1,16 @@
1
1
  {
2
- "schemaVersion": 1,
3
2
  "id": "training-security-awareness",
4
3
  "type": "training",
5
4
  "title": "Security Awareness and Incident Response Training",
6
5
  "status": "draft",
7
- "ownerIds": ["person-policy-owner"],
8
- "audience": ["employees", "contractors"],
6
+ "ownerIds": [
7
+ "appointment-policy-owner"
8
+ ],
9
+ "audience": [
10
+ "employees",
11
+ "contractors"
12
+ ],
9
13
  "assignmentTrigger": "onboarding",
10
- "recurrence": {
11
- "mode": "calendar",
12
- "unit": "year",
13
- "interval": 1,
14
- "anchorDate": "{{effective_date}}"
15
- },
16
14
  "completionWindowDays": 30,
17
15
  "policyIds": [
18
16
  "policy-clear-desk-screen",
@@ -162,7 +162,7 @@ Report any event that could affect the confidentiality, integrity, or availabili
162
162
  ## Reporting and first actions
163
163
 
164
164
  1. Stop the unsafe action. Do not continue entering credentials, sending data, or following the request.
165
- 2. Report the event immediately to {{security_contact_email}}. If that route is unavailable, contact {{policy_owner_name}} through an approved alternate method.
165
+ 2. Report the event immediately to {{security_contact_email}}. If that route is unavailable, contact the current Policy Owner through an approved alternate method.
166
166
  3. State what happened, when it happened, the affected account, device, system, or data, and any action already taken.
167
167
  4. Preserve the message, file, screen, device, or other evidence. Take a screenshot only when it is safe and does not expose more sensitive data.
168
168
  5. Follow response-team instructions. Remain available for questions.
@@ -1,6 +1,5 @@
1
1
  {
2
- "schemaVersion": 1,
3
- "dataModelVersion": "1",
2
+ "dataModelVersion": "3",
4
3
  "id": "workspace",
5
4
  "type": "workspace",
6
5
  "title": "{{program_title}}",
@@ -9,8 +8,20 @@
9
8
  "description": "{{program_description}}",
10
9
  "riskMethodology": {
11
10
  "method": "5x5 likelihood and impact",
12
- "likelihoodScale": ["Rare", "Unlikely", "Possible", "Likely", "Almost certain"],
13
- "impactScale": ["Negligible", "Minor", "Moderate", "Major", "Severe"],
11
+ "likelihoodScale": [
12
+ "Rare",
13
+ "Unlikely",
14
+ "Possible",
15
+ "Likely",
16
+ "Almost certain"
17
+ ],
18
+ "impactScale": [
19
+ "Negligible",
20
+ "Minor",
21
+ "Moderate",
22
+ "Major",
23
+ "Severe"
24
+ ],
14
25
  "ratingBands": {
15
26
  "low": "1-4",
16
27
  "medium": "5-9",
@@ -19,9 +30,9 @@
19
30
  }
20
31
  },
21
32
  "classificationDefinitions": {
22
- "Public": "Approved for public release.",
23
- "Internal": "Intended for the workforce and approved partners.",
24
- "Confidential": "Disclosure could harm the organization, a customer, or another person.",
25
- "Restricted": "Disclosure or alteration could cause severe harm or trigger legal duties."
33
+ "public": "Approved for public release.",
34
+ "internal": "Intended for the workforce and approved partners.",
35
+ "confidential": "Disclosure could harm the organization, a customer, or another person.",
36
+ "restricted": "Disclosure or alteration could cause severe harm or trigger legal duties."
26
37
  }
27
38
  }
Binary file
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "{{project_name}}",
3
- "version": "0.3.4",
3
+ "version": "0.5.0",
4
4
  "private": true,
5
5
  "description": "filegrc workspace for a SOC 2 program",
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "serve": "filegrc serve",
9
9
  "build": "filegrc build",
10
- "validate": "filegrc validate"
10
+ "validate": "filegrc validate",
11
+ "check:milestone": "filegrc milestone-check"
11
12
  },
12
13
  "dependencies": {
13
14
  "filegrc": "{{filegrc_version_range}}"
@@ -7,7 +7,12 @@
7
7
  },
8
8
  {
9
9
  "key": "policy_owner_name",
10
- "prompt": "Policy owner name",
10
+ "prompt": "Initial program lead name",
11
+ "required": true
12
+ },
13
+ {
14
+ "key": "policy_owner_job_title",
15
+ "prompt": "Initial program lead organization job title",
11
16
  "required": true
12
17
  },
13
18
  {
@@ -1,10 +0,0 @@
1
- {
2
- "schemaVersion": 1,
3
- "id": "person-policy-owner",
4
- "type": "person",
5
- "title": "{{policy_owner_name}}",
6
- "status": "active",
7
- "email": "{{policy_owner_email}}",
8
- "role": "Policy Owner",
9
- "teamIds": ["team-security-risk-oversight"]
10
- }