Приложение C. Статусы и коды ошибок¶
Справочник по статусам сканирований, задач (jobs) и моделей, а также по кодам ошибок.
Статусы сканирований¶
Жизненный цикл сканирования управляется конечным автоматом (state machine) с 9 состояниями.
Диаграмма переходов¶
stateDiagram-v2
[*] --> PENDING
PENDING --> VALIDATED : Валидация пройдена
PENDING --> FAILED : Ошибка валидации
PENDING --> CANCELLED : Отмена пользователем
VALIDATED --> STARTING : Запуск API-вызовов
VALIDATED --> FAILED : Ошибка запуска
VALIDATED --> CANCELLED : Отмена пользователем
STARTING --> STARTED : Сервис подтвердил получение
STARTING --> FAILED : Все сервисы отклонили
STARTING --> CANCELLED : Отмена пользователем
STARTED --> RUNNING : Начало выполнения атак
STARTED --> FAILED : Критическая ошибка
STARTED --> CANCELLED : Отмена пользователем
RUNNING --> COMPLETED : Все задачи завершены
RUNNING --> PARTIAL_SUCCESS : Часть задач не выполнена
RUNNING --> FAILED : Все задачи провалены
RUNNING --> CANCELLED : Отмена пользователем
Таблица статусов¶
| Статус | Тип | Описание | Допустимые переходы |
|---|---|---|---|
PENDING |
Активный | Сканирование создано, ожидает валидации. | VALIDATED, FAILED, CANCELLED |
VALIDATED |
Активный | Конфигурация прошла валидацию (модель доступна, профиль корректен). | STARTING, FAILED, CANCELLED |
STARTING |
Активный | API-вызовы к Testing Services инициированы. | STARTED, FAILED, CANCELLED |
STARTED |
Активный | Хотя бы один Testing Service подтвердил получение задачи. | RUNNING, FAILED, CANCELLED |
RUNNING |
Активный | Атаки выполняются, результаты поступают. | COMPLETED, PARTIAL_SUCCESS, FAILED, CANCELLED |
COMPLETED |
Терминальный | Все задачи успешно завершены. | — (терминальное состояние) |
PARTIAL_SUCCESS |
Терминальный | Часть задач завершилась успешно, часть провалилась. | — (терминальное состояние) |
FAILED |
Терминальный | Сканирование завершилось с ошибкой. | — (терминальное состояние) |
CANCELLED |
Терминальный | Сканирование отменено пользователем. | — (терминальное состояние) |
Терминальные состояния
Из терминальных состояний (COMPLETED, PARTIAL_SUCCESS, FAILED, CANCELLED) переходы невозможны. Для повторного сканирования необходимо создать новое.
Коды ошибок сканирований (scan-level)¶
Коды ошибок записываются в поле error_code объекта сканирования при переходе в статус FAILED.
| Код ошибки | Этап (error_stage) | Повторяемость | Описание |
|---|---|---|---|
VALIDATION_FAILED |
validation |
Не повторяется | Конфигурация сканирования не прошла валидацию (некорректные параметры, модель недоступна, профиль не найден). |
START_FAILED |
start |
Не повторяется | Не удалось запустить ни один Testing Service (все сервисы недоступны или отклонили задачу). |
NO_ATTACKS_CONFIGURED |
validation |
Не повторяется | В профиле сканирования не настроено ни одной атаки. |
TOO_MANY_JOB_FAILURES |
execution |
Не повторяется | Слишком большой процент задач завершился с ошибкой (превышен порог допустимых сбоев). |
ALL_JOBS_FAILED |
execution |
Не повторяется | Все задачи в сканировании завершились с ошибкой. |
RESULTS_AGGREGATION_FAILED |
execution |
Не повторяется | Ошибка при агрегации результатов от Testing Services. |
Коды ошибок задач (job-level)¶
Коды ошибок записываются в поле error_code объекта задачи (attack job).
| Код ошибки | Повторяемость | Описание |
|---|---|---|
TESTING_SERVICE_FAILED |
Повторяемая | Testing Service вернул ошибку при выполнении атаки. Задача будет повторена до исчерпания лимита попыток. |
STALE_TIMEOUT |
Повторяемая | Задача не получила heartbeat в течение JOB_STALE_TIMEOUT_SECONDS (по умолчанию 300 сек). Считается «зависшей». |
START_TIMEOUT |
Повторяемая | Задача не была принята Testing Service в течение таймаута. |
UNSUPPORTED_ATTACK_TYPE |
Не повторяемая | Тип атаки не поддерживается указанным Testing Service. |
CONTRACT_ERROR |
Не повторяемая | Ошибка контракта: несовместимость формата запроса/ответа между Orchestrator и Testing Service. |
MAX_RETRIES_EXCEEDED |
Не повторяемая | Исчерпано максимальное количество попыток (SERVICE_MAX_RETRIES, по умолчанию 3). |
Этапы ошибок (error_stage)¶
Поле error_stage указывает, на каком этапе жизненного цикла произошла ошибка.
| Этап | Описание |
|---|---|
validation |
Этап валидации конфигурации: проверка модели, профиля, параметров. |
start |
Этап запуска: отправка задач в Testing Services через API. |
execution |
Этап выполнения: обработка атак и сбор результатов. |
Статусы моделей¶
| Статус | Описание |
|---|---|
active |
Модель активна и доступна для сканирования. |
inactive |
Модель временно отключена. Не отображается в списке для сканирования. |
archived |
Модель перемещена в архив. Результаты сохранены, но новые сканирования невозможны. |
Статусы проверки связи (health check)¶
Проверка связи определяет, доступна ли модель по указанному endpoint.
| Статус | Описание |
|---|---|
available |
Модель доступна и отвечает на запросы. Последняя проверка прошла успешно. |
unavailable |
Модель недоступна (timeout, HTTP-ошибка, отказ в соединении). |
stale |
Информация о доступности устарела — проверка не проводилась дольше заданного интервала. |
Автоматическая проверка
Перед запуском сканирования Scan Orchestrator автоматически проверяет доступность модели. Если модель в статусе unavailable или stale, сканирование переходит в статус FAILED с кодом VALIDATION_FAILED.