create-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.
Files changed (56) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/defaults.js +128 -145
  4. package/src/index.js +12 -11
  5. package/template/AGENTS.md +17 -6
  6. package/template/README.md +14 -6
  7. package/template/WORKSPACE.md +2 -0
  8. package/template/data/AGENTS.md +12 -7
  9. package/template/data/appointments/appointment-policy-owner.json +1 -1
  10. package/template/data/audits/AGENTS.md +10 -0
  11. package/template/data/documents/AGENTS.md +11 -0
  12. package/template/data/documents/document-data-retention-schedule.json +1 -1
  13. package/template/data/documents/document-data-retention-schedule.md +7 -9
  14. package/template/data/documents/{document-incident-response-plan.json → document-security-incident-recovery-plan.json} +5 -6
  15. package/template/data/documents/document-security-incident-recovery-plan.md +79 -0
  16. package/template/data/documents/document-soc2-management-assertion.md +7 -7
  17. package/template/data/documents/document-soc2-management-representation.md +1 -1
  18. package/template/data/documents/document-soc2-period-completeness.md +4 -4
  19. package/template/data/documents/document-soc2-system-description.md +4 -4
  20. package/template/data/evidence/AGENTS.md +1 -1
  21. package/template/data/obligations/AGENTS.md +2 -1
  22. package/template/data/policies/AGENTS.md +22 -8
  23. package/template/data/policies/policy-information-security.json +2 -9
  24. package/template/data/policies/policy-information-security.md +205 -148
  25. package/template/data/training/training-security-awareness.json +1 -4
  26. package/template/data/training/training-security-awareness.md +20 -6
  27. package/template/package.json +1 -1
  28. package/template/data/documents/document-business-continuity-disaster-recovery.json +0 -29
  29. package/template/data/documents/document-business-continuity-disaster-recovery.md +0 -192
  30. package/template/data/documents/document-contractor-policy-acknowledgement.json +0 -20
  31. package/template/data/documents/document-contractor-policy-acknowledgement.md +0 -24
  32. package/template/data/documents/document-contractor-training-acknowledgement.json +0 -23
  33. package/template/data/documents/document-contractor-training-acknowledgement.md +0 -20
  34. package/template/data/documents/document-employee-handbook-acknowledgement.json +0 -20
  35. package/template/data/documents/document-employee-handbook-acknowledgement.md +0 -19
  36. package/template/data/documents/document-employee-policy-acknowledgement.json +0 -20
  37. package/template/data/documents/document-employee-policy-acknowledgement.md +0 -24
  38. package/template/data/documents/document-employee-training-acknowledgement.json +0 -23
  39. package/template/data/documents/document-employee-training-acknowledgement.md +0 -20
  40. package/template/data/documents/document-incident-response-plan.md +0 -138
  41. package/template/data/policies/policy-anti-bribery-corruption.json +0 -19
  42. package/template/data/policies/policy-anti-bribery-corruption.md +0 -87
  43. package/template/data/policies/policy-clear-desk-screen.json +0 -18
  44. package/template/data/policies/policy-clear-desk-screen.md +0 -49
  45. package/template/data/policies/policy-data-protection-handling.json +0 -22
  46. package/template/data/policies/policy-data-protection-handling.md +0 -130
  47. package/template/data/policies/policy-employee-handbook.json +0 -21
  48. package/template/data/policies/policy-employee-handbook.md +0 -161
  49. package/template/data/policies/policy-mobile-computing-communications.json +0 -18
  50. package/template/data/policies/policy-mobile-computing-communications.md +0 -74
  51. package/template/data/training/training-anti-bribery-high-risk-roles.json +0 -16
  52. package/template/data/training/training-anti-bribery-high-risk-roles.md +0 -19
  53. package/template/data/training/training-privileged-sensitive-roles.json +0 -20
  54. package/template/data/training/training-privileged-sensitive-roles.md +0 -20
  55. package/template/data/training/training-secure-development.json +0 -19
  56. package/template/data/training/training-secure-development.md +0 -22
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 ROLE_TRAINING_IDS = [
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",
@@ -93,7 +88,7 @@ const descriptionCriteria = [
93
88
  ["DC5", "Applicable criteria and controls", "Identify the applicable trust services criteria and the controls designed to address them."],
94
89
  ["DC6", "Complementary user entity controls", "Describe controls that customers are expected to operate for the service organization's controls to work as intended."],
95
90
  ["DC7", "Subservice organizations and controls", "Describe relevant subservice organizations, how their controls are treated, and complementary controls they are expected to operate."],
96
- ["DC8", "Criteria not relevant", "Identify any trust services criteria within an included category that are not relevant to the system and explain why."],
91
+ ["DC8", "Criteria not relevant", "Confirm that every Security Common Criterion applies. Identify any criterion from an included optional Trust Services Category that is not relevant to the system and explain the limited circumstances."],
97
92
  ["DC9", "Significant changes", "Describe significant system changes during the reporting period that could affect a report user's understanding of the system."]
98
93
  ];
99
94
  const commonCriteriaReferences = commonCriteria.map(([reference]) => reference);
@@ -109,49 +104,43 @@ const controls = [
109
104
  controlType: "preventive",
110
105
  operationMode: "manual",
111
106
  operationPattern: "scheduled",
112
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-anti-bribery-corruption"]
107
+ policies: [INFORMATION_SECURITY_POLICY_ID]
113
108
  },
114
109
  {
115
110
  id: "control-policy-management",
116
111
  code: "GOV-02",
117
- title: "Policy management",
118
- statement: "The policy owner reviews governed policies and plans at least annually and after material changes, obtains approval from a separate independent approver, and retains the approved revisions in Git.",
112
+ title: "Control and policy management",
113
+ statement: "Management selects and develops manual and technology Controls from approved objectives, commitments, risks, dependencies, and changes, and records each Control's owner, scope, procedure, operation pattern, evidence source, and implementation status. The policy owner reviews Controls, governed policies, and plans at least annually and after material changes, obtains separate approval for governed content, and retains approved revisions in Git.",
119
114
  requirements: ["CC5.1", "CC5.2", "CC5.3"],
120
- activity: "Review, approve, communicate, and version policies and plans.",
115
+ activity: "Review Control design and evidence paths, correct gaps or approve time-bound Exceptions, and review, approve, communicate, and version governed policies and plans.",
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",
134
123
  code: "GOV-03",
135
- title: "Security communication",
136
- statement: "The organization communicates security responsibilities, approved reporting routes, material changes, and relevant control information to its workforce and outside parties.",
124
+ title: "Security information and communication",
125
+ statement: "Management obtains or generates, checks, and uses relevant and reliable information from internal and external sources to operate Controls, and communicates security responsibilities, approved reporting routes, material changes, and relevant Control information to its workforce and outside parties in time for action.",
137
126
  requirements: ["CC2.1", "CC2.2", "CC2.3"],
138
- activity: "Maintain reporting routes and communicate policies, changes, and security information.",
127
+ activity: "Record material information sources, scope, period, ownership, and known limits; maintain reporting routes; and communicate policies, changes, and security information.",
139
128
  controlType: "preventive",
140
129
  operationMode: "hybrid",
141
130
  operationPattern: "mixed",
142
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
131
+ policies: [INFORMATION_SECURITY_POLICY_ID]
143
132
  },
144
133
  {
145
134
  id: "control-workforce-expectations",
146
135
  code: "HR-01",
147
136
  title: "Workforce expectations",
148
- statement: "Workers agree to applicable conduct, confidentiality, acceptable-use, and security responsibilities before receiving access and are held accountable for violations.",
149
- requirements: ["CC1.4"],
150
- activity: "Complete screening when appropriate, agreements, policy acknowledgement, and corrective action.",
137
+ statement: "Workers are screened before sensitive access when lawful and appropriate to role risk, have the competence needed for assigned duties, agree to applicable conduct, confidentiality, acceptable-use, intellectual-property, and security responsibilities before receiving access, and are held accountable for violations.",
138
+ requirements: ["CC1.4", "CC1.5"],
139
+ activity: "Record the role-based screening decision, confirm competence and authority, complete agreements and policy acknowledgement, and take corrective action when needed.",
151
140
  controlType: "preventive",
152
141
  operationMode: "manual",
153
- operationPattern: "event-driven",
154
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-anti-bribery-corruption"]
142
+ operationPattern: "mixed",
143
+ policies: [INFORMATION_SECURITY_POLICY_ID]
155
144
  },
156
145
  {
157
146
  id: "control-security-training",
@@ -163,37 +152,25 @@ 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
  {
181
158
  id: "control-risk-assessment",
182
159
  code: "RSK-01",
183
160
  title: "Risk assessment and treatment",
184
- statement: "The organization assesses information security risk at least annually and after material changes, assigns owners and responses, and reviews high and critical risks at least quarterly.",
161
+ statement: "The organization defines security objectives and risk tolerance, assesses information security, fraud, misconduct, dependency, and change risk at least annually and after material changes, assigns owners and responses, and reviews high and critical risks at least quarterly.",
185
162
  requirements: ["CC3.1", "CC3.2", "CC3.3", "CC3.4", "CC9.1"],
186
- activity: "Identify threats and changes, score risk, select treatment, and track review dates.",
163
+ activity: "Confirm objectives and risk tolerance, identify internal and external threats, fraud and misconduct scenarios, dependencies, and changes, score risk, select treatment, and track review dates.",
187
164
  controlType: "detective",
188
165
  operationMode: "manual",
189
166
  operationPattern: "mixed",
190
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
167
+ policies: [INFORMATION_SECURITY_POLICY_ID]
191
168
  },
192
169
  {
193
170
  id: "control-monitoring-remediation",
194
171
  code: "MON-01",
195
172
  title: "Control monitoring and remediation",
196
- statement: "Management reviews control operation, incidents, test results, exceptions, and findings, then assigns and tracks corrective work through completion.",
173
+ statement: "Management reviews Control operation, source information, incidents, test results, Exceptions, and findings at least quarterly and after significant failures, then communicates deficiencies and assigns, tracks, and verifies corrective work through completion.",
197
174
  requirements: ["CC4.1", "CC4.2"],
198
175
  activity: "Review control evidence and track deficiencies, owners, due dates, and verification.",
199
176
  controlType: "detective",
@@ -211,19 +188,19 @@ const controls = [
211
188
  controlType: "preventive",
212
189
  operationMode: "hybrid",
213
190
  operationPattern: "event-driven",
214
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
191
+ policies: [INFORMATION_SECURITY_POLICY_ID]
215
192
  },
216
193
  {
217
194
  id: "control-strong-authentication",
218
195
  code: "IAM-02",
219
196
  title: "Strong authentication",
220
- statement: "Important systems use approved authentication settings, protected unique credentials, and multi-factor authentication for administrative, production, source-control, email, identity, and sensitive-data access when supported.",
197
+ statement: "Important Systems use approved strong-authentication settings, unique identities, protected credentials, changed or disabled default credentials, and separate administrative identities or roles when technically supported and appropriate to risk. Multi-factor authentication is required for workforce and administrative access to production, source control, email, identity, and Systems that provide access to Confidential or Restricted data. Customer and external-user authentication requirements follow approved Controls, customer commitments, and risk decisions. Where required MFA is unavailable, management approves a time-bound Exception with a risk assessment, compensating Controls, an accountable owner, and a review or expiration date.",
221
198
  requirements: ["CC6.1", "CC6.2", "CC6.6"],
222
- activity: "Configure and monitor authentication, credential storage, and privileged roles.",
199
+ activity: "Configure and monitor authentication, credential and recovery-material protection, default credentials, privileged identities or roles, customer requirements, and approved MFA Exceptions.",
223
200
  controlType: "preventive",
224
201
  operationMode: "hybrid",
225
202
  operationPattern: "continuous",
226
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
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, DATA_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, "policy-clear-desk-screen", "policy-mobile-computing-communications"]
227
+ policies: [INFORMATION_SECURITY_POLICY_ID]
251
228
  },
252
229
  {
253
230
  id: "control-data-classification-inventory",
@@ -259,19 +236,19 @@ const controls = [
259
236
  controlType: "preventive",
260
237
  operationMode: "manual",
261
238
  operationPattern: "mixed",
262
- policies: [DATA_POLICY_ID, INFORMATION_SECURITY_POLICY_ID]
239
+ policies: [INFORMATION_SECURITY_POLICY_ID]
263
240
  },
264
241
  {
265
242
  id: "control-encryption-transmission",
266
243
  code: "DATA-02",
267
244
  title: "Encryption and secure transmission",
268
- statement: "Confidential and Restricted data is encrypted in transit over untrusted networks and at rest in approved systems and on devices, with protected key access.",
245
+ statement: "Confidential and Restricted data is encrypted in transit over untrusted networks and at rest in approved Systems and on devices, with named key ownership, protected key access, and risk-based key lifecycle controls.",
269
246
  requirements: ["CC6.1", "CC6.7"],
270
- activity: "Configure encryption and approved transfer methods based on classification.",
247
+ activity: "Configure encryption and approved transfer methods based on classification, and control key generation, storage, distribution, rotation, revocation, and recovery as applicable.",
271
248
  controlType: "preventive",
272
249
  operationMode: "automated",
273
250
  operationPattern: "continuous",
274
- policies: [DATA_POLICY_ID, INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
251
+ policies: [INFORMATION_SECURITY_POLICY_ID]
275
252
  },
276
253
  {
277
254
  id: "control-data-retention-disposal",
@@ -282,16 +259,16 @@ const controls = [
282
259
  activity: "Apply approved retention and disposal methods to active, local, backup, and vendor-held copies.",
283
260
  controlType: "preventive",
284
261
  operationMode: "hybrid",
285
- operationPattern: "event-driven",
286
- policies: [DATA_POLICY_ID, INFORMATION_SECURITY_POLICY_ID]
262
+ operationPattern: "mixed",
263
+ policies: [INFORMATION_SECURITY_POLICY_ID]
287
264
  },
288
265
  {
289
266
  id: "control-inventory-configuration",
290
267
  code: "OPS-01",
291
268
  title: "System inventory and secure configuration",
292
- statement: "The organization maintains inventories of important systems, company and approved personal devices, service accounts, vendors, and data stores, with owners, lifecycle state, and secure configuration expectations.",
269
+ statement: "The organization maintains inventories of important Systems, Components, company and approved personal devices, software, service accounts, Vendors, and data stores, with owners, lifecycle state, and secure configuration expectations. Unsupported or unneeded important assets are upgraded, isolated, replaced, or retired according to risk.",
293
270
  requirements: ["CC6.1", "CC7.1"],
294
- activity: "Maintain inventories, baselines, ownership, classification, and approved deviations.",
271
+ activity: "Maintain inventories, baselines, ownership, classification, lifecycle decisions, secure retirement, and approved deviations.",
295
272
  controlType: "preventive",
296
273
  operationMode: "hybrid",
297
274
  operationPattern: "mixed",
@@ -302,44 +279,44 @@ const controls = [
302
279
  code: "OPS-02",
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
- requirements: ["CC6.6", "CC7.1"],
306
- activity: "Manage endpoint safeguards and perform a full or equivalent malware scan at least monthly.",
282
+ requirements: ["CC6.6", "CC6.8", "CC7.1"],
283
+ activity: "Use continuous platform protection where supported and verify endpoint configuration, update, and compliance state on the approved risk-based schedule when periodic work is needed.",
307
284
  controlType: "preventive",
308
285
  operationMode: "automated",
309
286
  operationPattern: "mixed",
310
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
287
+ policies: [INFORMATION_SECURITY_POLICY_ID]
311
288
  },
312
289
  {
313
290
  id: "control-network-security",
314
291
  code: "NET-01",
315
292
  title: "Network and remote-access security",
316
- statement: "The organization restricts network paths, protects remote access with approved encryption and authentication, and reviews material network access rules at least annually.",
293
+ statement: "The organization restricts network paths, separates production and nonproduction environments according to data and risk, protects remote access with approved encryption and authentication, and reviews material network access rules at least annually.",
317
294
  requirements: ["CC6.6", "CC6.7"],
318
- activity: "Manage boundaries, firewall rules, wireless safeguards, and remote production access.",
295
+ activity: "Manage boundaries, environment connections, firewall rules, wireless safeguards, and remote production access.",
319
296
  controlType: "preventive",
320
297
  operationMode: "hybrid",
321
298
  operationPattern: "mixed",
322
- policies: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
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, reviewed, tested, approved, deployed through an authorized process, and recoverable; emergency changes receive later review.",
305
+ statement: "Source and deployment paths protect against unauthorized changes and malicious software. Material software and infrastructure changes are recorded, receive a security design or threat analysis suited to their risk, are tested, approved, deployed through an authorized process, and are 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, security analysis when applicable, reviewer or compensating review, test result, deployment, communication, and rollback method.",
331
308
  controlType: "preventive",
332
309
  operationMode: "hybrid",
333
- operationPattern: "event-driven",
310
+ operationPattern: "mixed",
334
311
  policies: [INFORMATION_SECURITY_POLICY_ID]
335
312
  },
336
313
  {
337
314
  id: "control-vulnerability-management",
338
315
  code: "VUL-01",
339
316
  title: "Vulnerability management",
340
- statement: "The organization monitors for vulnerabilities and scans internet-facing and production systems at least quarterly and after material changes when practical. Critical, High, Medium, and Low vulnerabilities are remediated within 7, 14, 30, and 30 days unless an approved exception applies.",
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: "Identify, validate, prioritize, remediate, or approve time-bound exceptions for vulnerabilities.",
319
+ activity: "Choose scan coverage and cadence, define approved risk-based remediation targets, and document time-bound Exceptions when a target cannot be met.",
343
320
  controlType: "detective",
344
321
  operationMode: "hybrid",
345
322
  operationPattern: "mixed",
@@ -349,9 +326,9 @@ const controls = [
349
326
  id: "control-penetration-testing",
350
327
  code: "PEN-01",
351
328
  title: "Penetration testing",
352
- statement: "An independent penetration test evaluates the external attack surface of the in-scope service at least annually, with findings tracked to resolution or approved risk treatment.",
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
- activity: "Define scope, perform independent testing, review results, and track findings.",
331
+ activity: "Review and record applicability and cadence. When testing is required, define its scope and independence, perform the test, review results, and track findings.",
355
332
  controlType: "detective",
356
333
  operationMode: "manual",
357
334
  operationPattern: "scheduled",
@@ -361,9 +338,9 @@ 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, protect and retain security logs for at least 12 months, and provide risk-based alerting, quarterly review, annual end-to-end alert-path testing, and testing after material alerting changes.",
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. Systems with availability commitments, recovery objectives, or material operational dependencies also monitor the health, capacity, failure, and service indicators needed to detect degradation.",
365
342
  requirements: ["CC7.2", "CC7.3"],
366
- activity: "Collect, protect, alert on, test, and review important log output and access.",
343
+ activity: "Collect, protect, alert on, test, and review important log output, access, and applicable health, capacity, failure, and service indicators.",
367
344
  controlType: "detective",
368
345
  operationMode: "hybrid",
369
346
  operationPattern: "mixed",
@@ -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, DATA_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: "Important production data is backed up at least daily and retained for at least 30 days unless an approved stronger objective applies, with failures monitored and restoration tested annually.",
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: "Protect and monitor backups, then test retrieval and use of restored data.",
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 only after risk-based security and privacy review and suitable contractual safeguards.",
401
+ statement: "New Vendors receive risk-based security and privacy review and suitable contractual safeguards before access to Confidential or Restricted data or material reliance by an important service. Applicable contracts address permitted use and confidentiality, security responsibilities, incident notice, access and subprocessor restrictions, continuity, data return or deletion, termination, and assurance rights. Vendors that predate Policy adoption receive a documented transition review, deadline, or approved risk acceptance.",
425
402
  requirements: ["CC9.2"],
426
- activity: "Assess service, data, access, assurance, recovery, incidents, and contract terms before access.",
403
+ activity: "Assess service, data, access, assurance, recovery, incidents, dependencies, supplied Components, and applicable contract safeguards before access or material reliance.",
427
404
  controlType: "preventive",
428
405
  operationMode: "manual",
429
406
  operationPattern: "event-driven",
430
- policies: [INFORMATION_SECURITY_POLICY_ID, DATA_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, DATA_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, DATA_POLICY_ID]
431
+ policies: [INFORMATION_SECURITY_POLICY_ID]
455
432
  }
456
433
  ];
457
434
 
@@ -463,7 +440,11 @@ const obligations = [
463
440
  recurrence: calendar("month", 3),
464
441
  ownerIds: [OVERSIGHT_TEAM_ID],
465
442
  scopeResourceIds: [OVERSIGHT_TEAM_ID],
466
- controlIds: ["control-security-governance"],
443
+ controlIds: [
444
+ "control-security-governance",
445
+ "control-security-communication",
446
+ "control-monitoring-remediation"
447
+ ],
467
448
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
468
449
  },
469
450
  {
@@ -473,16 +454,20 @@ const obligations = [
473
454
  recurrence: calendar("year", 1),
474
455
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
475
456
  scopeResourceIds: [
476
- "policy-anti-bribery-corruption",
477
- "policy-clear-desk-screen",
478
- DATA_POLICY_ID,
479
457
  INFORMATION_SECURITY_POLICY_ID,
480
- "policy-mobile-computing-communications",
481
- "document-business-continuity-disaster-recovery",
482
- "document-incident-response-plan",
458
+ SECURITY_PLAN_ID,
483
459
  RETENTION_SCHEDULE_ID
484
460
  ],
485
- controlIds: ["control-policy-management"],
461
+ controlIds: ["control-policy-management", "control-data-retention-disposal"],
462
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
463
+ },
464
+ {
465
+ id: "obligation-annual-control-design-review",
466
+ title: "Annual Control design and evidence-path review",
467
+ activityType: "control-design-review",
468
+ recurrence: calendar("year", 1),
469
+ ownerIds: [OVERSIGHT_TEAM_ID],
470
+ controlIds: ["control-policy-management", "control-monitoring-remediation"],
486
471
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
487
472
  },
488
473
  {
@@ -492,7 +477,16 @@ const obligations = [
492
477
  recurrence: calendar("year", 1),
493
478
  ownerIds: [OVERSIGHT_TEAM_ID],
494
479
  controlIds: ["control-risk-assessment"],
495
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
480
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
481
+ },
482
+ {
483
+ id: "obligation-annual-workforce-competence-review",
484
+ title: "Annual workforce security-role competence review",
485
+ activityType: "performance-review",
486
+ recurrence: calendar("year", 1),
487
+ ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
488
+ controlIds: ["control-workforce-expectations"],
489
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
496
490
  },
497
491
  {
498
492
  id: "obligation-annual-security-training",
@@ -507,15 +501,6 @@ const obligations = [
507
501
  "control-workforce-expectations",
508
502
  "control-security-training"
509
503
  ],
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
504
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
520
505
  },
521
506
  {
@@ -525,7 +510,7 @@ const obligations = [
525
510
  recurrence: calendar("month", 3),
526
511
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
527
512
  controlIds: ["control-access-review-offboarding"],
528
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
513
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
529
514
  },
530
515
  {
531
516
  id: "obligation-annual-access-review",
@@ -534,7 +519,7 @@ const obligations = [
534
519
  recurrence: calendar("year", 1),
535
520
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
536
521
  controlIds: ["control-access-review-offboarding"],
537
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
522
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
538
523
  },
539
524
  {
540
525
  id: "obligation-annual-inventory-review",
@@ -543,12 +528,12 @@ const obligations = [
543
528
  recurrence: calendar("year", 1),
544
529
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
545
530
  controlIds: ["control-inventory-configuration", "control-data-classification-inventory"],
546
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
531
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
547
532
  },
548
533
  {
549
- id: "obligation-monthly-malware-scan",
550
- title: "Monthly endpoint malware scan",
551
- activityType: "security-scan",
534
+ id: "obligation-monthly-endpoint-protection-verification",
535
+ title: "Monthly endpoint protection configuration verification",
536
+ activityType: "endpoint-verification",
552
537
  recurrence: calendar("month", 1),
553
538
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
554
539
  controlIds: ["control-endpoint-protection"],
@@ -574,8 +559,8 @@ const obligations = [
574
559
  },
575
560
  {
576
561
  id: "obligation-annual-penetration-test",
577
- title: "Annual independent penetration test",
578
- activityType: "penetration-test",
562
+ title: "Annual penetration-testing applicability and cadence review",
563
+ activityType: "risk-assessment",
579
564
  recurrence: calendar("year", 1),
580
565
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
581
566
  controlIds: ["control-penetration-testing"],
@@ -596,8 +581,8 @@ const obligations = [
596
581
  activityType: "exercise",
597
582
  recurrence: calendar("year", 1),
598
583
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
599
- scopeResourceIds: ["document-incident-response-plan"],
600
- templateResourceId: "document-incident-response-plan",
584
+ scopeResourceIds: [SECURITY_PLAN_ID],
585
+ templateResourceId: SECURITY_PLAN_ID,
601
586
  controlIds: ["control-incident-exercise", "control-logging-monitoring"],
602
587
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
603
588
  },
@@ -616,8 +601,8 @@ const obligations = [
616
601
  activityType: "exercise",
617
602
  recurrence: calendar("year", 1),
618
603
  ownerIds: [OVERSIGHT_TEAM_ID],
619
- scopeResourceIds: ["document-business-continuity-disaster-recovery"],
620
- templateResourceId: "document-business-continuity-disaster-recovery",
604
+ scopeResourceIds: [SECURITY_PLAN_ID],
605
+ templateResourceId: SECURITY_PLAN_ID,
621
606
  controlIds: ["control-continuity-exercise"],
622
607
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
623
608
  },
@@ -628,7 +613,7 @@ const obligations = [
628
613
  recurrence: calendar("year", 1),
629
614
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
630
615
  controlIds: ["control-vendor-due-diligence", "control-vendor-monitoring"],
631
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
616
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
632
617
  },
633
618
  {
634
619
  id: "obligation-annual-emergency-contact-review",
@@ -636,10 +621,21 @@ const obligations = [
636
621
  activityType: "continuity-review",
637
622
  recurrence: calendar("year", 1),
638
623
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
639
- scopeResourceIds: ["document-business-continuity-disaster-recovery"],
624
+ scopeResourceIds: [SECURITY_PLAN_ID],
640
625
  controlIds: ["control-continuity-exercise"],
641
626
  policyIds: [INFORMATION_SECURITY_POLICY_ID]
642
627
  },
628
+ {
629
+ id: "obligation-worker-start-screening",
630
+ title: "Record the role-based screening and competence decision before sensitive access",
631
+ activityType: "workforce-review",
632
+ recurrence: event("person-started"),
633
+ triggerPrompt: "New employee or contractor?",
634
+ window: eventWindow(0),
635
+ ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
636
+ controlIds: ["control-workforce-expectations"],
637
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
638
+ },
643
639
  {
644
640
  id: "obligation-worker-start-agreements",
645
641
  title: "Collect workforce agreements and policy acknowledgements",
@@ -660,7 +656,7 @@ const obligations = [
660
656
  window: eventWindow(0),
661
657
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
662
658
  controlIds: ["control-access-authorization"],
663
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
659
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
664
660
  },
665
661
  {
666
662
  id: "obligation-worker-start-assets",
@@ -684,19 +680,7 @@ const obligations = [
684
680
  scopeResourceIds: ["training-security-awareness"],
685
681
  templateResourceId: "training-security-awareness",
686
682
  controlIds: ["control-security-training"],
687
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_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"]
683
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
700
684
  },
701
685
  {
702
686
  id: "obligation-worker-end-access",
@@ -707,7 +691,7 @@ const obligations = [
707
691
  window: eventWindowHours(24),
708
692
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
709
693
  controlIds: ["control-access-review-offboarding"],
710
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
694
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
711
695
  },
712
696
  {
713
697
  id: "obligation-worker-end-assets",
@@ -730,7 +714,7 @@ const obligations = [
730
714
  window: eventWindowHours(0),
731
715
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
732
716
  controlIds: ["control-access-review-offboarding"],
733
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
717
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
734
718
  },
735
719
  {
736
720
  id: "obligation-worker-role-change-access",
@@ -741,19 +725,18 @@ const obligations = [
741
725
  window: eventWindow(3),
742
726
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
743
727
  controlIds: ["control-access-authorization", "control-access-review-offboarding"],
744
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
728
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
745
729
  },
746
730
  {
747
731
  id: "obligation-worker-role-change-training",
748
- title: "Complete or document non-applicability of training for the new role",
732
+ title: "Assign and complete applicable role-based security training",
749
733
  activityType: "role-training",
750
734
  recurrence: event("person-role-changed"),
751
735
  triggerPrompt: "Worker role changed?",
752
736
  window: eventWindow(30),
753
737
  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"]
738
+ controlIds: ["control-workforce-expectations", "control-security-training"],
739
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
757
740
  },
758
741
  {
759
742
  id: "obligation-personal-device-approval",
@@ -764,7 +747,7 @@ const obligations = [
764
747
  window: eventWindow(0),
765
748
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
766
749
  controlIds: ["control-access-authorization", "control-endpoint-protection"],
767
- policyIds: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
750
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
768
751
  },
769
752
  {
770
753
  id: "obligation-personal-device-registration",
@@ -775,7 +758,7 @@ const obligations = [
775
758
  window: eventWindow(0),
776
759
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
777
760
  controlIds: ["control-inventory-configuration", "control-endpoint-protection"],
778
- policyIds: [INFORMATION_SECURITY_POLICY_ID, "policy-mobile-computing-communications"]
761
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
779
762
  },
780
763
  {
781
764
  id: "obligation-vendor-access-review",
@@ -786,7 +769,7 @@ const obligations = [
786
769
  window: eventWindow(0),
787
770
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
788
771
  controlIds: ["control-vendor-due-diligence"],
789
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
772
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
790
773
  },
791
774
  {
792
775
  id: "obligation-vendor-access-contract",
@@ -797,7 +780,7 @@ const obligations = [
797
780
  window: eventWindow(0),
798
781
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
799
782
  controlIds: ["control-vendor-due-diligence"],
800
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
783
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
801
784
  },
802
785
  {
803
786
  id: "obligation-vendor-material-change-review",
@@ -808,7 +791,7 @@ const obligations = [
808
791
  window: eventWindow(30),
809
792
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
810
793
  controlIds: ["control-vendor-monitoring"],
811
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
794
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
812
795
  },
813
796
  {
814
797
  id: "obligation-vendor-material-change-records",
@@ -819,7 +802,7 @@ const obligations = [
819
802
  window: eventWindow(30),
820
803
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
821
804
  controlIds: ["control-vendor-monitoring", "control-data-classification-inventory"],
822
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
805
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
823
806
  },
824
807
  {
825
808
  id: "obligation-system-change-risk",
@@ -830,7 +813,7 @@ const obligations = [
830
813
  window: eventWindow(30),
831
814
  ownerIds: [OVERSIGHT_TEAM_ID],
832
815
  controlIds: ["control-risk-assessment"],
833
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
816
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
834
817
  },
835
818
  {
836
819
  id: "obligation-system-change-scan",
@@ -852,7 +835,7 @@ const obligations = [
852
835
  window: eventWindow(30),
853
836
  ownerIds: [OVERSIGHT_TEAM_ID],
854
837
  controlIds: ["control-policy-management", "control-security-communication"],
855
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
838
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
856
839
  },
857
840
  {
858
841
  id: "obligation-system-change-retention",
@@ -865,7 +848,7 @@ const obligations = [
865
848
  scopeResourceIds: [RETENTION_SCHEDULE_ID],
866
849
  templateResourceId: RETENTION_SCHEDULE_ID,
867
850
  controlIds: ["control-data-retention-disposal", "control-data-classification-inventory"],
868
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
851
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
869
852
  },
870
853
  {
871
854
  id: "obligation-system-change-alert-path",
@@ -920,7 +903,7 @@ const obligations = [
920
903
  window: eventWindow(7),
921
904
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
922
905
  controlIds: ["control-vendor-monitoring", "control-access-review-offboarding"],
923
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
906
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
924
907
  },
925
908
  {
926
909
  id: "obligation-data-use-change-assessment",
@@ -931,7 +914,7 @@ const obligations = [
931
914
  window: eventWindow(30),
932
915
  ownerIds: [OVERSIGHT_TEAM_ID],
933
916
  controlIds: ["control-risk-assessment", "control-data-classification-inventory"],
934
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
917
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
935
918
  },
936
919
  {
937
920
  id: "obligation-incident-closure-review",
@@ -1030,7 +1013,7 @@ const obligations = [
1030
1013
  window: eventWindow(7),
1031
1014
  ownerIds: [POLICY_OWNER_APPOINTMENT_ID],
1032
1015
  controlIds: ["control-inventory-configuration", "control-data-retention-disposal"],
1033
- policyIds: [INFORMATION_SECURITY_POLICY_ID, DATA_POLICY_ID]
1016
+ policyIds: [INFORMATION_SECURITY_POLICY_ID]
1034
1017
  },
1035
1018
  {
1036
1019
  id: "obligation-continuity-activation-review",