Files
AWatch-rus/docs/DETMIR_PRODUCTION_VALIDATION_RU.md
T

18 KiB
Raw Blame History

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-контуре возвращает critical score; 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-rs process активен;
  • 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 / score 100 после 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:

  1. Production-hardening endpoints /healthz, /readyz, /version, /metrics теперь доступны на фактическом portal port.
  2. Standalone endpoints /api/workforce/kpi/explain, /api/risk/narrative, /api/actions теперь доступны на live runtime.
  3. Visual smoke текущей freeze-ветки проходит Executive, Workforce, Security и Forensics views.
  4. 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

Критично перед расширением пилота:

  1. Проверить agent coverage и missing application data, которые могли усилить UEBA critical.
  2. Назначить операционного владельца live smoke, deploy parity и rollback.
  3. Зафиксировать регламент: после каждого deploy проверять binary/version, endpoint matrix и live smoke.

Желательно до пилотного расширения:

  1. Добавить отдельный pilot-feedback контур для замечаний руководителя, ИБ, эксплуатации и расследователей.
  2. Разделить freshness report по bucket types: active, inactive, event-driven, historical.
  3. Проверить Windows-side spool/backlog безопасной командой без раскрытия путей и payload.

Можно перенести после первого ограниченного пилота:

  1. Тонкая настройка UEBA thresholds.
  2. Расширение Action Center rules.
  3. Улучшение dashboard wording по результатам реальной обратной связи.

Не открывать 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.