filegrc 0.6.5 → 0.7.1
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 +8 -0
- package/model/v4.json +179 -78
- package/package.json +2 -2
- package/src/audit-preparation.js +465 -48
- package/src/audit-transition.js +5 -0
- package/src/batch-review.js +14 -5
- package/src/cli.js +107 -0
- package/src/content-readiness.js +11 -0
- package/src/evidence-packet.js +202 -36
- package/src/files.js +58 -3
- package/src/git.js +39 -7
- package/src/index.js +7 -0
- package/src/policy-activation.js +84 -0
- package/src/policy-library/information-security-policy-v2.md +290 -0
- package/src/policy-library.js +826 -0
- package/src/program-lifecycle.js +4 -0
- package/src/program-path.js +12 -11
- package/src/program-readiness.js +309 -42
- package/src/server.js +8 -0
- package/src/setup.js +18 -1
- package/src/soc2.js +227 -0
- package/src/state.js +8 -0
- package/src/validate.js +43 -17
- package/src/web.js +218 -25
- package/src/workflow.js +111 -41
package/README.md
CHANGED
|
@@ -36,6 +36,14 @@ npx filegrc evidence-packet --start 2026-01-01 --end 2026-06-30 --audit audit-id
|
|
|
36
36
|
|
|
37
37
|
## Upgrade an existing workspace
|
|
38
38
|
|
|
39
|
+
Package updates may include optional starter Policy and Control revisions. Review them without writing:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
npx filegrc policy-library
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The command shows an exact diff only when the current text still matches the prior starter default. It skips customized, approved, active, superseded, and retired Policy content. Accept one named proposal revision only with the command printed by the review, which includes `--accept`, `--proposal-revision`, and `--yes`. Acceptance fails if the proposal changed after review. It changes only the listed defaults and does not approve a Policy, activate it, or mark a Control implemented.
|
|
46
|
+
|
|
39
47
|
The normal runtime uses data model v4. Start a model v3 upgrade with a read-only preview:
|
|
40
48
|
|
|
41
49
|
```sh
|
package/model/v4.json
CHANGED
|
@@ -553,7 +553,7 @@
|
|
|
553
553
|
},
|
|
554
554
|
"framework": {
|
|
555
555
|
"title": "Framework and criteria sources",
|
|
556
|
-
"description": "Confirm that the active framework records match the SOC 2 categories and description criteria
|
|
556
|
+
"description": "Confirm that the active framework records match the SOC 2 categories and description criteria selected for this program.",
|
|
557
557
|
"reviewPoints": [
|
|
558
558
|
"Confirm the selected Trust Services Categories match the service and planned audit.",
|
|
559
559
|
"Confirm any other legal, contractual, privacy, or security framework the service must follow.",
|
|
@@ -716,15 +716,16 @@
|
|
|
716
716
|
"collection": "people",
|
|
717
717
|
"description": "People who own, approve, review, or perform program work, or receive access and training. Record each person’s actual organization job title here and keep named program authority in dated Appointments. Keep detailed personnel records in the HR system.",
|
|
718
718
|
"guidance": {
|
|
719
|
-
"policyBasis": "The information security policy
|
|
719
|
+
"policyBasis": "The information security policy assigns work to named people and requires onboarding, training, role-change, and offboarding records.",
|
|
720
720
|
"cadence": "Create before assigning work or access, update the job title after organizational changes, review Appointments separately, and mark inactive only after active Appointments are ended or transferred. Training is due within 30 days of starting and annually.",
|
|
721
721
|
"sourceResourceIds": [
|
|
722
|
-
"policy-information-security"
|
|
723
|
-
"policy-employee-handbook"
|
|
722
|
+
"policy-information-security"
|
|
724
723
|
],
|
|
725
724
|
"obligationActivityTypes": [
|
|
726
725
|
"training",
|
|
727
|
-
"performance-review"
|
|
726
|
+
"performance-review",
|
|
727
|
+
"workforce-review",
|
|
728
|
+
"role-training"
|
|
728
729
|
]
|
|
729
730
|
},
|
|
730
731
|
"required": [
|
|
@@ -817,8 +818,7 @@
|
|
|
817
818
|
"policyBasis": "The information security policy assigns named authority and accountability, while workforce procedures require responsibility changes and departures to be reviewed and transferred.",
|
|
818
819
|
"cadence": "Create when management assigns a named responsibility. End the Appointment and create a new one when the holder changes. Reassign every linked responsibility before a holder departs.",
|
|
819
820
|
"sourceResourceIds": [
|
|
820
|
-
"policy-information-security"
|
|
821
|
-
"policy-employee-handbook"
|
|
821
|
+
"policy-information-security"
|
|
822
822
|
]
|
|
823
823
|
},
|
|
824
824
|
"required": [
|
|
@@ -1051,7 +1051,7 @@
|
|
|
1051
1051
|
"cadence": "The security and risk oversight group meets at least quarterly. Update membership after responsibility or personnel changes, and preserve a chair who is separate from the policy owner.",
|
|
1052
1052
|
"sourceResourceIds": [
|
|
1053
1053
|
"policy-information-security",
|
|
1054
|
-
"document-
|
|
1054
|
+
"document-security-incident-recovery-plan"
|
|
1055
1055
|
],
|
|
1056
1056
|
"obligationActivityTypes": [
|
|
1057
1057
|
"meeting"
|
|
@@ -1130,7 +1130,7 @@
|
|
|
1130
1130
|
"collection": "systems",
|
|
1131
1131
|
"description": "The complete bounded system being governed or examined, including its services, boundary, information, Components, Controls, dependencies, and continuity objectives.",
|
|
1132
1132
|
"guidance": {
|
|
1133
|
-
"policyBasis": "A SOC 2 program starts with the bounded System
|
|
1133
|
+
"policyBasis": "A SOC 2 program starts with the bounded System and the service commitments and system requirements the company has chosen to meet.",
|
|
1134
1134
|
"cadence": "Define before selecting Components and Controls. Review after material service, boundary, architecture, information, continuity, or audit-scope changes.",
|
|
1135
1135
|
"reviewPoints": [
|
|
1136
1136
|
"Describe the complete service boundary rather than a single tool or provider.",
|
|
@@ -1255,12 +1255,10 @@
|
|
|
1255
1255
|
"collection": "assets",
|
|
1256
1256
|
"description": "Important devices, media, software, records, and other items tracked through acquisition, custody, use, return, and disposal. Assets support controls but do not define the service boundary.",
|
|
1257
1257
|
"guidance": {
|
|
1258
|
-
"policyBasis": "The information security
|
|
1258
|
+
"policyBasis": "The information security policy requires important assets to have owners and custodians, protection based on classification, and secure return or disposal.",
|
|
1259
1259
|
"cadence": "Record acquisition and assignment, review the inventory annually, update custody on change, and retire assets when use ends.",
|
|
1260
1260
|
"sourceResourceIds": [
|
|
1261
|
-
"policy-information-security"
|
|
1262
|
-
"policy-mobile-computing-communications",
|
|
1263
|
-
"policy-data-protection-handling"
|
|
1261
|
+
"policy-information-security"
|
|
1264
1262
|
],
|
|
1265
1263
|
"obligationActivityTypes": [
|
|
1266
1264
|
"inventory-review"
|
|
@@ -1397,9 +1395,14 @@
|
|
|
1397
1395
|
"guidance": {
|
|
1398
1396
|
"policyBasis": "Policies rely on governed documents for detailed plans, procedures, charters, and reports. Git preserves the approved text and its revision history.",
|
|
1399
1397
|
"cadence": "Follow the linked review Obligation. Starter governed documents are reviewed at least annually and after material changes or use, with an approver who is separate from the owner.",
|
|
1398
|
+
"reviewPoints": [
|
|
1399
|
+
"Write companion Markdown as a standalone company artifact. Keep FileGRC commands, record-entry instructions, readiness states, relationship IDs, and starter-library mechanics in guides and calculated work unless FileGRC itself is the document's subject.",
|
|
1400
|
+
"Replace every bracketed prompt with a reviewed fact before approval, activation, signature, or delivery.",
|
|
1401
|
+
"Describe the business fact in ordinary terms and keep resource relationships in the Document record and supporting records."
|
|
1402
|
+
],
|
|
1400
1403
|
"sourceResourceIds": [
|
|
1401
1404
|
"policy-information-security",
|
|
1402
|
-
"document-
|
|
1405
|
+
"document-security-incident-recovery-plan"
|
|
1403
1406
|
],
|
|
1404
1407
|
"obligationActivityTypes": [
|
|
1405
1408
|
"policy-review",
|
|
@@ -1637,12 +1640,16 @@
|
|
|
1637
1640
|
"recordPath": "{id}/evidence.json",
|
|
1638
1641
|
"description": "A retained export, report, screenshot, signed record, fixed file, or approved external reference. FileGRC operating records may support an audit directly without wrappers.",
|
|
1639
1642
|
"guidance": {
|
|
1640
|
-
"policyBasis": "The information security
|
|
1643
|
+
"policyBasis": "The information security policy requires retained proof from authoritative Components when FileGRC operating records do not contain the full result.",
|
|
1641
1644
|
"cadence": "Create an Evidence Artifact only for a real retained artifact or approved reference. Identify its source Component or source records, Controls, collection and verification facts, coverage, revision, and classification.",
|
|
1642
1645
|
"emptyState": "No Evidence Artifacts have been collected. Add one only when a real retained artifact or approved external reference exists.",
|
|
1646
|
+
"reviewPoints": [
|
|
1647
|
+
"Use artifactKind signed-record and artifactSubtype signed-management-representation for the fixed signed management representation letter.",
|
|
1648
|
+
"For a signed management representation, record the actual signing timestamp in businessEventAt; collectedOn records when FileGRC received the artifact, not when management signed it.",
|
|
1649
|
+
"Use artifactKind third-party-report and artifactSubtype soc2-report for the final report issued by the CPA firm, and record the report's actual issuance timestamp in sourceGeneratedAt."
|
|
1650
|
+
],
|
|
1643
1651
|
"sourceResourceIds": [
|
|
1644
|
-
"policy-information-security"
|
|
1645
|
-
"policy-data-protection-handling"
|
|
1652
|
+
"policy-information-security"
|
|
1646
1653
|
]
|
|
1647
1654
|
},
|
|
1648
1655
|
"required": [
|
|
@@ -2045,12 +2052,11 @@
|
|
|
2045
2052
|
"collection": "obligations",
|
|
2046
2053
|
"description": "Reusable schedules for recurring or event-driven work. Obligations feed the Work Queue; completion records and linked Evidence prove that the work occurred. Obligations are not required for SOC 2.",
|
|
2047
2054
|
"guidance": {
|
|
2048
|
-
"policyBasis": "
|
|
2049
|
-
"cadence": "
|
|
2055
|
+
"policyBasis": "FileGRC uses Obligations to turn approved schedules into owned, dated work linked to scope and required proof. An enabled Obligation remains dormant until every governing Policy is active and effective.",
|
|
2056
|
+
"cadence": "Configure and enable the schedule during Control implementation. Do not create occurrences while a governing Policy is approved but inactive. When the Policy becomes active and effective, use the later of the recurrence anchor and activation date, then create a separate completion record for every period.",
|
|
2050
2057
|
"sourceResourceIds": [
|
|
2051
2058
|
"policy-information-security",
|
|
2052
|
-
"
|
|
2053
|
-
"document-business-continuity-disaster-recovery"
|
|
2059
|
+
"document-security-incident-recovery-plan"
|
|
2054
2060
|
]
|
|
2055
2061
|
},
|
|
2056
2062
|
"required": [
|
|
@@ -2403,8 +2409,7 @@
|
|
|
2403
2409
|
"Use an external, zero-population, or not-applicable conclusion only when it is factually true for the current scope."
|
|
2404
2410
|
],
|
|
2405
2411
|
"sourceResourceIds": [
|
|
2406
|
-
"policy-information-security"
|
|
2407
|
-
"policy-data-protection-handling"
|
|
2412
|
+
"policy-information-security"
|
|
2408
2413
|
]
|
|
2409
2414
|
},
|
|
2410
2415
|
"required": [
|
|
@@ -2537,8 +2542,7 @@
|
|
|
2537
2542
|
"Before marking it not applicable, confirm that management is not responsible for the action."
|
|
2538
2543
|
],
|
|
2539
2544
|
"sourceResourceIds": [
|
|
2540
|
-
"policy-information-security"
|
|
2541
|
-
"policy-data-protection-handling"
|
|
2545
|
+
"policy-information-security"
|
|
2542
2546
|
]
|
|
2543
2547
|
},
|
|
2544
2548
|
"required": [
|
|
@@ -2660,20 +2664,20 @@
|
|
|
2660
2664
|
"collection": "controls",
|
|
2661
2665
|
"description": "Management's actual Control implementation, mapped to Requirements, bounded Systems, operating Components, and authoritative evidence-source Components.",
|
|
2662
2666
|
"guidance": {
|
|
2663
|
-
"policyBasis": "Controls translate approved Policies and applicable Requirements into owned procedures that management can operate and prove.
|
|
2664
|
-
"cadence": "Before marking
|
|
2667
|
+
"policyBasis": "Controls translate approved Policies and applicable Requirements into owned procedures that management can operate and prove. FileGRC does not infer technical implementation from policy prose. Configuration facts belong in Controls, Components, Systems, governed schedules, and Evidence.",
|
|
2668
|
+
"cadence": "A Control may be implemented while its governing Policy is approved but inactive. Before marking it implemented, record its owner, actual procedure in Record Markdown, bounded System scope, operation pattern, authoritative evidence-source Components, implementation date, and enabled calendar or event schedules. Confirm each source Component is active, has the evidence role required by the Control family and current access owners, and includes repeatable retrieval instructions in Record Markdown. Enabled schedules remain dormant until their governing Policies are active and effective.",
|
|
2665
2669
|
"reviewPoints": [
|
|
2666
2670
|
"Confirm the Control is needed for the applicable Requirements, customer Commitments, and current service boundary.",
|
|
2667
|
-
"Confirm the procedure describes what people actually do.",
|
|
2671
|
+
"Confirm the procedure describes what people actually do, and keep starter-selection and FileGRC record-entry instructions out of the Control statement and activity. A Control may name FileGRC when FileGRC is an actual operating Component or evidence source.",
|
|
2668
2672
|
"Use a not-applicable, external, or zero-population conclusion only when it is factually true for the current scope."
|
|
2669
2673
|
],
|
|
2670
2674
|
"sourceResourceIds": [
|
|
2671
|
-
"policy-information-security"
|
|
2672
|
-
"policy-data-protection-handling"
|
|
2675
|
+
"policy-information-security"
|
|
2673
2676
|
],
|
|
2674
2677
|
"obligationActivityTypes": [
|
|
2675
2678
|
"risk-assessment",
|
|
2676
|
-
"policy-review"
|
|
2679
|
+
"policy-review",
|
|
2680
|
+
"control-design-review"
|
|
2677
2681
|
]
|
|
2678
2682
|
},
|
|
2679
2683
|
"required": [
|
|
@@ -3218,11 +3222,10 @@
|
|
|
3218
3222
|
"collection": "exceptions",
|
|
3219
3223
|
"description": "An approved, time-bound departure from a Policy or Control. Record its scope, reason, risk, compensating Controls, owner, approval, and expiry. An Exception record is not required for SOC 2 unless a departure is approved.",
|
|
3220
3224
|
"guidance": {
|
|
3221
|
-
"policyBasis": "The information security
|
|
3225
|
+
"policyBasis": "The information security policy allows departures only with a business reason, assessed risk, compensating safeguards, approval, and an expiry or review date.",
|
|
3222
3226
|
"cadence": "Approve before the departure begins, follow its linked review Obligation or expiry, and close or renew it through a new risk decision.",
|
|
3223
3227
|
"sourceResourceIds": [
|
|
3224
|
-
"policy-information-security"
|
|
3225
|
-
"policy-data-protection-handling"
|
|
3228
|
+
"policy-information-security"
|
|
3226
3229
|
]
|
|
3227
3230
|
},
|
|
3228
3231
|
"required": [
|
|
@@ -3451,10 +3454,10 @@
|
|
|
3451
3454
|
"pluralTitle": "Policies",
|
|
3452
3455
|
"group": "governance",
|
|
3453
3456
|
"collection": "policies",
|
|
3454
|
-
"description": "Management-approved
|
|
3457
|
+
"description": "Management-approved requirements for the program. Approval accepts the requirements; activation makes them effective. Store the Policy text in Markdown and its owner, separate approver, scope, status, dates, and linked Controls in the record.",
|
|
3455
3458
|
"guidance": {
|
|
3456
|
-
"policyBasis": "
|
|
3457
|
-
"cadence": "Move a draft through review and approval
|
|
3459
|
+
"policyBasis": "A Policy says what the company commits to do by the date it takes effect. Approval means the company accepts those commitments. It does not prove the work is done. Controls and operating records describe how the company meets them and provide the proof.",
|
|
3460
|
+
"cadence": "Move a draft through independent review and approval without requiring every linked Control to be implemented. During Step 3, finish Controls, Components, evidence sources, governed plans, and schedules, review the per-Policy activation assessment, then activate the approved revision on its real effective date. Do not backdate adoption. The approver is usually internal and may be external, but must be separate from the owner and from the CPA auditor role. Review at least annually and after material changes.",
|
|
3458
3461
|
"sourceResourceIds": [
|
|
3459
3462
|
"policy-information-security"
|
|
3460
3463
|
],
|
|
@@ -3674,7 +3677,7 @@
|
|
|
3674
3677
|
"collection": "policy-reviews",
|
|
3675
3678
|
"description": "The result of a scheduled or change-driven review of Policies or governed Documents, including reviewers, decision, evidence, and follow-up. Edit the source record separately when changes are approved.",
|
|
3676
3679
|
"guidance": {
|
|
3677
|
-
"policyBasis": "
|
|
3680
|
+
"policyBasis": "The Information Security Policy and Security Incident and Recovery Plan require periodic review and another review after specified material changes.",
|
|
3678
3681
|
"cadence": "Complete annually and after a triggering change, incident, disruption, or policy condition. Link the exact scope, reviewers, result, and evidence.",
|
|
3679
3682
|
"reviewPoints": [
|
|
3680
3683
|
"Read the current Policy or governed Document.",
|
|
@@ -3683,7 +3686,7 @@
|
|
|
3683
3686
|
],
|
|
3684
3687
|
"sourceResourceIds": [
|
|
3685
3688
|
"policy-information-security",
|
|
3686
|
-
"document-
|
|
3689
|
+
"document-security-incident-recovery-plan"
|
|
3687
3690
|
],
|
|
3688
3691
|
"obligationActivityTypes": [
|
|
3689
3692
|
"policy-review"
|
|
@@ -3811,12 +3814,10 @@
|
|
|
3811
3814
|
"collection": "attestations",
|
|
3812
3815
|
"description": "One person’s acknowledgement, training completion, certification, or assigned-work confirmation. Bind it to the exact content revision and signed Evidence when required.",
|
|
3813
3816
|
"guidance": {
|
|
3814
|
-
"policyBasis": "The information security policy
|
|
3817
|
+
"policyBasis": "The information security policy requires people to complete assigned training and acknowledge applicable responsibilities.",
|
|
3815
3818
|
"cadence": "Assign during onboarding, within 30 days for security training, annually for recurring training, and after material content changes that require acknowledgement.",
|
|
3816
3819
|
"sourceResourceIds": [
|
|
3817
|
-
"policy-information-security"
|
|
3818
|
-
"policy-data-protection-handling",
|
|
3819
|
-
"policy-employee-handbook"
|
|
3820
|
+
"policy-information-security"
|
|
3820
3821
|
],
|
|
3821
3822
|
"obligationActivityTypes": [
|
|
3822
3823
|
"training"
|
|
@@ -3972,11 +3973,11 @@
|
|
|
3972
3973
|
"collection": "meetings",
|
|
3973
3974
|
"description": "One governance meeting, including its chair, attendees, agenda, minutes, decisions, raised issues, Evidence, and assigned follow-up.",
|
|
3974
3975
|
"guidance": {
|
|
3975
|
-
"policyBasis": "The information security policy requires recorded security and risk oversight. The
|
|
3976
|
+
"policyBasis": "The information security policy requires recorded security and risk oversight. The Security Incident and Recovery Plan requires management review of exercises and unresolved risks.",
|
|
3976
3977
|
"cadence": "Hold security and risk oversight meetings at least quarterly. Create one immutable meeting record and Markdown minutes for each occurrence.",
|
|
3977
3978
|
"sourceResourceIds": [
|
|
3978
3979
|
"policy-information-security",
|
|
3979
|
-
"document-
|
|
3980
|
+
"document-security-incident-recovery-plan"
|
|
3980
3981
|
],
|
|
3981
3982
|
"obligationActivityTypes": [
|
|
3982
3983
|
"meeting"
|
|
@@ -4118,11 +4119,15 @@
|
|
|
4118
4119
|
"collection": "training",
|
|
4119
4120
|
"description": "Reusable training content and assignment rules, including audience, trigger, completion window, passing criteria, and linked Policies and Controls. Obligations define assignment schedules. Individual completions belong in Attestations.",
|
|
4120
4121
|
"guidance": {
|
|
4121
|
-
"policyBasis": "The information security
|
|
4122
|
+
"policyBasis": "The information security policy requires security training and added role-specific instruction when a person’s responsibilities or data access warrant it.",
|
|
4122
4123
|
"cadence": "Assign security training at onboarding, complete it within 30 days, repeat at least annually, and reassign after relevant material changes or incidents.",
|
|
4124
|
+
"reviewPoints": [
|
|
4125
|
+
"Write workforce-facing material as standalone company training. Keep FileGRC commands, record-entry instructions, and data-model terms in guides and assignment records.",
|
|
4126
|
+
"State required behavior without implying that every user needs a paid product or that customer MFA applies without an approved requirement.",
|
|
4127
|
+
"Tie each completion to the exact training revision the person reviewed."
|
|
4128
|
+
],
|
|
4123
4129
|
"sourceResourceIds": [
|
|
4124
|
-
"policy-information-security"
|
|
4125
|
-
"policy-data-protection-handling"
|
|
4130
|
+
"policy-information-security"
|
|
4126
4131
|
],
|
|
4127
4132
|
"obligationActivityTypes": [
|
|
4128
4133
|
"training"
|
|
@@ -4243,11 +4248,10 @@
|
|
|
4243
4248
|
"collection": "risks",
|
|
4244
4249
|
"description": "One identified threat or business impact that needs treatment or ongoing tracking. Record its owner, ratings, response, affected scope, Controls, acceptance, and follow-up.",
|
|
4245
4250
|
"guidance": {
|
|
4246
|
-
"policyBasis": "The information security
|
|
4251
|
+
"policyBasis": "The information security policy requires identified Risks to have an owner, rating, treatment decision, target date, and time-bound approval when accepted.",
|
|
4247
4252
|
"cadence": "Assess the register at least annually and after material changes. Review High and Critical risks at least quarterly and accepted risks by their review date.",
|
|
4248
4253
|
"sourceResourceIds": [
|
|
4249
|
-
"policy-information-security"
|
|
4250
|
-
"policy-data-protection-handling"
|
|
4254
|
+
"policy-information-security"
|
|
4251
4255
|
],
|
|
4252
4256
|
"obligationActivityTypes": [
|
|
4253
4257
|
"risk-assessment"
|
|
@@ -4417,7 +4421,7 @@
|
|
|
4417
4421
|
"collection": "risk-assessments",
|
|
4418
4422
|
"description": "One approved evaluation of a defined scope using the program’s risk method. It records participants, Systems, Vendors, conclusions, Evidence, and the Risks created or reassessed.",
|
|
4419
4423
|
"guidance": {
|
|
4420
|
-
"policyBasis": "The information security
|
|
4424
|
+
"policyBasis": "The information security policy requires periodic and change-driven assessment of threats, assets, obligations, Controls, likelihood, impact, and treatment.",
|
|
4421
4425
|
"cadence": "Complete at least annually and after a material change that could alter risk. Record new and changed risks instead of hiding them in the summary.",
|
|
4422
4426
|
"reviewPoints": [
|
|
4423
4427
|
"Confirm the assessment covered the real service, material dependencies, data, commitments, and recent changes.",
|
|
@@ -4425,8 +4429,7 @@
|
|
|
4425
4429
|
"Confirm no material risk was left out."
|
|
4426
4430
|
],
|
|
4427
4431
|
"sourceResourceIds": [
|
|
4428
|
-
"policy-information-security"
|
|
4429
|
-
"policy-data-protection-handling"
|
|
4432
|
+
"policy-information-security"
|
|
4430
4433
|
],
|
|
4431
4434
|
"obligationActivityTypes": [
|
|
4432
4435
|
"risk-assessment"
|
|
@@ -4629,11 +4632,10 @@
|
|
|
4629
4632
|
"collection": "vendors",
|
|
4630
4633
|
"description": "External organizations and commercial relationships, including contracts, due diligence, risk reviews, monitoring, assurance reports, dates, and general information-access facts.",
|
|
4631
4634
|
"guidance": {
|
|
4632
|
-
"policyBasis": "The information security
|
|
4635
|
+
"policyBasis": "The information security policy requires an inventory of important providers, risk-based review before access or reliance, suitable contract terms, and ongoing monitoring.",
|
|
4633
4636
|
"cadence": "Create for a material external provider relationship. Review critical and high-risk Vendors at least annually and after material relationship, service, access, or incident changes. Do not create a Component unless a supplied capability also meets the Component inclusion rules.",
|
|
4634
4637
|
"sourceResourceIds": [
|
|
4635
|
-
"policy-information-security"
|
|
4636
|
-
"policy-data-protection-handling"
|
|
4638
|
+
"policy-information-security"
|
|
4637
4639
|
],
|
|
4638
4640
|
"obligationActivityTypes": [
|
|
4639
4641
|
"inventory-review",
|
|
@@ -4750,7 +4752,7 @@
|
|
|
4750
4752
|
"collection": "vendor-reviews",
|
|
4751
4753
|
"description": "One due-diligence or periodic review of a Vendor, covering the service, data, access, assurance, recovery, incidents, contracts, Risks, Evidence, and follow-up.",
|
|
4752
4754
|
"guidance": {
|
|
4753
|
-
"policyBasis": "The information security
|
|
4755
|
+
"policyBasis": "The information security policy requires review before a Vendor handles sensitive data or supports important services, plus periodic review of higher-risk providers.",
|
|
4754
4756
|
"cadence": "Complete before access, at least annually for Critical and High-risk vendors, and after material service changes or incidents.",
|
|
4755
4757
|
"reviewPoints": [
|
|
4756
4758
|
"Confirm the review covers the Vendor’s current services, connected Systems, data access, criticality, subservice role, and contract terms.",
|
|
@@ -4758,8 +4760,7 @@
|
|
|
4758
4760
|
"Make the approve, conditional, or reject decision match the risks and assign any needed follow-up."
|
|
4759
4761
|
],
|
|
4760
4762
|
"sourceResourceIds": [
|
|
4761
|
-
"policy-information-security"
|
|
4762
|
-
"policy-data-protection-handling"
|
|
4763
|
+
"policy-information-security"
|
|
4763
4764
|
],
|
|
4764
4765
|
"obligationActivityTypes": [
|
|
4765
4766
|
"vendor-review"
|
|
@@ -4887,11 +4888,10 @@
|
|
|
4887
4888
|
"collection": "access-grants",
|
|
4888
4889
|
"description": "One Person’s or Service Account’s access to one System, including business need, privilege, request, approval, provisioning, expiry, removal, ticket, and Evidence.",
|
|
4889
4890
|
"guidance": {
|
|
4890
|
-
"policyBasis": "The information security
|
|
4891
|
+
"policyBasis": "The information security policy requires unique identity, documented business need, least privilege, approval, authorized provisioning, and prompt removal.",
|
|
4891
4892
|
"cadence": "Record every grant and material change. Remove access at or before notice for involuntary or high-risk departures and within 24 hours for other departures.",
|
|
4892
4893
|
"sourceResourceIds": [
|
|
4893
|
-
"policy-information-security"
|
|
4894
|
-
"policy-data-protection-handling"
|
|
4894
|
+
"policy-information-security"
|
|
4895
4895
|
]
|
|
4896
4896
|
},
|
|
4897
4897
|
"required": [
|
|
@@ -5065,7 +5065,7 @@
|
|
|
5065
5065
|
"collection": "access-reviews",
|
|
5066
5066
|
"description": "One review of a defined access population for a date or period, including Systems, reviewers, Access Grant decisions, exceptions, approval, Evidence, and source revision.",
|
|
5067
5067
|
"guidance": {
|
|
5068
|
-
"policyBasis": "The information security
|
|
5068
|
+
"policyBasis": "The information security policy requires System owners to periodically confirm least privilege and remove dormant, expired, excessive, or unneeded access.",
|
|
5069
5069
|
"cadence": "Review privileged and production access at least quarterly and other important-system access at least annually.",
|
|
5070
5070
|
"reviewPoints": [
|
|
5071
5071
|
"Confirm the review population is complete for every System and exact date or period in scope.",
|
|
@@ -5073,8 +5073,7 @@
|
|
|
5073
5073
|
"Confirm every removal, change, or exception has follow-up."
|
|
5074
5074
|
],
|
|
5075
5075
|
"sourceResourceIds": [
|
|
5076
|
-
"policy-information-security"
|
|
5077
|
-
"policy-data-protection-handling"
|
|
5076
|
+
"policy-information-security"
|
|
5078
5077
|
],
|
|
5079
5078
|
"obligationActivityTypes": [
|
|
5080
5079
|
"access-review"
|
|
@@ -5586,11 +5585,10 @@
|
|
|
5586
5585
|
"collection": "incidents",
|
|
5587
5586
|
"description": "One suspected or confirmed security or privacy event, with severity, timeline, scope, owner, affected Systems and Vendors, Evidence, Findings, and corrective work. An Incident record is not required for SOC 2 when no incident occurred.",
|
|
5588
5587
|
"guidance": {
|
|
5589
|
-
"policyBasis": "The information security
|
|
5588
|
+
"policyBasis": "The information security policy requires prompt reporting, investigation, containment, recovery, evidence preservation, and review of notification duties.",
|
|
5590
5589
|
"cadence": "Create on report or detection, update material events as they progress, and complete a retrospective within one week after a material incident.",
|
|
5591
5590
|
"sourceResourceIds": [
|
|
5592
|
-
"policy-information-security"
|
|
5593
|
-
"policy-data-protection-handling"
|
|
5591
|
+
"policy-information-security"
|
|
5594
5592
|
]
|
|
5595
5593
|
},
|
|
5596
5594
|
"required": [
|
|
@@ -5773,11 +5771,11 @@
|
|
|
5773
5771
|
"collection": "exercises",
|
|
5774
5772
|
"description": "One continuity, recovery, incident, or privacy simulation, including scenario, objective, participants, scope, result, Evidence, Findings, and follow-up.",
|
|
5775
5773
|
"guidance": {
|
|
5776
|
-
"policyBasis": "The information security policy requires incident-response testing. The
|
|
5774
|
+
"policyBasis": "The information security policy requires incident-response testing. The Security Incident and Recovery Plan requires exercises and another review after material change or disruption.",
|
|
5777
5775
|
"cadence": "Test incident response and continuity at least annually. Repeat after a material change when the prior exercise no longer represents the environment.",
|
|
5778
5776
|
"sourceResourceIds": [
|
|
5779
5777
|
"policy-information-security",
|
|
5780
|
-
"document-
|
|
5778
|
+
"document-security-incident-recovery-plan"
|
|
5781
5779
|
],
|
|
5782
5780
|
"obligationActivityTypes": [
|
|
5783
5781
|
"exercise"
|
|
@@ -5911,7 +5909,7 @@
|
|
|
5911
5909
|
"collection": "backup-tests",
|
|
5912
5910
|
"description": "One restore or recovery test, including the Systems and operators involved, timing, recovery result, reviewer, Evidence, Findings, and follow-up.",
|
|
5913
5911
|
"guidance": {
|
|
5914
|
-
"policyBasis": "The information security policy and
|
|
5912
|
+
"policyBasis": "The information security policy and Security Incident and Recovery Plan require protected backups, monitored failures, and tested proof that important data can be restored and used.",
|
|
5915
5913
|
"cadence": "Test restoration at least annually for important systems and after recovery changes that could invalidate prior evidence.",
|
|
5916
5914
|
"reviewPoints": [
|
|
5917
5915
|
"Confirm the test restored the intended Systems and data.",
|
|
@@ -5920,7 +5918,7 @@
|
|
|
5920
5918
|
],
|
|
5921
5919
|
"sourceResourceIds": [
|
|
5922
5920
|
"policy-information-security",
|
|
5923
|
-
"document-
|
|
5921
|
+
"document-security-incident-recovery-plan"
|
|
5924
5922
|
],
|
|
5925
5923
|
"obligationActivityTypes": [
|
|
5926
5924
|
"backup-test"
|
|
@@ -6050,10 +6048,10 @@
|
|
|
6050
6048
|
"collection": "penetration-tests",
|
|
6051
6049
|
"description": "One internal or external penetration test, including provider, scope, period, method, result, affected Systems, Evidence, Vulnerabilities, Findings, and review.",
|
|
6052
6050
|
"guidance": {
|
|
6053
|
-
"policyBasis": "The information security policy requires
|
|
6054
|
-
"cadence": "
|
|
6051
|
+
"policyBasis": "The information security policy requires management to decide whether penetration testing is needed from exposure, material changes, customer commitments, technical capability, and risk, then track confirmed findings when testing is performed.",
|
|
6052
|
+
"cadence": "Use the cadence approved in the applicable Control, customer commitment, or risk decision. Review applicability at least annually and after material attack-surface or architecture changes; the review may conclude that no penetration test is required.",
|
|
6055
6053
|
"reviewPoints": [
|
|
6056
|
-
"Confirm the tester
|
|
6054
|
+
"Confirm the testing decision, tester independence when required, scope, method, and cadence match the approved reason for testing.",
|
|
6057
6055
|
"Confirm the report supports the recorded result.",
|
|
6058
6056
|
"Confirm every issue has remediation, an accepted exception, or verified closure."
|
|
6059
6057
|
],
|
|
@@ -6224,10 +6222,10 @@
|
|
|
6224
6222
|
"collection": "data-requests",
|
|
6225
6223
|
"description": "One privacy, contractual, or other data request tracked by opaque reference, with scope, due date, decision, Evidence, and completion. Data Request tracking is not required for a SOC 2 Security-only report.",
|
|
6226
6224
|
"guidance": {
|
|
6227
|
-
"policyBasis": "The
|
|
6225
|
+
"policyBasis": "The information security policy requires applicable requests to reach a responsible owner, meet the governing deadline, and keep erasable personal data out of immutable Git history.",
|
|
6228
6226
|
"cadence": "Create on receipt, set the deadline from applicable law or contract, verify identity outside this repository when needed, and record completion.",
|
|
6229
6227
|
"sourceResourceIds": [
|
|
6230
|
-
"policy-
|
|
6228
|
+
"policy-information-security"
|
|
6231
6229
|
]
|
|
6232
6230
|
},
|
|
6233
6231
|
"required": [
|
|
@@ -6716,6 +6714,18 @@
|
|
|
6716
6714
|
"items": "object",
|
|
6717
6715
|
"itemObjectType": "audit-subservice-treatment",
|
|
6718
6716
|
"label": "Subservice treatments"
|
|
6717
|
+
},
|
|
6718
|
+
"subserviceConclusion": {
|
|
6719
|
+
"type": "enum",
|
|
6720
|
+
"values": [
|
|
6721
|
+
"not-applicable",
|
|
6722
|
+
"identified"
|
|
6723
|
+
],
|
|
6724
|
+
"label": "Subservice conclusion"
|
|
6725
|
+
},
|
|
6726
|
+
"subserviceConclusionRationale": {
|
|
6727
|
+
"type": "string",
|
|
6728
|
+
"label": "Subservice conclusion rationale"
|
|
6719
6729
|
}
|
|
6720
6730
|
},
|
|
6721
6731
|
"listFields": [
|
|
@@ -6727,6 +6737,8 @@
|
|
|
6727
6737
|
],
|
|
6728
6738
|
"formFields": [
|
|
6729
6739
|
"coverage",
|
|
6740
|
+
"subserviceConclusion",
|
|
6741
|
+
"subserviceConclusionRationale",
|
|
6730
6742
|
"subserviceTreatments"
|
|
6731
6743
|
]
|
|
6732
6744
|
},
|
|
@@ -7391,11 +7403,14 @@
|
|
|
7391
7403
|
"profileId": {
|
|
7392
7404
|
"type": "enum",
|
|
7393
7405
|
"values": [
|
|
7406
|
+
"endpoint-verification",
|
|
7394
7407
|
"inventory-review",
|
|
7395
7408
|
"log-review",
|
|
7396
7409
|
"network-review",
|
|
7397
7410
|
"continuity-review",
|
|
7411
|
+
"control-design-review",
|
|
7398
7412
|
"performance-review",
|
|
7413
|
+
"workforce-review",
|
|
7399
7414
|
"personal-device-approval",
|
|
7400
7415
|
"security-scan"
|
|
7401
7416
|
],
|
|
@@ -9239,6 +9254,24 @@
|
|
|
9239
9254
|
"component"
|
|
9240
9255
|
]
|
|
9241
9256
|
},
|
|
9257
|
+
"control-design-review": {
|
|
9258
|
+
"title": "Control design and evidence-path review",
|
|
9259
|
+
"completionType": "control-activity",
|
|
9260
|
+
"completionResourceTypes": [
|
|
9261
|
+
"control-activity"
|
|
9262
|
+
],
|
|
9263
|
+
"recurrenceModes": [
|
|
9264
|
+
"calendar",
|
|
9265
|
+
"event"
|
|
9266
|
+
],
|
|
9267
|
+
"scopeResourceTypes": [
|
|
9268
|
+
"control",
|
|
9269
|
+
"program",
|
|
9270
|
+
"system",
|
|
9271
|
+
"component"
|
|
9272
|
+
],
|
|
9273
|
+
"completionProfile": "control-design-review"
|
|
9274
|
+
},
|
|
9242
9275
|
"continuity-review": {
|
|
9243
9276
|
"title": "Continuity review",
|
|
9244
9277
|
"completionType": "control-activity",
|
|
@@ -9318,6 +9351,23 @@
|
|
|
9318
9351
|
"incident"
|
|
9319
9352
|
]
|
|
9320
9353
|
},
|
|
9354
|
+
"endpoint-verification": {
|
|
9355
|
+
"title": "Endpoint verification",
|
|
9356
|
+
"completionType": "control-activity",
|
|
9357
|
+
"completionResourceTypes": [
|
|
9358
|
+
"control-activity"
|
|
9359
|
+
],
|
|
9360
|
+
"recurrenceModes": [
|
|
9361
|
+
"calendar",
|
|
9362
|
+
"event"
|
|
9363
|
+
],
|
|
9364
|
+
"scopeResourceTypes": [
|
|
9365
|
+
"system",
|
|
9366
|
+
"asset",
|
|
9367
|
+
"component"
|
|
9368
|
+
],
|
|
9369
|
+
"completionProfile": "endpoint-verification"
|
|
9370
|
+
},
|
|
9321
9371
|
"inventory-review": {
|
|
9322
9372
|
"title": "Inventory review",
|
|
9323
9373
|
"completionType": "control-activity",
|
|
@@ -9427,6 +9477,21 @@
|
|
|
9427
9477
|
],
|
|
9428
9478
|
"completionProfile": "performance-review"
|
|
9429
9479
|
},
|
|
9480
|
+
"workforce-review": {
|
|
9481
|
+
"title": "Workforce screening and competence review",
|
|
9482
|
+
"completionType": "control-activity",
|
|
9483
|
+
"completionResourceTypes": [
|
|
9484
|
+
"control-activity"
|
|
9485
|
+
],
|
|
9486
|
+
"recurrenceModes": [
|
|
9487
|
+
"calendar",
|
|
9488
|
+
"event"
|
|
9489
|
+
],
|
|
9490
|
+
"scopeResourceTypes": [
|
|
9491
|
+
"person"
|
|
9492
|
+
],
|
|
9493
|
+
"completionProfile": "workforce-review"
|
|
9494
|
+
},
|
|
9430
9495
|
"personal-device-approval": {
|
|
9431
9496
|
"title": "Personal device approval",
|
|
9432
9497
|
"completionType": "control-activity",
|
|
@@ -9964,6 +10029,18 @@
|
|
|
9964
10029
|
}
|
|
9965
10030
|
},
|
|
9966
10031
|
"completionProfiles": {
|
|
10032
|
+
"endpoint-verification": {
|
|
10033
|
+
"title": "Endpoint verification",
|
|
10034
|
+
"resourceType": "control-activity",
|
|
10035
|
+
"requiredFacts": [
|
|
10036
|
+
"performerIds",
|
|
10037
|
+
"scopeResourceIds",
|
|
10038
|
+
"method",
|
|
10039
|
+
"result",
|
|
10040
|
+
"reviewerIds",
|
|
10041
|
+
"completedAt"
|
|
10042
|
+
]
|
|
10043
|
+
},
|
|
9967
10044
|
"inventory-review": {
|
|
9968
10045
|
"title": "Inventory review",
|
|
9969
10046
|
"resourceType": "control-activity",
|
|
@@ -10012,6 +10089,18 @@
|
|
|
10012
10089
|
"completedAt"
|
|
10013
10090
|
]
|
|
10014
10091
|
},
|
|
10092
|
+
"control-design-review": {
|
|
10093
|
+
"title": "Control design and evidence-path review",
|
|
10094
|
+
"resourceType": "control-activity",
|
|
10095
|
+
"requiredFacts": [
|
|
10096
|
+
"performerIds",
|
|
10097
|
+
"scopeResourceIds",
|
|
10098
|
+
"method",
|
|
10099
|
+
"result",
|
|
10100
|
+
"reviewerIds",
|
|
10101
|
+
"completedAt"
|
|
10102
|
+
]
|
|
10103
|
+
},
|
|
10015
10104
|
"performance-review": {
|
|
10016
10105
|
"title": "Performance review",
|
|
10017
10106
|
"resourceType": "control-activity",
|
|
@@ -10024,6 +10113,18 @@
|
|
|
10024
10113
|
"completedAt"
|
|
10025
10114
|
]
|
|
10026
10115
|
},
|
|
10116
|
+
"workforce-review": {
|
|
10117
|
+
"title": "Workforce screening and competence review",
|
|
10118
|
+
"resourceType": "control-activity",
|
|
10119
|
+
"requiredFacts": [
|
|
10120
|
+
"performerIds",
|
|
10121
|
+
"scopeResourceIds",
|
|
10122
|
+
"method",
|
|
10123
|
+
"result",
|
|
10124
|
+
"reviewerIds",
|
|
10125
|
+
"completedAt"
|
|
10126
|
+
]
|
|
10127
|
+
},
|
|
10027
10128
|
"personal-device-approval": {
|
|
10028
10129
|
"title": "Personal-device approval",
|
|
10029
10130
|
"resourceType": "control-activity",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "filegrc",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Zero-dependency Git-native GRC engine",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"src"
|
|
22
22
|
],
|
|
23
23
|
"scripts": {
|
|
24
|
-
"test": "node --test --test-concurrency=
|
|
24
|
+
"test": "node --test --test-concurrency=4"
|
|
25
25
|
},
|
|
26
26
|
"engines": {
|
|
27
27
|
"node": ">=20"
|