Типы событий¶
Здесь приведена сводная полная таблица всех типов событий безопасности AppSec.AIGate. Каноническим источником служит enum EventType в admin-api (хранение и API). Часть типов (realtime streaming scan, SDK) пока доступна только через API и не отображается в фильтре UI — они вынесены в раздел «Типы, доступные только через API» ниже.
Подробное описание каждого типа события с примерами — см. События безопасности.
Колонка Подавляемый отражает рекомендованное поведение по умолчанию. Технически подавлением управляет открытый список event_logging.disabled_event_types — см. раздел «Управление подавлением» ниже.
Группа Запросы (request-side)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
REQUEST_BLOCKED |
Request blocked | HIGH¹ | Нет | Запрос заблокирован PDP по любой причине (threat, PII, content safety, custom policy) |
REQUEST_SANITIZED |
Request sanitized (PII masked) | MEDIUM | Нет | PII найдены и замаскированы; запрос пропущен в изменённом виде |
MONITOR_ALERT |
Monitor alert (dry-run) | LOW | Да | Профиль в monitor_mode: решение было бы BLOCK, но запрос пропущен |
THREAT_DETECTED |
Threat detected | HIGH | Нет | Threat Detector вернул score ≥ порога (jailbreak / prompt injection) |
PII_DETECTED |
PII detected | MEDIUM | Да | PII найдены, но решение — не блокировать (например, monitor_mode или PII-детекция выключена) |
OBFUSCATION_DETECTED |
Obfuscation detected | HIGH / MEDIUM² | Да | Обнаружена материальная Unicode/encoding-обфускация при режиме ≠ detect_only |
¹ Тяжёлые угрозы могут подниматься до CRITICAL через поле risk_severity.
² HIGH для безусловно-опасных классов обфускации; MEDIUM для классов двойного назначения.
Группа Контентная безопасность (Content Safety)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
CONTENT_SAFETY_FLAG |
Content safety — flag | LOW | Да | Категория Controversial с политикой flag в профиле: запрос не заблокирован, находка записана для аудита. Эмитируется gateway на request-side. Response-side аналог — RESPONSE_MONITOR_ALERT (PDP response_policy → MONITOR). |
Группа Контентные политики (Custom Policy)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
CUSTOM_POLICY_BLOCK |
Custom policy — block | HIGH | Нет | Правило кастомной контентной политики (blocklist/regex) сработало → блокировка |
CUSTOM_POLICY_LANGUAGE_BLOCK |
Custom policy — language block | HIGH | Нет | Язык запроса не входит в разрешённый список политики |
CUSTOM_POLICY_FLAG |
Custom policy — flag | LOW | Нет | Правило сработало в режиме мониторинга (без блокировки) |
Группа Ответы (response-side)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
RESPONSE_BLOCKED |
Response blocked | HIGH | Нет | Response Scanner заблокировал ответ LLM (output PII, output Content Safety, кастомная политика) |
RESPONSE_REDACTED |
Response redacted | MEDIUM | Нет | Ответ пропущен с замаскированными PII |
RESPONSE_MONITOR_ALERT |
Response monitor alert | LOW | Да | Профиль в monitor_mode: ответ был бы заблокирован, но пропущен |
Группа Passthrough (Features 011 / 014)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
PROFILE_INACTIVE_PASSTHROUGH |
Profile inactive — passthrough | INFO | Да | Нет активного профиля у провайдера; passthrough_when_inactive=true → запрос прозрачно проксирован |
PROFILE_INACTIVE_BLOCKED |
Profile inactive — blocked | MEDIUM | Нет | Нет активного профиля; passthrough_when_inactive=false → запрос отклонён |
PASSTHROUGH_TRAFFIC |
Passthrough traffic | INFO | Да | FieldMapping не извлёк промпт (не-chat-запрос); запрос проксирован без инспекции |
FIELDMAPPING_EVALUATION_ERROR |
FieldMapping evaluation error | MEDIUM | Нет | JSONPath в FieldMapping провайдера упал при компиляции; rate-limited (не чаще 1 раза в 5 мин на провайдера) |
Группа Streaming (Feature 012)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
LLM_REQUEST_COMPLETED |
LLM request completed | LOW | Да | Streaming-запрос успешно завершён; несёт метаданные стрима (streaming_mode, outcome, bytes_streamed) |
Группа Vault Audit (Feature 015)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
REQUEST_TOKENIZED |
Request tokenized (vault) | INFO | Да³ | Vault токенизировал PII в запросе (pii_mask_mode=vault_tokenize); коррелируется с парным RESPONSE_DEANONYMIZED по trace_id |
RESPONSE_DEANONYMIZED |
Response deanonymized (vault) | INFO / MEDIUM⁴ | Да³ | Vault детокенизировал токены в ответе LLM |
³ При подавлении событие всё равно эмитируется, но чувствительные payload-поля (оригинальные значения, снэпшоты промпта) обнуляются — аудитная цепочка сохраняется.
⁴ MEDIUM, если denied_count > 0 (хотя бы один токен не был возвращён из vault).
Группа Операционные (Operational)¶
| Код | UI-метка | Severity | Подавляемый | Когда возникает |
|---|---|---|---|---|
DETECTOR_ERROR |
Detector error | MEDIUM | Нет | Детектор вернул 5xx или ошибку разбора ответа |
SERVICE_UNAVAILABLE |
Service unavailable | HIGH / LOW⁵ | Нет | Критичный upstream-сервис недоступен (circuit breaker open) |
REQUEST_ERROR |
Request error (400) | LOW | Нет | Клиент прислал невалидный запрос (400, auth, rate); поле error_code несёт детали |
PROVIDER_ERROR |
Provider error (upstream) | HIGH | Нет | Upstream LLM вернул ошибку |
FAIL_SAFE_TRIGGERED |
Fail-safe triggered | HIGH | Нет | Сработал fail_safe_mode (детектор недоступен, применено решение профиля по умолчанию) |
⁵ HIGH, если недоступен критичный сервис pipeline (Request Normalizer); LOW, если недоступен опциональный сервис (Translation Service).
Типы, доступные только через API¶
Следующие типы присутствуют в backend-enum, но пока не отображаются в фильтре «Тип события» в UI. Они доступны через API событий и в экспорте.
Realtime Streaming Scan (Feature 022)¶
| Код | Severity | Когда возникает |
|---|---|---|
STREAMING_RESPONSE_BLOCKED |
HIGH | on_detect=block: стрим прерван по сигналу детектора |
STREAMING_RESPONSE_MONITORED |
MEDIUM | on_detect=monitor: стрим пропущен, событие зафиксировано |
STREAMING_RESPONSE_TERMINATED |
MEDIUM | on_detect=silent_close: стрим закрыт без сообщения клиенту |
STREAMING_RESPONSE_ALLOWED |
INFO | log_allow_decisions=true: стрим завершился безопасно |
STREAMING_DETECTOR_UNAVAILABLE |
HIGH | Content Safety недоступен во время стрима; применён fail_safe.mode |
STREAMING_DEGRADED |
MEDIUM | Overload-fallback: переключение на buffer_and_scan при перегрузке |
STREAMING_PROVIDER_UNSUPPORTED |
MEDIUM | Провайдер не поддерживает realtime-скан; runtime-fallback на passthrough |
SDK (Feature 030)¶
| Код | Severity | Когда возникает |
|---|---|---|
SDK_DEGRADED_FAIL_OPEN |
HIGH | SDK работал в fail-open, пока gateway был недоступен; метаданные без промпта (152-ФЗ) |
SDK_INCOMPATIBLE_BACKEND |
HIGH | Обнаружено мажорное несоответствие протокола при инициализации SDK |
Управление подавлением¶
Подавлением управляет список profile.event_logging.disabled_event_types. Типы реагируют на него по-разному — есть события, которые подавить технически нельзя:
| Поведение | Типы |
|---|---|
| Можно подавлять (разумно для снижения шума) | MONITOR_ALERT, RESPONSE_MONITOR_ALERT, CONTENT_SAFETY_FLAG, PII_DETECTED, OBFUSCATION_DETECTED, LLM_REQUEST_COMPLETED, PASSTHROUGH_TRAFFIC, PROFILE_INACTIVE_PASSTHROUGH, REQUEST_TOKENIZED, RESPONSE_DEANONYMIZED, STREAMING_RESPONSE_ALLOWED |
| Можно подавить, но не рекомендуется | FAIL_SAFE_TRIGGERED, DETECTOR_ERROR, SERVICE_UNAVAILABLE, PROVIDER_ERROR — сигнализируют о сбоях/деградации pipeline; подавление маскирует системные проблемы |
| Не рекомендуется — критично для compliance | REQUEST_BLOCKED, REQUEST_SANITIZED, RESPONSE_BLOCKED, RESPONSE_REDACTED, THREAT_DETECTED, PROFILE_INACTIVE_BLOCKED, FIELDMAPPING_EVALUATION_ERROR |
| Не подавляются — нет проверки в коде | CUSTOM_POLICY_BLOCK, CUSTOM_POLICY_FLAG, CUSTOM_POLICY_LANGUAGE_BLOCK — эмитируются напрямую; добавление в disabled_event_types игнорируется |
| Не подавляется — событие до загрузки профиля | REQUEST_ERROR — создаётся до разрешения профиля (некорректный запрос клиента), механизм неприменим |
Vault-события при подавлении
REQUEST_TOKENIZED и RESPONSE_DEANONYMIZED при добавлении в disabled_event_types всё равно эмитируются, но с обнулёнными чувствительными payload-полями — аудитная цепочка vault не прерывается.
Исторические и служебные коды
JAILBREAK_DETECTEDиPROMPT_INJECTION_DETECTEDкак отдельные типы событий не эмитируются в текущей архитектуре — унифицированный Threat Detector выдаётTHREAT_DETECTED. Коды сохранены в enum только для обратной совместимости со старыми записями в БД.POLICY_VIOLATION— не тип события, а значение поляerror_codeна событияхREQUEST_ERROR.