Перейти к содержанию

Аномалии

Раздел Аномалии — обнаружение и анализ подозрительного поведения ИИ-агентов.

Маршрут: /anomalies

Как работает обнаружение

AegisAI использует гибридный подход (как Prompt Guard): supervised tabular ML, Isolation Forest fallback, опциональный ONNX, правила и внешний escalate в зоне неопределённости.

graph LR
    A[Действие агента] --> B[Feature Schema]
    B --> C[Supervised / Isolation Forest / ONNX]
    B --> D[Rule Engine]
    C --> E[Score]
    D --> E
    E --> F{External band?}
    F -->|да| G[External API]
    F -->|нет| H{Порог}
    G --> H
    H -->|Выше| I[Алерт]
    H -->|Ниже| J[Норма]
Компонент Описание
Supervised ML Gradient Boosting / Logistic Regression при наличии меток
Isolation Forest Fallback unsupervised (scikit-learn)
ONNX Опциональный tabular scorer (ANOMALY_MODEL_BACKEND=onnx\|hybrid)
Rule Engine Частота, ресурсы, время суток
Risk Scorer Blend keyword + ML prior (ANOMALY_RISK_ML_WEIGHT)
Timeout ANOMALY_ML_TIMEOUT_SECONDS (по умолчанию 0.3s) → fallback на rules

Инференс — per-tenant модель. При timeout backend = timeout.

Feedback (ложные / истинные срабатывания)

В таблице аномалий можно отметить FP или TP. Это пишет anomaly_training_samples и может запустить auto-retrain:

curl -X POST http://localhost:8000/api/v1/anomalies/detector/feedback \
  -H "X-API-Key: <key>" \
  -H "Content-Type: application/json" \
  -d '{"event_data": {"action": "export", "risk_score": 0.3}, "label": 0}'
label Значение
0 False positive / норма
1 True positive / аномалия

Список аномалий

Колонка Описание
ID UUID отчёта
Агент Имя и ID
Score Anomaly score (0.0–1.0)
Действие Действие, вызвавшее аномалию
Ресурс Целевой ресурс
Статус open, confirmed, dismissed
Время Timestamp обнаружения

Действия с аномалией

Действие Роль Описание
Подтвердить / TP Security Analyst+ Реальная угроза (+ training label)
Отклонить / FP Security Analyst+ Ложное срабатывание (+ training label)
Детали Все (чтение) Features и контекст

Статистика и статус детектора

curl http://localhost:8000/api/v1/anomalies/stats \
  -H "X-API-Key: <key>"

curl http://localhost:8000/api/v1/anomalies/detector/status \
  -H "X-API-Key: <key>"

В статусе: версия модели, backend config, onnx_available, число training samples, метрики precision/recall.

Управление моделью

Обучение

curl -X POST http://localhost:8000/api/v1/anomalies/detector/train \
  -H "X-API-Key: <key>" \
  -H "Content-Type: application/json" \
  -d '{"min_samples": 100}'

Автообучение

После каждых ANOMALY_AUTO_RETRAIN_EVENTS размеченных samples планируется background retrain. seed_data.py --reset прогревает демо-модель.

Откат версии

curl -X POST http://localhost:8000/api/v1/anomalies/detector/rollback/<version> \
  -H "X-API-Key: <key>"

Конфигурация

Переменная По умолчанию Назначение
ANOMALY_MODEL_BACKEND hybrid sklearn / onnx / hybrid
ANOMALY_ML_TIMEOUT_SECONDS 0.3 Бюджет sync ML
ANOMALY_ONNX_MODEL_PATH ./models/anomaly/anomaly_model.onnx ONNX-артефакт
ANOMALY_EXTERNAL_ENABLED false External escalate
ANOMALY_RISK_ML_WEIGHT 0.4 α в blend риска

Экспорт ONNX: python scripts/export_anomaly_onnx.py.

Метрики / Grafana

Метрика Описание
anomaly_ml_backend_total Инференсы по backend
anomaly_processing_seconds Latency sync detect
anomaly_score_histogram Распределение score
anomaly_false_positive_reports_total FP feedback
shadow_candidates_total Кандидаты Shadow AI
shadow_time_to_confirm_seconds Время до confirm/dismiss

Панели — dashboard AegisAI Business Metrics. Алерт ShadowAICandidateBacklog при всплеске pending кандидатов.

Интеграция с политиками

При POST /policies/check поле anomaly содержит результат hybrid-детекции. Orphan-отчёты (без agent_id) могут создать кандидата на странице Агенты / Discovery.

Высокий anomaly score

Аномалии с score > 0.8 могут создавать HITL-запрос, если активна hitl.rego.

Real-time алерты

Новые аномалии доставляются через WebSocket (anomaly.detected).