create-filegrc 0.6.4 → 0.7.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/package.json +1 -1
- package/src/defaults.js +60 -121
- package/src/index.js +12 -11
- package/template/AGENTS.md +8 -3
- package/template/README.md +9 -5
- package/template/data/AGENTS.md +6 -3
- package/template/data/appointments/appointment-policy-owner.json +1 -1
- package/template/data/documents/document-data-retention-schedule.json +1 -1
- package/template/data/documents/document-data-retention-schedule.md +7 -9
- package/template/data/documents/{document-incident-response-plan.json → document-security-incident-recovery-plan.json} +5 -6
- package/template/data/documents/document-security-incident-recovery-plan.md +79 -0
- package/template/data/obligations/AGENTS.md +2 -1
- package/template/data/policies/AGENTS.md +18 -8
- package/template/data/policies/policy-information-security.json +1 -7
- package/template/data/policies/policy-information-security.md +50 -185
- package/template/data/training/training-security-awareness.json +1 -4
- package/template/data/training/training-security-awareness.md +16 -2
- package/template/package.json +1 -1
- package/template/data/documents/document-business-continuity-disaster-recovery.json +0 -29
- package/template/data/documents/document-business-continuity-disaster-recovery.md +0 -192
- package/template/data/documents/document-contractor-policy-acknowledgement.json +0 -20
- package/template/data/documents/document-contractor-policy-acknowledgement.md +0 -24
- package/template/data/documents/document-contractor-training-acknowledgement.json +0 -23
- package/template/data/documents/document-contractor-training-acknowledgement.md +0 -20
- package/template/data/documents/document-employee-handbook-acknowledgement.json +0 -20
- package/template/data/documents/document-employee-handbook-acknowledgement.md +0 -19
- package/template/data/documents/document-employee-policy-acknowledgement.json +0 -20
- package/template/data/documents/document-employee-policy-acknowledgement.md +0 -24
- package/template/data/documents/document-employee-training-acknowledgement.json +0 -23
- package/template/data/documents/document-employee-training-acknowledgement.md +0 -20
- package/template/data/documents/document-incident-response-plan.md +0 -138
- package/template/data/policies/policy-anti-bribery-corruption.json +0 -19
- package/template/data/policies/policy-anti-bribery-corruption.md +0 -87
- package/template/data/policies/policy-clear-desk-screen.json +0 -18
- package/template/data/policies/policy-clear-desk-screen.md +0 -49
- package/template/data/policies/policy-data-protection-handling.json +0 -22
- package/template/data/policies/policy-data-protection-handling.md +0 -130
- package/template/data/policies/policy-employee-handbook.json +0 -21
- package/template/data/policies/policy-employee-handbook.md +0 -161
- package/template/data/policies/policy-mobile-computing-communications.json +0 -18
- package/template/data/policies/policy-mobile-computing-communications.md +0 -74
- package/template/data/training/training-anti-bribery-high-risk-roles.json +0 -16
- package/template/data/training/training-anti-bribery-high-risk-roles.md +0 -19
- package/template/data/training/training-privileged-sensitive-roles.json +0 -20
- package/template/data/training/training-privileged-sensitive-roles.md +0 -20
- package/template/data/training/training-secure-development.json +0 -19
- package/template/data/training/training-secure-development.md +0 -22
package/package.json
CHANGED
package/src/defaults.js
CHANGED
|
@@ -7,13 +7,8 @@ const PROGRAM_LEAD_ID = "person-program-lead";
|
|
|
7
7
|
const POLICY_OWNER_APPOINTMENT_ID = "appointment-policy-owner";
|
|
8
8
|
const OVERSIGHT_TEAM_ID = "team-security-risk-oversight";
|
|
9
9
|
const INFORMATION_SECURITY_POLICY_ID = "policy-information-security";
|
|
10
|
-
const DATA_POLICY_ID = "policy-data-protection-handling";
|
|
11
10
|
const RETENTION_SCHEDULE_ID = "document-data-retention-schedule";
|
|
12
|
-
const
|
|
13
|
-
"training-secure-development",
|
|
14
|
-
"training-privileged-sensitive-roles",
|
|
15
|
-
"training-anti-bribery-high-risk-roles"
|
|
16
|
-
];
|
|
11
|
+
const SECURITY_PLAN_ID = "document-security-incident-recovery-plan";
|
|
17
12
|
const FILEGRC_SOURCE_FAMILIES = [
|
|
18
13
|
"training-acknowledgement",
|
|
19
14
|
"exception-finding",
|
|
@@ -109,7 +104,7 @@ const controls = [
|
|
|
109
104
|
controlType: "preventive",
|
|
110
105
|
operationMode: "manual",
|
|
111
106
|
operationPattern: "scheduled",
|
|
112
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
107
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
113
108
|
},
|
|
114
109
|
{
|
|
115
110
|
id: "control-policy-management",
|
|
@@ -121,13 +116,7 @@ const controls = [
|
|
|
121
116
|
controlType: "preventive",
|
|
122
117
|
operationMode: "manual",
|
|
123
118
|
operationPattern: "mixed",
|
|
124
|
-
policies: [
|
|
125
|
-
"policy-anti-bribery-corruption",
|
|
126
|
-
"policy-clear-desk-screen",
|
|
127
|
-
DATA_POLICY_ID,
|
|
128
|
-
INFORMATION_SECURITY_POLICY_ID,
|
|
129
|
-
"policy-mobile-computing-communications"
|
|
130
|
-
]
|
|
119
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
131
120
|
},
|
|
132
121
|
{
|
|
133
122
|
id: "control-security-communication",
|
|
@@ -139,7 +128,7 @@ const controls = [
|
|
|
139
128
|
controlType: "preventive",
|
|
140
129
|
operationMode: "hybrid",
|
|
141
130
|
operationPattern: "mixed",
|
|
142
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
131
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
143
132
|
},
|
|
144
133
|
{
|
|
145
134
|
id: "control-workforce-expectations",
|
|
@@ -151,7 +140,7 @@ const controls = [
|
|
|
151
140
|
controlType: "preventive",
|
|
152
141
|
operationMode: "manual",
|
|
153
142
|
operationPattern: "event-driven",
|
|
154
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
143
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
155
144
|
},
|
|
156
145
|
{
|
|
157
146
|
id: "control-security-training",
|
|
@@ -163,18 +152,6 @@ const controls = [
|
|
|
163
152
|
controlType: "preventive",
|
|
164
153
|
operationMode: "manual",
|
|
165
154
|
operationPattern: "mixed",
|
|
166
|
-
policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID, "policy-anti-bribery-corruption"]
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
id: "control-performance-review",
|
|
170
|
-
code: "HR-03",
|
|
171
|
-
title: "Workforce performance review",
|
|
172
|
-
statement: "Managers conduct a documented performance review at least annually and address responsibilities, conduct, and corrective action as appropriate to each worker's role.",
|
|
173
|
-
requirements: ["CC1.5"],
|
|
174
|
-
activity: "Complete and retain annual performance reviews and resulting corrective work.",
|
|
175
|
-
controlType: "detective",
|
|
176
|
-
operationMode: "manual",
|
|
177
|
-
operationPattern: "scheduled",
|
|
178
155
|
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
179
156
|
},
|
|
180
157
|
{
|
|
@@ -187,7 +164,7 @@ const controls = [
|
|
|
187
164
|
controlType: "detective",
|
|
188
165
|
operationMode: "manual",
|
|
189
166
|
operationPattern: "mixed",
|
|
190
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
167
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
191
168
|
},
|
|
192
169
|
{
|
|
193
170
|
id: "control-monitoring-remediation",
|
|
@@ -211,7 +188,7 @@ const controls = [
|
|
|
211
188
|
controlType: "preventive",
|
|
212
189
|
operationMode: "hybrid",
|
|
213
190
|
operationPattern: "event-driven",
|
|
214
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
191
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
215
192
|
},
|
|
216
193
|
{
|
|
217
194
|
id: "control-strong-authentication",
|
|
@@ -223,7 +200,7 @@ const controls = [
|
|
|
223
200
|
controlType: "preventive",
|
|
224
201
|
operationMode: "hybrid",
|
|
225
202
|
operationPattern: "continuous",
|
|
226
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
203
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
227
204
|
},
|
|
228
205
|
{
|
|
229
206
|
id: "control-access-review-offboarding",
|
|
@@ -235,7 +212,7 @@ const controls = [
|
|
|
235
212
|
controlType: "detective",
|
|
236
213
|
operationMode: "manual",
|
|
237
214
|
operationPattern: "mixed",
|
|
238
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
215
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
239
216
|
},
|
|
240
217
|
{
|
|
241
218
|
id: "control-physical-workspace-security",
|
|
@@ -247,7 +224,7 @@ const controls = [
|
|
|
247
224
|
controlType: "preventive",
|
|
248
225
|
operationMode: "manual",
|
|
249
226
|
operationPattern: "continuous",
|
|
250
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
227
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
251
228
|
},
|
|
252
229
|
{
|
|
253
230
|
id: "control-data-classification-inventory",
|
|
@@ -259,7 +236,7 @@ const controls = [
|
|
|
259
236
|
controlType: "preventive",
|
|
260
237
|
operationMode: "manual",
|
|
261
238
|
operationPattern: "mixed",
|
|
262
|
-
policies: [
|
|
239
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
263
240
|
},
|
|
264
241
|
{
|
|
265
242
|
id: "control-encryption-transmission",
|
|
@@ -271,7 +248,7 @@ const controls = [
|
|
|
271
248
|
controlType: "preventive",
|
|
272
249
|
operationMode: "automated",
|
|
273
250
|
operationPattern: "continuous",
|
|
274
|
-
policies: [
|
|
251
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
275
252
|
},
|
|
276
253
|
{
|
|
277
254
|
id: "control-data-retention-disposal",
|
|
@@ -283,7 +260,7 @@ const controls = [
|
|
|
283
260
|
controlType: "preventive",
|
|
284
261
|
operationMode: "hybrid",
|
|
285
262
|
operationPattern: "event-driven",
|
|
286
|
-
policies: [
|
|
263
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
287
264
|
},
|
|
288
265
|
{
|
|
289
266
|
id: "control-inventory-configuration",
|
|
@@ -303,11 +280,11 @@ const controls = [
|
|
|
303
280
|
title: "Endpoint protection",
|
|
304
281
|
statement: "Devices that access company systems use approved configuration, encryption, screen locking, supported software, security updates, and continuous malware protection when supported.",
|
|
305
282
|
requirements: ["CC6.6", "CC7.1"],
|
|
306
|
-
activity: "
|
|
283
|
+
activity: "Use continuous platform protection where supported and verify endpoint configuration, update, and compliance state on the risk-based schedule recorded in an Obligation when periodic work is needed.",
|
|
307
284
|
controlType: "preventive",
|
|
308
285
|
operationMode: "automated",
|
|
309
286
|
operationPattern: "mixed",
|
|
310
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
287
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
311
288
|
},
|
|
312
289
|
{
|
|
313
290
|
id: "control-network-security",
|
|
@@ -319,15 +296,15 @@ const controls = [
|
|
|
319
296
|
controlType: "preventive",
|
|
320
297
|
operationMode: "hybrid",
|
|
321
298
|
operationPattern: "mixed",
|
|
322
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
299
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
323
300
|
},
|
|
324
301
|
{
|
|
325
302
|
id: "control-change-management",
|
|
326
303
|
code: "CHG-01",
|
|
327
304
|
title: "Change management",
|
|
328
|
-
statement: "Material software and infrastructure changes are recorded,
|
|
305
|
+
statement: "Material software and infrastructure changes are recorded, tested, approved, deployed through an authorized process, and recoverable. Review is independent when practical; a small team records a risk-appropriate compensating or post-deployment review, or an approved Exception, when independent pre-deployment review is not possible.",
|
|
329
306
|
requirements: ["CC6.8", "CC8.1"],
|
|
330
|
-
activity: "Record the reason, author, reviewer, test result, deployment, and rollback method.",
|
|
307
|
+
activity: "Record the reason, author, risk, reviewer or compensating review, test result, deployment, and rollback method.",
|
|
331
308
|
controlType: "preventive",
|
|
332
309
|
operationMode: "hybrid",
|
|
333
310
|
operationPattern: "event-driven",
|
|
@@ -337,9 +314,9 @@ const controls = [
|
|
|
337
314
|
id: "control-vulnerability-management",
|
|
338
315
|
code: "VUL-01",
|
|
339
316
|
title: "Vulnerability management",
|
|
340
|
-
statement: "The organization monitors for vulnerabilities
|
|
317
|
+
statement: "The organization monitors for vulnerabilities, chooses scan coverage and cadence based on exposure and risk, and assigns each confirmed vulnerability an approved risk-based remediation target or time-bound Exception.",
|
|
341
318
|
requirements: ["CC7.1", "CC7.2", "CC7.3"],
|
|
342
|
-
activity: "
|
|
319
|
+
activity: "Choose scan coverage and cadence. Review the starter remediation targets of Critical 7 days, High 14 days, Medium 30 days, and Low 90 days, then record the approved targets or time-bound Exceptions.",
|
|
343
320
|
controlType: "detective",
|
|
344
321
|
operationMode: "hybrid",
|
|
345
322
|
operationPattern: "mixed",
|
|
@@ -349,7 +326,7 @@ const controls = [
|
|
|
349
326
|
id: "control-penetration-testing",
|
|
350
327
|
code: "PEN-01",
|
|
351
328
|
title: "Penetration testing",
|
|
352
|
-
statement: "
|
|
329
|
+
statement: "Management records whether independent penetration testing is needed for the in-scope service, then documents its scope and cadence from exposure, change, customer commitments, and risk decisions. Findings are tracked to resolution or approved risk treatment.",
|
|
353
330
|
requirements: ["CC7.1", "CC7.2"],
|
|
354
331
|
activity: "Define scope, perform independent testing, review results, and track findings.",
|
|
355
332
|
controlType: "detective",
|
|
@@ -361,7 +338,7 @@ const controls = [
|
|
|
361
338
|
id: "control-logging-monitoring",
|
|
362
339
|
code: "LOG-01",
|
|
363
340
|
title: "Logging and monitoring",
|
|
364
|
-
statement: "Important systems record security and operational events,
|
|
341
|
+
statement: "Important systems record and protect security and operational events, retain them according to the approved Data Retention Schedule, and use risk-based alerting, review, and alert-path testing recorded in the applicable Controls and Obligations.",
|
|
365
342
|
requirements: ["CC7.2", "CC7.3"],
|
|
366
343
|
activity: "Collect, protect, alert on, test, and review important log output and access.",
|
|
367
344
|
controlType: "detective",
|
|
@@ -379,7 +356,7 @@ const controls = [
|
|
|
379
356
|
controlType: "corrective",
|
|
380
357
|
operationMode: "hybrid",
|
|
381
358
|
operationPattern: "event-driven",
|
|
382
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
359
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
383
360
|
},
|
|
384
361
|
{
|
|
385
362
|
id: "control-incident-exercise",
|
|
@@ -397,9 +374,9 @@ const controls = [
|
|
|
397
374
|
id: "control-backup-restoration",
|
|
398
375
|
code: "BCP-01",
|
|
399
376
|
title: "Backup and restoration",
|
|
400
|
-
statement: "
|
|
377
|
+
statement: "Each important System has backup scope, frequency, retention, monitoring, and restore validation that meet its approved recovery objectives, or a documented alternate recovery approach when backups are not the chosen safeguard.",
|
|
401
378
|
requirements: ["CC7.5", "CC9.1"],
|
|
402
|
-
activity: "
|
|
379
|
+
activity: "Record System recovery objectives and backup or alternate recovery procedures, monitor the chosen safeguards, and validate recovery on the approved schedule.",
|
|
403
380
|
controlType: "corrective",
|
|
404
381
|
operationMode: "hybrid",
|
|
405
382
|
operationPattern: "scheduled",
|
|
@@ -421,13 +398,13 @@ const controls = [
|
|
|
421
398
|
id: "control-vendor-due-diligence",
|
|
422
399
|
code: "VEN-01",
|
|
423
400
|
title: "Vendor due diligence and contracting",
|
|
424
|
-
statement: "Vendors receive access to Confidential or Restricted data
|
|
401
|
+
statement: "New Vendors receive risk-based security and privacy review and suitable contractual safeguards before access to Confidential or Restricted data. Vendors that predate Policy adoption receive a documented transition review, deadline, or approved risk acceptance.",
|
|
425
402
|
requirements: ["CC9.2"],
|
|
426
403
|
activity: "Assess service, data, access, assurance, recovery, incidents, and contract terms before access.",
|
|
427
404
|
controlType: "preventive",
|
|
428
405
|
operationMode: "manual",
|
|
429
406
|
operationPattern: "event-driven",
|
|
430
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
407
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
431
408
|
},
|
|
432
409
|
{
|
|
433
410
|
id: "control-vendor-monitoring",
|
|
@@ -439,7 +416,7 @@ const controls = [
|
|
|
439
416
|
controlType: "detective",
|
|
440
417
|
operationMode: "manual",
|
|
441
418
|
operationPattern: "mixed",
|
|
442
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
419
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
443
420
|
},
|
|
444
421
|
{
|
|
445
422
|
id: "control-security-exceptions",
|
|
@@ -451,7 +428,7 @@ const controls = [
|
|
|
451
428
|
controlType: "preventive",
|
|
452
429
|
operationMode: "manual",
|
|
453
430
|
operationPattern: "event-driven",
|
|
454
|
-
policies: [INFORMATION_SECURITY_POLICY_ID
|
|
431
|
+
policies: [INFORMATION_SECURITY_POLICY_ID]
|
|
455
432
|
}
|
|
456
433
|
];
|
|
457
434
|
|
|
@@ -473,13 +450,8 @@ const obligations = [
|
|
|
473
450
|
recurrence: calendar("year", 1),
|
|
474
451
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
475
452
|
scopeResourceIds: [
|
|
476
|
-
"policy-anti-bribery-corruption",
|
|
477
|
-
"policy-clear-desk-screen",
|
|
478
|
-
DATA_POLICY_ID,
|
|
479
453
|
INFORMATION_SECURITY_POLICY_ID,
|
|
480
|
-
|
|
481
|
-
"document-business-continuity-disaster-recovery",
|
|
482
|
-
"document-incident-response-plan",
|
|
454
|
+
SECURITY_PLAN_ID,
|
|
483
455
|
RETENTION_SCHEDULE_ID
|
|
484
456
|
],
|
|
485
457
|
controlIds: ["control-policy-management"],
|
|
@@ -492,7 +464,7 @@ const obligations = [
|
|
|
492
464
|
recurrence: calendar("year", 1),
|
|
493
465
|
ownerIds: [OVERSIGHT_TEAM_ID],
|
|
494
466
|
controlIds: ["control-risk-assessment"],
|
|
495
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
467
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
496
468
|
},
|
|
497
469
|
{
|
|
498
470
|
id: "obligation-annual-security-training",
|
|
@@ -507,15 +479,6 @@ const obligations = [
|
|
|
507
479
|
"control-workforce-expectations",
|
|
508
480
|
"control-security-training"
|
|
509
481
|
],
|
|
510
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
id: "obligation-annual-performance-review",
|
|
514
|
-
title: "Annual workforce performance review",
|
|
515
|
-
activityType: "performance-review",
|
|
516
|
-
recurrence: calendar("year", 1),
|
|
517
|
-
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
518
|
-
controlIds: ["control-performance-review"],
|
|
519
482
|
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
520
483
|
},
|
|
521
484
|
{
|
|
@@ -525,7 +488,7 @@ const obligations = [
|
|
|
525
488
|
recurrence: calendar("month", 3),
|
|
526
489
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
527
490
|
controlIds: ["control-access-review-offboarding"],
|
|
528
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
491
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
529
492
|
},
|
|
530
493
|
{
|
|
531
494
|
id: "obligation-annual-access-review",
|
|
@@ -534,7 +497,7 @@ const obligations = [
|
|
|
534
497
|
recurrence: calendar("year", 1),
|
|
535
498
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
536
499
|
controlIds: ["control-access-review-offboarding"],
|
|
537
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
500
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
538
501
|
},
|
|
539
502
|
{
|
|
540
503
|
id: "obligation-annual-inventory-review",
|
|
@@ -543,12 +506,12 @@ const obligations = [
|
|
|
543
506
|
recurrence: calendar("year", 1),
|
|
544
507
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
545
508
|
controlIds: ["control-inventory-configuration", "control-data-classification-inventory"],
|
|
546
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
509
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
547
510
|
},
|
|
548
511
|
{
|
|
549
|
-
id: "obligation-monthly-
|
|
550
|
-
title: "Monthly endpoint
|
|
551
|
-
activityType: "
|
|
512
|
+
id: "obligation-monthly-endpoint-protection-verification",
|
|
513
|
+
title: "Monthly endpoint protection configuration verification",
|
|
514
|
+
activityType: "endpoint-verification",
|
|
552
515
|
recurrence: calendar("month", 1),
|
|
553
516
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
554
517
|
controlIds: ["control-endpoint-protection"],
|
|
@@ -596,8 +559,8 @@ const obligations = [
|
|
|
596
559
|
activityType: "exercise",
|
|
597
560
|
recurrence: calendar("year", 1),
|
|
598
561
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
599
|
-
scopeResourceIds: [
|
|
600
|
-
templateResourceId:
|
|
562
|
+
scopeResourceIds: [SECURITY_PLAN_ID],
|
|
563
|
+
templateResourceId: SECURITY_PLAN_ID,
|
|
601
564
|
controlIds: ["control-incident-exercise", "control-logging-monitoring"],
|
|
602
565
|
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
603
566
|
},
|
|
@@ -616,8 +579,8 @@ const obligations = [
|
|
|
616
579
|
activityType: "exercise",
|
|
617
580
|
recurrence: calendar("year", 1),
|
|
618
581
|
ownerIds: [OVERSIGHT_TEAM_ID],
|
|
619
|
-
scopeResourceIds: [
|
|
620
|
-
templateResourceId:
|
|
582
|
+
scopeResourceIds: [SECURITY_PLAN_ID],
|
|
583
|
+
templateResourceId: SECURITY_PLAN_ID,
|
|
621
584
|
controlIds: ["control-continuity-exercise"],
|
|
622
585
|
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
623
586
|
},
|
|
@@ -628,7 +591,7 @@ const obligations = [
|
|
|
628
591
|
recurrence: calendar("year", 1),
|
|
629
592
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
630
593
|
controlIds: ["control-vendor-due-diligence", "control-vendor-monitoring"],
|
|
631
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
594
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
632
595
|
},
|
|
633
596
|
{
|
|
634
597
|
id: "obligation-annual-emergency-contact-review",
|
|
@@ -636,7 +599,7 @@ const obligations = [
|
|
|
636
599
|
activityType: "continuity-review",
|
|
637
600
|
recurrence: calendar("year", 1),
|
|
638
601
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
639
|
-
scopeResourceIds: [
|
|
602
|
+
scopeResourceIds: [SECURITY_PLAN_ID],
|
|
640
603
|
controlIds: ["control-continuity-exercise"],
|
|
641
604
|
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
642
605
|
},
|
|
@@ -660,7 +623,7 @@ const obligations = [
|
|
|
660
623
|
window: eventWindow(0),
|
|
661
624
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
662
625
|
controlIds: ["control-access-authorization"],
|
|
663
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
626
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
664
627
|
},
|
|
665
628
|
{
|
|
666
629
|
id: "obligation-worker-start-assets",
|
|
@@ -684,19 +647,7 @@ const obligations = [
|
|
|
684
647
|
scopeResourceIds: ["training-security-awareness"],
|
|
685
648
|
templateResourceId: "training-security-awareness",
|
|
686
649
|
controlIds: ["control-security-training"],
|
|
687
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
688
|
-
},
|
|
689
|
-
{
|
|
690
|
-
id: "obligation-worker-start-role-training",
|
|
691
|
-
title: "Complete or document non-applicability of role-based training",
|
|
692
|
-
activityType: "role-training",
|
|
693
|
-
recurrence: event("person-started"),
|
|
694
|
-
triggerPrompt: "New employee or contractor?",
|
|
695
|
-
window: eventWindow(30),
|
|
696
|
-
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
697
|
-
scopeResourceIds: ROLE_TRAINING_IDS,
|
|
698
|
-
controlIds: ["control-security-training"],
|
|
699
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID, "policy-anti-bribery-corruption"]
|
|
650
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
700
651
|
},
|
|
701
652
|
{
|
|
702
653
|
id: "obligation-worker-end-access",
|
|
@@ -707,7 +658,7 @@ const obligations = [
|
|
|
707
658
|
window: eventWindowHours(24),
|
|
708
659
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
709
660
|
controlIds: ["control-access-review-offboarding"],
|
|
710
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
661
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
711
662
|
},
|
|
712
663
|
{
|
|
713
664
|
id: "obligation-worker-end-assets",
|
|
@@ -730,7 +681,7 @@ const obligations = [
|
|
|
730
681
|
window: eventWindowHours(0),
|
|
731
682
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
732
683
|
controlIds: ["control-access-review-offboarding"],
|
|
733
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
684
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
734
685
|
},
|
|
735
686
|
{
|
|
736
687
|
id: "obligation-worker-role-change-access",
|
|
@@ -741,19 +692,7 @@ const obligations = [
|
|
|
741
692
|
window: eventWindow(3),
|
|
742
693
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
743
694
|
controlIds: ["control-access-authorization", "control-access-review-offboarding"],
|
|
744
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
745
|
-
},
|
|
746
|
-
{
|
|
747
|
-
id: "obligation-worker-role-change-training",
|
|
748
|
-
title: "Complete or document non-applicability of training for the new role",
|
|
749
|
-
activityType: "role-training",
|
|
750
|
-
recurrence: event("person-role-changed"),
|
|
751
|
-
triggerPrompt: "Worker role changed?",
|
|
752
|
-
window: eventWindow(30),
|
|
753
|
-
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
754
|
-
scopeResourceIds: ROLE_TRAINING_IDS,
|
|
755
|
-
controlIds: ["control-security-training"],
|
|
756
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID, "policy-anti-bribery-corruption"]
|
|
695
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
757
696
|
},
|
|
758
697
|
{
|
|
759
698
|
id: "obligation-personal-device-approval",
|
|
@@ -764,7 +703,7 @@ const obligations = [
|
|
|
764
703
|
window: eventWindow(0),
|
|
765
704
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
766
705
|
controlIds: ["control-access-authorization", "control-endpoint-protection"],
|
|
767
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
706
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
768
707
|
},
|
|
769
708
|
{
|
|
770
709
|
id: "obligation-personal-device-registration",
|
|
@@ -775,7 +714,7 @@ const obligations = [
|
|
|
775
714
|
window: eventWindow(0),
|
|
776
715
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
777
716
|
controlIds: ["control-inventory-configuration", "control-endpoint-protection"],
|
|
778
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
717
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
779
718
|
},
|
|
780
719
|
{
|
|
781
720
|
id: "obligation-vendor-access-review",
|
|
@@ -786,7 +725,7 @@ const obligations = [
|
|
|
786
725
|
window: eventWindow(0),
|
|
787
726
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
788
727
|
controlIds: ["control-vendor-due-diligence"],
|
|
789
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
728
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
790
729
|
},
|
|
791
730
|
{
|
|
792
731
|
id: "obligation-vendor-access-contract",
|
|
@@ -797,7 +736,7 @@ const obligations = [
|
|
|
797
736
|
window: eventWindow(0),
|
|
798
737
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
799
738
|
controlIds: ["control-vendor-due-diligence"],
|
|
800
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
739
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
801
740
|
},
|
|
802
741
|
{
|
|
803
742
|
id: "obligation-vendor-material-change-review",
|
|
@@ -808,7 +747,7 @@ const obligations = [
|
|
|
808
747
|
window: eventWindow(30),
|
|
809
748
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
810
749
|
controlIds: ["control-vendor-monitoring"],
|
|
811
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
750
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
812
751
|
},
|
|
813
752
|
{
|
|
814
753
|
id: "obligation-vendor-material-change-records",
|
|
@@ -819,7 +758,7 @@ const obligations = [
|
|
|
819
758
|
window: eventWindow(30),
|
|
820
759
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
821
760
|
controlIds: ["control-vendor-monitoring", "control-data-classification-inventory"],
|
|
822
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
761
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
823
762
|
},
|
|
824
763
|
{
|
|
825
764
|
id: "obligation-system-change-risk",
|
|
@@ -830,7 +769,7 @@ const obligations = [
|
|
|
830
769
|
window: eventWindow(30),
|
|
831
770
|
ownerIds: [OVERSIGHT_TEAM_ID],
|
|
832
771
|
controlIds: ["control-risk-assessment"],
|
|
833
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
772
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
834
773
|
},
|
|
835
774
|
{
|
|
836
775
|
id: "obligation-system-change-scan",
|
|
@@ -852,7 +791,7 @@ const obligations = [
|
|
|
852
791
|
window: eventWindow(30),
|
|
853
792
|
ownerIds: [OVERSIGHT_TEAM_ID],
|
|
854
793
|
controlIds: ["control-policy-management", "control-security-communication"],
|
|
855
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
794
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
856
795
|
},
|
|
857
796
|
{
|
|
858
797
|
id: "obligation-system-change-retention",
|
|
@@ -865,7 +804,7 @@ const obligations = [
|
|
|
865
804
|
scopeResourceIds: [RETENTION_SCHEDULE_ID],
|
|
866
805
|
templateResourceId: RETENTION_SCHEDULE_ID,
|
|
867
806
|
controlIds: ["control-data-retention-disposal", "control-data-classification-inventory"],
|
|
868
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
807
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
869
808
|
},
|
|
870
809
|
{
|
|
871
810
|
id: "obligation-system-change-alert-path",
|
|
@@ -920,7 +859,7 @@ const obligations = [
|
|
|
920
859
|
window: eventWindow(7),
|
|
921
860
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
922
861
|
controlIds: ["control-vendor-monitoring", "control-access-review-offboarding"],
|
|
923
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
862
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
924
863
|
},
|
|
925
864
|
{
|
|
926
865
|
id: "obligation-data-use-change-assessment",
|
|
@@ -931,7 +870,7 @@ const obligations = [
|
|
|
931
870
|
window: eventWindow(30),
|
|
932
871
|
ownerIds: [OVERSIGHT_TEAM_ID],
|
|
933
872
|
controlIds: ["control-risk-assessment", "control-data-classification-inventory"],
|
|
934
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
873
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
935
874
|
},
|
|
936
875
|
{
|
|
937
876
|
id: "obligation-incident-closure-review",
|
|
@@ -1030,7 +969,7 @@ const obligations = [
|
|
|
1030
969
|
window: eventWindow(7),
|
|
1031
970
|
ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
|
|
1032
971
|
controlIds: ["control-inventory-configuration", "control-data-retention-disposal"],
|
|
1033
|
-
policyIds: [INFORMATION_SECURITY_POLICY_ID
|
|
972
|
+
policyIds: [INFORMATION_SECURITY_POLICY_ID]
|
|
1034
973
|
},
|
|
1035
974
|
{
|
|
1036
975
|
id: "obligation-continuity-activation-review",
|
package/src/index.js
CHANGED
|
@@ -440,7 +440,7 @@ The generated workspace starts with foundational program records:
|
|
|
440
440
|
|
|
441
441
|
- Workspace and renderer settings
|
|
442
442
|
- The initial active owner
|
|
443
|
-
- The two core Appointment records: an active Policy Owner plus a planned Independent Policy Reviewer assignment. Create another Appointment only when
|
|
443
|
+
- The two core Appointment records: an active Policy Owner plus a planned Independent Policy Reviewer assignment. Create another Appointment only when the company actually delegates a named responsibility.
|
|
444
444
|
- A planned security and risk oversight team that still needs an independent chair
|
|
445
445
|
- The filegrc Git repository as a governance system of record
|
|
446
446
|
- A default 5x5 risk method and Public, Internal, Confidential, and Restricted data classifications
|
|
@@ -469,23 +469,24 @@ The generated workspace starts with the SOC 2 Security category:
|
|
|
469
469
|
- Active framework records for the 2017 Trust Services Criteria with revised points of focus (2022) and the 2018 SOC 2 Description Criteria with revised implementation guidance (2022)
|
|
470
470
|
- The 33 Common Criteria reference IDs from CC1.1 through CC9.2, without the licensed criteria text
|
|
471
471
|
- The nine Description Criteria reference IDs from DC1 through DC9, without the licensed criteria text
|
|
472
|
-
- Planned controls mapped to those references and
|
|
473
|
-
- The two core Appointment records. Policy Owner starts active; Independent Policy Reviewer remains Ready until assigned.
|
|
472
|
+
- Planned controls mapped to those references and one required Information Security Policy
|
|
473
|
+
- The two core Appointment records. Policy Owner starts active; Independent Policy Reviewer remains Ready until assigned. The Policy Owner coordinates incident, recovery, executive, communications, audit, insurance, privacy, and legal input unless the company delegates a function through a custom Appointment. FileGRC does not require in-house counsel or a standing legal retainer.
|
|
474
474
|
- A security and risk oversight team chaired by an independent reviewer who may be internal or external
|
|
475
|
-
-
|
|
475
|
+
- One Security Awareness Training record and proposed recurring obligations for reviews, scans, tests, training, and meetings
|
|
476
|
+
- One combined Security Incident and Recovery Plan plus a focused Data Retention Schedule
|
|
476
477
|
- A default 5x5 risk method and Public, Internal, Confidential, and Restricted data classifications
|
|
477
478
|
|
|
478
|
-
Treat every planned
|
|
479
|
+
Treat every planned Control as a proposal until its owner, actual procedure in Record Markdown, System scope, cadence, authoritative evidence sources, implementation date, and mappings match actual practice. FileGRC does not infer implementation from Policy prose. Enable the applicable Work Queue schedules during implementation; they remain dormant until the Policy is active and effective. Add Availability, Processing Integrity, Confidentiality, Privacy, employment, anti-bribery, or other broader GRC records only when the company chooses to expand the scope.
|
|
479
480
|
|
|
480
|
-
The recurring
|
|
481
|
+
The recurring Obligations contain reviewable starter defaults. They remain proposed until the company confirms their scope, owner, cadence, and proof. Enabling a schedule accepts those operational facts but does not start occurrences until the Information Security Policy is active and effective. Create separate completion records, such as meetings, reviews, scans, tests, exercises, and attestations, for each period.`,
|
|
481
482
|
audit_preparation_guidance: "Preparation creates a separate system description, management assertion, and management representation document for the engagement from the local starter templates. Type 2 preparation also creates a period completeness statement and one `audit-population` record for each standard population. It is safe to run again and does not approve documents, mark controls implemented, or create evidence. Do not reuse one completed management document across engagements.",
|
|
482
483
|
starter_setup: `## Finish initial setup
|
|
483
484
|
|
|
484
|
-
The starter
|
|
485
|
+
The starter Policy, Controls, plan, schedule, training, and Obligations are proposals. They do not state that ${companyName} operates the described Controls.
|
|
485
486
|
|
|
486
487
|
1. Run \`npx filegrc setup\` for guided service and goal setup, or use browser onboarding. Then finish Step 1 by adding the real reviewers and operators, finishing the oversight team, and confirming applicable criteria, commitments, material vendors, and in-scope systems.
|
|
487
|
-
2.
|
|
488
|
-
3. Review the starter
|
|
488
|
+
2. Tailor the Information Security Policy and have someone other than its owner approve it. Approval accepts the Policy but does not mean the Controls are implemented.
|
|
489
|
+
3. Review the starter Control set, combined Security Incident and Recovery Plan, Data Retention Schedule, Security Awareness Training, and proposed Obligations. Implement each applicable Control with its actual procedure, scope, cadence, Components, and authoritative evidence sources. Enable the applicable schedules, review the Policy activation assessment, then activate the Policy at the real implementation cutover.
|
|
489
490
|
4. Run \`npx filegrc program-readiness --require-ready\`, record the management candidate period start when reliable evidence collection begins, maintain risk assessments and risks, update controls when needed, use Work Queue for scheduled work, and trigger Policy Events when changes create required actions.
|
|
490
491
|
5. Engage a CPA firm, record the separate firm-agreed period in an audit record, review filegrc Evidence and External Evidence, and prepare fieldwork.`
|
|
491
492
|
};
|
|
@@ -522,13 +523,13 @@ async function runCombinedSetup(target, input) {
|
|
|
522
523
|
async function writeMinimalLockfile(target, name, versionRange) {
|
|
523
524
|
const lock = {
|
|
524
525
|
name,
|
|
525
|
-
version: "0.
|
|
526
|
+
version: "0.7.0",
|
|
526
527
|
lockfileVersion: 3,
|
|
527
528
|
requires: true,
|
|
528
529
|
packages: {
|
|
529
530
|
"": {
|
|
530
531
|
name,
|
|
531
|
-
version: "0.
|
|
532
|
+
version: "0.7.0",
|
|
532
533
|
dependencies: { filegrc: versionRange }
|
|
533
534
|
}
|
|
534
535
|
}
|
package/template/AGENTS.md
CHANGED
|
@@ -206,9 +206,14 @@ npx filegrc program-readiness --require-ready --summary --json
|
|
|
206
206
|
The Evidence Ready gate requires:
|
|
207
207
|
|
|
208
208
|
1. A management goal, selected systems, criteria, and controls.
|
|
209
|
-
2.
|
|
210
|
-
3. Implemented Controls with an owner, actual procedure, scope, operation pattern, mappings, implementation date, and every required linked Work Queue schedule
|
|
211
|
-
4. Every selected Control mapped to active authoritative
|
|
209
|
+
2. Policy content approved by someone other than its owner in Step 2, followed by active Policies with real effective dates at the Step 3 cutover.
|
|
210
|
+
3. Implemented Controls with an owner, actual procedure, scope, operation pattern, mappings, implementation date, and every required linked Work Queue schedule enabled.
|
|
211
|
+
4. Every selected Control mapped to active authoritative Components with the required evidence source roles, current access owners, and repeatable extraction instructions in Record Markdown.
|
|
212
|
+
5. Required governed plans complete and active, with no unresolved activation blockers.
|
|
213
|
+
|
|
214
|
+
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. A Control may be implemented against an approved inactive Policy, and enabled Obligations remain dormant until that Policy is active and effective.
|
|
215
|
+
|
|
216
|
+
Review `policyActivations` in Program Readiness before cutover. It shows planned or partial Controls, missing Components or evidence sources, missing schedules, unresolved Exceptions, and dates that need attention. At the end of Step 3, use the Controls-page review or `npx filegrc activate-policies --scaffold` to choose which approved Policies take effect. You can activate with a documented gap or approved Exception, but Evidence Readiness remains incomplete until every required Policy is active and operating. FileGRC does not infer technical implementation from Policy prose. Put configuration facts in Controls, Components, Systems, governed schedules, and Evidence.
|
|
212
217
|
|
|
213
218
|
Onboarding does not create Evidence Artifacts. Complete authoritative source Components as part of Control implementation. For every incomplete family in Program Readiness, update the Control with its authoritative `evidenceSourceComponentIds`, then give each source Component the required evidence role, current access owners, and repeatable retrieval instructions in Record Markdown. Use `npx filegrc evidence-map --json` when you want only those source checks. During Step 4, create an Evidence Artifact only when a real artifact exists. Select its `sourceComponentId`, attach or reference the result, link the Controls and operating record it supports, record its collector and Classification, then have another person verify it before audit use.
|
|
214
219
|
|