ObjectStackObjectStack

Incident Response

Incident Response protocol schemas

Incident Response Protocol — ISO 27001:2022 (A.5.24–A.5.28)

Defines schemas for information security event management including incident classification, severity grading, response procedures, and notification matrices.

See also: https://www.iso.org/standard/27001

@category Security

Source: packages/spec/src/system/incident-response.zod.ts

TypeScript Usage

import { IncidentSchema, IncidentCategorySchema, IncidentNotificationMatrixSchema, IncidentNotificationRuleSchema, IncidentResponsePhaseSchema, IncidentResponsePolicySchema, IncidentSeveritySchema, IncidentStatusSchema } from '@objectstack/spec/system';
import type { Incident, IncidentCategory, IncidentNotificationMatrix, IncidentNotificationRule, IncidentResponsePhase, IncidentResponsePolicy, IncidentSeverity, IncidentStatus } from '@objectstack/spec/system';

// Validate data
const result = IncidentSchema.parse(data);

Incident

Security incident record per ISO 27001:2022 A.5.24–A.5.28

Properties

PropertyTypeRequiredDescription
idstringUnique incident identifier
titlestringIncident title
descriptionstringDetailed incident description
severityEnum<'critical' | 'high' | 'medium' | 'low'>Incident severity level
categoryEnum<'data_breach' | 'malware' | 'unauthorized_access' | 'denial_of_service' | 'social_engineering' | 'insider_threat' | 'physical_security' | 'configuration_error' | … +3 more>Incident category
statusEnum<'reported' | 'triaged' | 'investigating' | 'containing' | 'eradicating' | 'recovering' | 'resolved' | 'closed'>Current incident status
reportedBystringReporter user ID or system name
reportedAtnumberReport timestamp
detectedAtnumberoptionalDetection timestamp
resolvedAtnumberoptionalResolution timestamp
affectedSystemsstring[]Affected systems
affectedDataClassificationsEnum<'pii' | 'phi' | 'pci' | 'financial' | 'confidential' | 'internal' | 'public'>[]optionalAffected data classifications
responsePhases{ phase: Enum<'identification' | 'containment' | 'eradication' | 'recovery' | 'lessons_learned'>; description: string; assignedTo: string; targetHours: number; … }[]optionalIncident response phases
rootCausestringoptionalRoot cause analysis
correctiveActionsstring[]optionalCorrective actions taken or planned
lessonsLearnedstringoptionalLessons learned from the incident
relatedChangeRequestIdsstring[]optionalRelated change request IDs
metadataRecord<string, any>optionalCustom metadata key-value pairs

Allowed Values: Incident.category

  • data_breach
  • malware
  • unauthorized_access
  • denial_of_service
  • social_engineering
  • insider_threat
  • physical_security
  • configuration_error
  • vulnerability_exploit
  • policy_violation
  • other

Nested Shape: Incident.responsePhases[number]

Incident response phase with timing and assignment

PropertyTypeRequiredDescription
phaseEnum<'identification' | 'containment' | 'eradication' | 'recovery' | 'lessons_learned'>Response phase name
descriptionstringPhase description and objectives
assignedTostringResponsible team or role
targetHoursnumberTarget completion time in hours
completedAtnumberoptionalActual completion timestamp
notesstringoptionalPhase notes and findings

IncidentCategory

Allowed Values

  • data_breach
  • malware
  • unauthorized_access
  • denial_of_service
  • social_engineering
  • insider_threat
  • physical_security
  • configuration_error
  • vulnerability_exploit
  • policy_violation
  • other

IncidentNotificationMatrix

Incident notification matrix with escalation policies

Properties

PropertyTypeRequiredDescription
rules{ severity: Enum<'critical' | 'high' | 'medium' | 'low'>; channels: Enum<'email' | 'sms' | 'slack' | 'pagerduty' | 'webhook'>[]; recipients: string[]; withinMinutes: number; … }[]Notification rules by severity level
escalationTimeoutMinutesnumberoptional (default: 30)Auto-escalation timeout in minutes
escalationChainstring[]optional (default: [])Ordered escalation chain of roles

Nested Shape: IncidentNotificationMatrix.rules[number]

Incident notification rule per severity level

PropertyTypeRequiredDescription
severityEnum<'critical' | 'high' | 'medium' | 'low'>Minimum severity to trigger notification
channelsEnum<'email' | 'sms' | 'slack' | 'pagerduty' | 'webhook'>[]Notification channels
recipientsstring[]Roles or teams to notify
withinMinutesnumberNotification deadline in minutes from detection
notifyRegulatorsbooleanoptional (default: false)Whether to notify regulatory authorities
regulatorDeadlineHoursnumberoptionalRegulatory notification deadline in hours

IncidentNotificationRule

Incident notification rule per severity level

Properties

PropertyTypeRequiredDescription
severityEnum<'critical' | 'high' | 'medium' | 'low'>Minimum severity to trigger notification
channelsEnum<'email' | 'sms' | 'slack' | 'pagerduty' | 'webhook'>[]Notification channels
recipientsstring[]Roles or teams to notify
withinMinutesnumberNotification deadline in minutes from detection
notifyRegulatorsbooleanoptional (default: false)Whether to notify regulatory authorities
regulatorDeadlineHoursnumberoptionalRegulatory notification deadline in hours

IncidentResponsePhase

Incident response phase with timing and assignment

Properties

PropertyTypeRequiredDescription
phaseEnum<'identification' | 'containment' | 'eradication' | 'recovery' | 'lessons_learned'>Response phase name
descriptionstringPhase description and objectives
assignedTostringResponsible team or role
targetHoursnumberTarget completion time in hours
completedAtnumberoptionalActual completion timestamp
notesstringoptionalPhase notes and findings

IncidentResponsePolicy

Organization-level incident response policy per ISO 27001:2022

Properties

PropertyTypeRequiredDescription
enabledbooleanoptional (default: true)Enable incident response management
notificationMatrix{ rules: object[]; escalationTimeoutMinutes: number; escalationChain: string[] }Notification and escalation matrix
defaultResponseTeamstringDefault incident response team or role
triageDeadlineHoursnumberoptional (default: 1)Maximum hours to begin triage after detection
requirePostIncidentReviewbooleanoptional (default: true)Require post-incident review for all incidents
regulatoryNotificationThresholdEnum<'critical' | 'high' | 'medium' | 'low'>optional (default: "high")Minimum severity requiring regulatory notification
retentionDaysnumberoptional (default: 2555)Incident record retention period in days (default ~7 years)

Nested Shape: IncidentResponsePolicy.notificationMatrix

PropertyTypeRequiredDescription
rules{ severity: Enum<'critical' | 'high' | 'medium' | 'low'>; channels: Enum<'email' | 'sms' | 'slack' | 'pagerduty' | 'webhook'>[]; recipients: string[]; withinMinutes: number; … }[]Notification rules by severity level
escalationTimeoutMinutesnumberoptional (default: 30)Auto-escalation timeout in minutes
escalationChainstring[]optional (default: [])Ordered escalation chain of roles

IncidentSeverity

Allowed Values

  • critical
  • high
  • medium
  • low

IncidentStatus

Allowed Values

  • reported
  • triaged
  • investigating
  • containing
  • eradicating
  • recovering
  • resolved
  • closed

On this page