18 KiB
AWatch-rus Production Validation
Дата проверки: 2026-06-07.
Статус после TASK_015: рабочий внутренний pilot-контур приведен к Demo Freeze
v1 по portal runtime, production-hardening endpoints и основным live smoke.
UEBA critical разобран в docs/UEBA_CRITICAL_REVIEW_RU.md и
классифицирован как Needs Investigation. Расширение пилота допустимо только
контролируемо, после проверки agent coverage и назначения операционного
ownership.
Executive Summary
Проверка выполнялась read-only по рабочему внутреннему контуру на нескольких пользователях. Реальные payload, логи, screenshots, IP-адреса, hostname, логины, ФИО и подразделения в репозиторий не сохранялись.
Подтверждено:
- gateway и portal service доступны;
- базовый portal UI открывается;
- ActivityWatch API доступен и содержит свежие buckets;
/portal/api/reportsотвечает по ролям;- Security events backend в рабочем контуре подключен;
- role gates в существующем portal smoke срабатывают;
- Forensics view и базовые portal tabs открываются;
- Windows runtime содержит активный текущий агентский процесс и watcher-процессы.
Ключевые gaps, найденные до TASK_014:
- фактический portal runtime отстает от Demo Freeze v1: отдельные endpoints
/portal/api/workforce/kpi/explain,/portal/api/risk/narrativeи/portal/api/actionsна live-контуре возвращают404; - production-hardening endpoints
/healthz,/readyz,/version,/metricsне доступны на фактическом portal port; gateway-level/healthzотвечает, но это не заменяет portal production contract; - request id / correlation id headers на live portal API не возвращаются;
- Executive visual conformance не проходит по текущему freeze smoke: в рабочем runtime не отображаются новые Pilot v1 блоки Risk Narrative / Explainable KPI / Recommended Actions;
- UEBA на live-контуре возвращает
criticalscore; TASK_015 классифицировал его какNeeds Investigation, а не как подтвержденный инцидент ИБ.
TASK_014 remediation update:
- deployment/version drift закрыт controlled deploy актуального release binary;
- live
/healthz,/readyz,/version,/metricsтеперь отвечают200; - request id / correlation id headers возвращаются;
- live Explainable KPI, Risk Narrative и Executive Action Center endpoints
отвечают
200; - live production hardening smoke прошел;
- live browser conformance smoke прошел;
- live portal tabs smoke прошел.
Вывод: контур можно использовать для контролируемого внутреннего pilot review и подготовки ограниченного пилота. Перед расширением на 10-50 пользователей остается проверить agent coverage, уточнить missing application data и закрепить порядок операционной поддержки.
Scope
Проверялось:
- runtime health;
- gateway/portal topology;
- portal tabs and role views;
- Workforce KPI и related report structure;
- Explainable KPI availability;
- UEBA;
- Risk Narrative availability;
- Executive Action Center availability;
- agent/data flow;
- performance snapshot;
- data hygiene.
Не проверялось:
- destructive recovery;
- restart/redeploy;
- изменение правил scoring;
- изменение collectors;
- production rollout новой версии;
- raw evidence review с персональными данными.
Environment
Обезличенно:
- пользователей: несколько;
- контур: working internal pilot;
- данные: реальные, но в документе не раскрываются;
- gateway: отдельный reverse-proxy host с внешней авторизацией;
- portal runtime: локальный сервис на gateway host;
- ActivityWatch/worktime: отдельный AW-rus server;
- Windows runtime: RDP host с текущим агентским контуром.
Runtime Health
Проверено:
| Поверхность | Результат | Комментарий |
|---|---|---|
Gateway /healthz |
200 |
Nginx/gateway-level health отвечает |
Gateway /portal/ |
401 снаружи |
Внешний доступ закрыт авторизацией |
Portal local /portal/ |
200 |
UI доступен на gateway host |
Portal local /portal/api/health |
200 |
API health доступен |
Portal local /healthz |
200 |
Production-hardening endpoint подтвержден после TASK_014 |
Portal local /readyz |
200 |
Production-hardening endpoint подтвержден после TASK_014 |
Portal local /version |
200 |
Production-hardening endpoint подтвержден после TASK_014 |
Portal local /metrics |
200 |
Prometheus text metrics подтверждены после TASK_014 |
ActivityWatch /api/0/settings |
200 |
AW API отвечает |
Request/correlation headers после TASK_014:
X-Request-Id: возвращается live portal API;X-Correlation-Id: возвращается live portal API.
Metrics:
- Prometheus metrics format на фактическом portal runtime подтвержден через
/metrics.
Portal Validation
Проверено через tunnel к фактическому gateway-local portal port. Screenshots создавались только во временном каталоге вне репозитория и не коммитились.
Результат scripts/browser-conformance-smoke.mjs на live-контуре после
TASK_014:
| View | Результат | Комментарий |
|---|---|---|
| Executive | OK | KPI, Explainable KPI, Risk Narrative и Recommended Actions отображаются |
| Workforce | OK | KPI, подразделения, тренды и explainability отображаются |
| Security | OK | Security actions, events, correlation и candidates отображаются |
| Forensics | OK | Расследования, timeline, материалы и аудит отображаются |
Результат scripts/detmir-portal-tabs-smoke.mjs на live-контуре после TASK_014:
- базовые tabs открываются;
- loading status доходит до ready;
- role switcher есть;
- Security events доступны;
- manager/security/forensics/admin view checks проходят;
- server role gates проходят;
- Executive dashboard layer и expected management block order проходят.
KPI Validation
/portal/api/reports?role=executive возвращает валидный JSON и содержит:
kpis: массив агрегированных KPI;workforce: объект сdepartment_comparison,owner_comparison,trend,trend_status,insights;business_risk;risk_heatmap;security_events_summary.
Обезличенные счетчики live response:
- KPI entries:
13; - department comparison entries:
1; - owner comparison entries:
3; - business risk entries:
2; - risk heatmap entries:
7.
Оценка:
- базовый Workforce/Business Risk слой на live-контуре присутствует;
- KPI выглядит как рабочий агрегированный отчет, но текущий UI/API не соответствует Demo Freeze v1 explainability контракту;
- перед расширением пилота нужно подтвердить свежесть источников по каждому пользователю и роль ожидаемых подразделений.
Explainable KPI Validation
Live endpoint после TASK_014:
/portal/api/workforce/kpi/explain -> 200
Вывод:
- Explainable KPI развернут на рабочем контуре;
- live UI показывает ожидаемый блок
Почему такой индекс активности?; - прежний
404был следствием устаревшего deployed binary.
UEBA Validation
Live endpoint:
/portal/api/ueba -> 200
Обезличенная сводка:
- response
ok=true; - severity:
critical; - status:
FAIL; - score:
100; - reason codes: несколько;
- score components: несколько.
Оценка после TASK_015:
- UEBA endpoint работает;
- score
criticalявляется фактическим rule-based результатом текущих сигналов; - классификация:
Needs Investigation; - security interpretation:
Operational Risk confirmed; Security Risk unknown; - executive readiness:
Insufficient Confidence; - основной вклад дают Workforce/baseline/history signals, а не DLP, network, time или application anomaly.
Risk Narrative Validation
Live endpoint после TASK_014:
/portal/api/risk/narrative -> 200
Вывод:
- Risk Narrative развернут на рабочем контуре;
- Executive UI block соответствует Demo Freeze v1 ожиданиям;
- Risk Narrative можно показывать как deployed capability, сохраняя честное ограничение: это rule-based объяснение, не ML-прогноз.
Executive Action Center Validation
Live endpoint после TASK_014:
/portal/api/actions -> 200
Вывод:
- Executive Action Center развернут на рабочем контуре;
- live runtime отдает отдельный actions endpoint;
- рекомендации можно показывать как deployed rule-based guidance, без claims об автоматическом remediation.
Agent/Data Flow Validation
AW-rus server:
- ActivityWatch server active;
- worktime API service active;
- failed systemd units:
0; - ActivityWatch API buckets endpoint отвечает
200; - buckets count:
27; - latest bucket timestamp близок к моменту проверки;
- oldest bucket timestamp старый, что нормально для исторических/event buckets, но требует отдельной интерпретации freshness по bucket type.
Windows/RDP runtime:
- текущий
awatch-agent-rsprocess активен; - collector guard process активен;
- watcher/window/telemetry processes активны;
- scheduled tasks для ActivityWatch/AWatch runtime находятся в состоянии
ReadyилиRunning.
Фактические роли:
legacy/current runtime: awatch-agent-rs и существующие ActivityWatch watchers
new baseline core: adk-rust/crates/awatch-agent, покрыт тестами, но не подтвержден как основной live runtime
Backlog/dead-letter:
- явный dead-letter count на AW server:
0; - known spool directories на AW server не обнаружены в проверенных путях;
- Windows-side spool/backlog требует отдельной безопасной проверки без вывода путей и payload.
Performance Snapshot
Обезличенная сводка:
| API | Status | Время ответа |
|---|---|---|
/portal/api/health |
200 |
< 1 ms на gateway-local check |
/portal/api/reports?role=executive |
200 |
первый observed run около 9 s, warm-cache run < 10 ms |
/portal/api/reports?role=manager |
200 |
< 10 ms на warm-cache run |
/portal/api/reports?role=security |
200 |
< 10 ms на warm-cache run |
/portal/api/reports?role=forensics |
200 |
< 10 ms на warm-cache run |
Логи:
- recent portal log scan за окно проверки не показал
500, panic или явных timeout в sanitized summary; - ActivityWatch/worktime recent error scan не показал явных ошибок в sanitized summary.
Ограничение:
- это snapshot, не load test и не sizing report.
Noise / False Positive Findings
Потенциальный шум:
- UEBA severity
critical/ score100после TASK_015 классифицирован какNeeds Investigation: высокий score выглядит операционно значимым, но не доказывает ИБ-инцидент; - stale исторические buckets могут искажать общее восприятие freshness, если не разделять active, inactive и event-driven bucket types;
- live Executive headline/runtime naming все еще может содержать старую внутреннюю терминологию, что конфликтует с public naming hygiene.
Не исправлялось в этой задаче:
- scoring rules;
- UEBA thresholds;
- report content logic;
- deployed binary/runtime.
Documentation Mismatches
Расхождения, найденные TASK_013, закрыты TASK_014:
- Production-hardening endpoints
/healthz,/readyz,/version,/metricsтеперь доступны на фактическом portal port. - Standalone endpoints
/api/workforce/kpi/explain,/api/risk/narrative,/api/actionsтеперь доступны на live runtime. - Visual smoke текущей freeze-ветки проходит Executive, Workforce, Security и Forensics views.
- Live runtime обновлен controlled deploy актуального release binary.
Security / Privacy Notes
Соблюдено:
- raw logs не коммитились;
- raw JSON payload не коммитился;
- screenshots с реальными данными не коммитились;
- реальные IP/hostname/usernames/ФИО/подразделения в этот документ не внесены;
- deploy выполнялся controlled способом с backup старого binary и rollback path;
- destructive data operations не выполнялись;
- collectors, scoring rules и источники данных не менялись.
Gaps
Критично перед расширением пилота:
- Проверить agent coverage и missing application data, которые могли усилить
UEBA
critical. - Назначить операционного владельца live smoke, deploy parity и rollback.
- Зафиксировать регламент: после каждого deploy проверять binary/version, endpoint matrix и live smoke.
Желательно до пилотного расширения:
- Добавить отдельный pilot-feedback контур для замечаний руководителя, ИБ, эксплуатации и расследователей.
- Разделить freshness report по bucket types: active, inactive, event-driven, historical.
- Проверить Windows-side spool/backlog безопасной командой без раскрытия путей и payload.
Можно перенести после первого ограниченного пилота:
- Тонкая настройка UEBA thresholds.
- Расширение Action Center rules.
- Улучшение dashboard wording по результатам реальной обратной связи.
Recommended Next Tasks
Не открывать feature roadmap. Следующие задачи должны быть pilot-feedback / operations oriented:
docs/pilot-feedback/BUGS.md- зафиксировать deployment/version drift как bug;docs/pilot-feedback/FEATURE_REQUESTS.md- собирать только запросы от реальных ролей;docs/pilot-feedback/LESSONS_LEARNED.md- фиксировать, что было непонятно на показе;- отдельная operator task: сверить deployed portal binary/commit с freeze branch;
- отдельная operator task: повторить live smoke после controlled deploy.
Explicit Non-Goals
В рамках TASK_013/TASK_014 не выполнялись:
- новые API;
- новый UI;
- новые collectors;
- ML/LLM;
- DLP/SIEM/EDR claims;
- изменение scoring logic;
- изменение collectors или источников данных;
- выгрузка персональных данных;
- сохранение real screenshots в git.
Conclusion
Рабочий внутренний контур AWatch-rus существует и собирает реальные данные. Portal, ActivityWatch, Security events, UEBA endpoint, Forensics и базовые role views частично подтверждены.
После TASK_014 live runtime соответствует Demo Freeze v1 по production-hardening endpoints, request/correlation headers, Explainable KPI, Risk Narrative, Executive Action Center и основным smoke-проверкам. Текущий статус:
ready for controlled internal pilot review;
ready for limited pilot preparation after agent coverage review and operations
ownership assignment.