feat(ueba): add per-user and department baseline skeleton

This commit is contained in:
igor04091968
2026-06-03 19:07:46 +03:00
parent c2e2f64c08
commit efd09012d1
5 changed files with 731 additions and 11 deletions
+13 -1
View File
@@ -117,13 +117,25 @@ DetMir Workforce/Security формирует read-only UEBA-compatible rule-base
но не добавляют risk score сами по себе;
- `risk_sources`: типы источников, которые дали risk reasons;
- `baseline_status`: статус baseline-модели, сейчас
`portfolio_only_no_per_user_baseline`;
`per_user_department_baseline_skeleton`;
- `baseline_window_days`: rolling window локальной baseline-истории;
- `user_baseline_available`: есть ли минимум samples для per-user сравнения;
- `department_baseline_available`: есть ли минимум samples для сравнения
подразделений;
- `deviation_score`: score отклонения текущего дня от baseline;
- `baseline_samples`: количество накопленных user/department samples;
- `policy_version`: версия risk policy;
- `calculated_from`: список источников, участвовавших в расчете;
- `reasons`: DLP WARN/FAIL, open review queue, off-hours/weekend insights,
просадки/аномалии Workforce, приложения без явного
`application_weights` правила.
Baseline skeleton хранится локально в state каталоге портала как
`ueba-baseline-state.json`. Текущий день записывается атомарно по `report_date`
и не дублируется при повторном открытии отчета. Отклонение считается только
после накопления минимального количества исторических samples, поэтому первый
период эксплуатации честно показывает `*_baseline_available=false`.
Веса настраиваются через YAML policy:
- пример: `configs/detmir-ueba-risk-policy.example.yaml`;
+5
View File
@@ -32,6 +32,8 @@ baseline и раздела `Phase 8: Post-MVP Enhancements`.
active applications, DLP WARN/FAIL, evidence screenshots/items, open issues;
- отчет содержит read-only UEBA-compatible rule-based risk scoring v1: `score`,
`level`, `confidence`, `risk_sources`, `baseline_status`, `policy_version`,
`baseline_window_days`, `user_baseline_available`,
`department_baseline_available`, `deviation_score`, `baseline_samples`,
`calculated_from`, `reasons`;
- отчет и вкладка `Руководитель` показывают `Индекс активности` как
proxy `активное время / плановое рабочее время`;
@@ -66,6 +68,9 @@ baseline и раздела `Phase 8: Post-MVP Enhancements`.
настраиваются в `/etc/detmir-portal-ueba-policy.yaml`; evidence используется
как confidence, а не как отдельный risk reason; слой не выполняет
pfSense/NAC/SOAR actions;
- baseline skeleton хранится в state каталоге портала как
`ueba-baseline-state.json`: per-user и per-department samples копятся по
`report_date`, а deviation включается только после минимальной истории;
- вкладка `Руководитель` получает этот блок через легкий endpoint
`/api/workforce/policy/explain`, без загрузки полного `/api/reports`;
- contract легкого endpoint защищен unit-тестом