Реагирование на инциденты¶
Требования применяются к production-инцидентам запускаемых и публикуемых
компонентов проекта. Уровни обязательности определены в корневом README.md.
OPS-INC-001. Классификация и маршрут эскалации¶
Уровень: MUST
Применяется к: компоненту, отказ которого требует оперативного реагирования
Проект должен определить закрытый перечень severity с измеримыми признаками пользовательского ущерба, потери данных, нарушения безопасности и масштаба отказа. Для каждого severity должны быть заданы владелец первичного ответа, канал оповещения, максимальное время подтверждения и следующий уровень эскалации.
Alert, требующий действия по OPS-SLO-004, должен иметь достижимый маршрут к
дежурному владельцу. Отсутствие подтверждения в установленное время должно
автоматически или процедурно запускать следующий уровень эскалации.
Обоснование¶
Alert без владельца и срока подтверждения обнаруживает ущерб, но не запускает восстановление.
Проверка¶
- контролируемый тест маршрута и отсутствующего подтверждения;
- сопоставление severity с SLO и security-событиями;
- проверка актуальности владельцев и каналов.
Исключения¶
Компонент без отдельного on-call MAY использовать общую дежурную функцию, если она принимает ответственность и имеет доступ к его runbook.
OPS-INC-002. Управляемое ведение инцидента¶
Уровень: MUST
Применяется к: подтверждённому production-инциденту
Инцидент должен получить стабильный идентификатор, severity, ответственного координатора, временную шкалу, текущий пользовательский эффект и ссылку на рабочий канал. Изменение severity, существенное действие и решение о восстановлении должны фиксироваться со временем и автором.
Коммуникация должна иметь определённых получателей и период обновления для каждого применимого severity. Техническая диагностика не должна раскрывать секреты или защищаемые данные.
Обоснование¶
Единое состояние инцидента предотвращает конфликтующие действия и позволяет воспроизвести решения после восстановления.
Проверка¶
- учебный инцидент с передачей роли координатора;
- проверка timeline и периодических обновлений;
- secret scanning опубликованной диагностики.
Исключения¶
Краткий инцидент MAY закрыться одним итоговым обновлением, если установленный период коммуникации не был превышен.
OPS-INC-003. Экстренное изменение¶
Уровень: MUST
Применяется к: обходу обычного merge или release gate во время инцидента
Обход должен быть ограничен конкретным инцидентом, уполномоченным человеком, сроком и минимальным набором отключённых gates. Поставленный commit и артефакт должны сохраняться, а пропущенные проверки должны быть выполнены после стабилизации. Временное полномочие должно быть отозвано.
Обоснование¶
Срочность может изменить порядок проверки, но не должна уничтожать прослеживаемость или создавать постоянный обход защиты.
Проверка¶
- сопоставление обхода с ID инцидента и поставленным artifact identifier;
- проверка последующего выполнения gates;
- проверка отзыва временного доступа.
Исключения¶
Не допускаются для сохранения идентификатора поставленного состояния и последующей проверки.
OPS-INC-004. Разбор и корректирующие действия¶
Уровень: MUST
Применяется к: инциденту с существенным пользовательским ущербом, потерей данных, нарушением security-границы или повторяющейся причиной
После стабилизации должен быть создан версионируемый разбор с влиянием, timeline, способом обнаружения, техническими и организационными факторами, эффективными и неэффективными действиями. Каждое принятое корректирующее действие должно иметь владельца, срок и проверяемый критерий завершения.
Разбор должен описывать условия и систему, а не использовать персональное обвинение как причину. Повторившаяся причина должна ссылаться на предыдущий разбор и объяснять, почему прежняя мера не предотвратила повтор.
Обоснование¶
Разбор без отслеживаемых действий сохраняет историю, но не снижает вероятность или последствия повторения.
Проверка¶
- проверка полноты разбора по закрытому шаблону;
- запрос открытых и просроченных действий;
- проверка результата завершённого действия.
Исключения¶
Срок подготовки MAY зависеть от severity, но должен быть конечным.