Files
AWatch-rus/docs/PILOT_READINESS_AUDIT_RU.md
T

26 KiB
Raw Blame History

Аудит готовности AWatch-rus к пилотной эксплуатации

Дата аудита: 2026-06-05

Объект аудита: AWatch-rus, Rust workspace adk-rust, портал detmir-portal, агент awatch-agent-rs, документы коммерческого пилота и реестровой подготовки.

Ограничения аудита: архитектура не менялась, новые сущности не добавлялись, рефакторинг не выполнялся. Проверка выполнена как readiness-аудит к контролируемому пилоту, а не как сертификационная экспертиза СЗИ.

1. Итоговая оценка

Статус: ГОТОВ К КОНТРОЛИРУЕМОМУ ДЕМОНСТРАЦИОННОМУ ПИЛОТУ

Оценка готовности: 90 / 100

Вывод:

  • Для ограниченного пилота на заранее согласованном контуре критических технических блокеров в коде и портале не выявлено.
  • Полный демонстрационный путь "главный риск -> подразделение -> кандидат -> расследование -> пакет -> отчет" проверен на рабочем AWatch-rus-контуре; перед показом нужен только короткий преддемо-прогон на той же сети и экране.
  • Для широкого промышленного внедрения остаются обязательные доработки: формальный контур доступа/RBAC, backup/retention для файловых state, sizing/load-тесты, API/schema versioning и регламент эксплуатации агента.
  • Текущая продуктовая линия корректная: Workforce-first, операционный контроль, технический аудит, explainable risk и расследования без заявления продукта как сертифицированной DLP/SIEM/EDR/СЗИ.

2. Выполненные проверки

Проверка Результат
cargo test --workspace OK после локального переноса Cargo target на Linux-ФС: <LOCAL_CARGO_TARGET_DIR>. Старый target/ на fuseblk не подходит для libsqlite3-sys.
cargo clippy --all-targets --all-features OK
cargo build --release OK
node scripts/detmir-portal-tabs-smoke.mjs против <PORTAL_URL> OK; security events доступны через ClickHouse, переход к расследованию проверен, найдено 3 кнопки расследования.
GET /portal/api/reports на пустом state-dir OK, валидный JSON
Отсутствие expected_nodes.json OK, agent_coverage_sla.sla_status=UNKNOWN
Отсутствие incident_reviews.json, incident_review_audit.jsonl, cases.json OK, портал не падает
local_fallback в тестах агента/портала OK, не подтверждает KPI
collector_error в тестах портала OK, виден в explain/markdown

Portal smoke подтвердил:

  • вкладки Обзор, Сотрудники, Подразделения, Риски, Расследования, Сетевой периметр, Отчеты, Настройки открываются;
  • Risk Narrative выводится первым;
  • read-only настройки отображают период, рабочий день, русские названия порогов и источник правил;
  • видимые статусы портала переведены с OK/WARN/FAIL/UNKNOWN на русские формулировки; технические подсказки ClickHouse/env убраны из пользовательских экранов;
  • переход "кандидат -> расследование" проверен: smoke нашел 3 кнопки перехода и открыл карточку расследования;
  • события безопасности читаются порталом через ClickHouse: backend=clickhouse, status=ok, fallback_used=false;
  • первый расчет отчета прогревается при старте detmir-portal.service; после прогрева /api/reports отвечает за доли секунды;
  • фоновое обновление больше не переводит готовый экран в состояние "Загрузка данных"; 70-секундная браузерная проверка сохранила READY;
  • мобильная проверка 390px прошла: READY, глобального горизонтального overflow нет.

3. Архитектура

Сильные стороны:

  • Архитектура уже выстроена как цепочка Agent -> Telemetry -> Analytics -> Risk -> Investigation -> Report.
  • Rust-first runtime покрывает критичные серверные helpers, DLP/worktime paths, readiness, portal и собственный агент.
  • Rust-first здесь означает Rust-primary направление, а не полное удаление PowerShell: runtime/fallback/installer/repair scripts остаются документированным слоем отката, установки и поддержки.
  • pfSense/network perimeter оставлен optional/read-only слоем, что снижает риск пилота и соответствует текущим ограничениям проекта.
  • Python сохранен только для оговоренных исключений, не как ядро продукта.
  • Документы фиксируют корректное позиционирование: не СЗИ/DLP/SIEM, а платформа операционного контроля, технического аудита и Workforce/UEBA-аналитики.

Слабые стороны:

  • Архитектура пока сильно завязана на набор сервисов/утилит и файловых интеграций; единая production control-plane модель еще не оформлена.
  • Часть интеграций исторически выросла из ops-скриптов; runtime уже Rust-first, но границы владения между portal, AW, DLP, readiness и worktime требуют отдельной эксплуатационной схемы.
  • Для пилота это приемлемо, но для масштабирования потребуется явная схема сервисов, портов, state-файлов, владельцев данных и recovery flows.

Оценка: хорошо для пилота, нужно усилить для масштабного rollout.

4. API

Сильные стороны:

  • GET /api/reports устойчиво собирает executive dashboard, Risk Narrative, Trust KPI, agent quality, coverage SLA, business risk, heatmap, correlation, candidates, cases и markdown.
  • POST /api/telemetry защищен API key/Bearer token и не принимает дефолтный change-me.
  • Старые telemetry payload без diagnostics не ломают отчеты: качество данных становится UNKNOWN.
  • Incident Review и Cases не создают инциденты автоматически; workflow остается ручным и проверяемым.

Слабые стороны:

  • Контракты API уже доступны через /api/contracts, OpenAPI и TypeScript, но нужна формальная матрица версий и журнал совместимых/несовместимых изменений полей.
  • Нет отдельного lightweight endpoint для части управленческих данных; /api/reports остается большим агрегирующим endpoint.
  • Авторизация пользователя портала предполагается внешним gateway; сам портал не реализует полноценный RBAC.

Риск пилота: средний. Для контролируемого стенда допустимо, для заказчика нужен фиксированный API contract и контур доступа.

5. Portal UI

Сильные стороны:

  • Портал уже выглядит как управленческий контур: сначала связанная картина риска, затем сводка руководителя, доверие к данным, риски, кандидаты и дела.
  • UI smoke подтверждает работу всех основных вкладок.
  • Risk Narrative связывает Trust KPI, Agent Coverage, Business Risk, Heatmap, Security Correlation, Incident Candidates и Cases.
  • Для руководителя важные выводы формулируются человеко-понятно, а не только техническими метриками.

Слабые стороны:

  • Разделение ролей пока в основном интерфейсное и организационное; enforcement должен выполняться внешним auth/RBAC-контуром.
  • На пустых данных портал работает, но часть выводов ожидаемо имеет статус UNKNOWN/ATTENTION; перед демо нужен подготовленный demo/pilot dataset.
  • PDF/export-путь требует отдельной приемочной проверки в конкретном окружении.
  • Документы для заказчика все еще требуют языковой чистки от англоязычных терминов и технических сокращений.

Оценка: готов к демонстрации и пилоту при наличии auth gateway.

6. Rust Agent

Сильные стороны:

  • awatch-agent-rs имеет единую модель TelemetryRecord для Windows/Linux/FreeBSD.
  • Есть retry/backoff/spool: кратковременный обрыв связи не обязан приводить к потере данных.
  • Session quality уже поднят до уровня portal/report: wts_api, quser_utf16, quser_lossy, env_sessionname_fallback, local_fallback.
  • local_fallback явно считается диагностическим режимом и не подтверждает KPI.
  • Тесты покрывают дедупликацию сессий, local_fallback, spool, конфиг и сериализацию.

Слабые стороны:

  • Windows collector промышленного уровня еще требует расширения вокруг Event Log, ETW/WMI и устойчивой установки как service с централизованным rollout/rollback.
  • FreeBSD/pfSense mode находится на read-only foundation уровне и не должен продаваться как законченный firewall/NAC enforcement.
  • Нужен регламент мониторинга spool backlog, версии агента и качества данных по рабочим местам.

Оценка: достаточно для пилотного сбора worktime/RDP, не завершено как полный enterprise endpoint agent.

7. JSON-хранилища и state

Проверенные state-файлы:

  • telemetry.jsonl
  • data/incident_reviews.json
  • data/incident_review_audit.jsonl
  • data/cases.json
  • config/expected_nodes.json

Сильные стороны:

  • Отсутствующие файлы не ломают портал.
  • Audit trail для incident review append-only по смыслу и не удаляет историю.
  • Cases создаются только вручную из подтвержденных candidates.
  • Пустой state-dir возвращает валидный /api/reports.

Слабые стороны:

  • JSON/JSONL storage пока годится для пилота, но не для высокой конкуренции записи, больших объемов и долгого retention без ротации.
  • Нужны регламенты backup/restore, lock/atomic-write policy, ротация audit JSONL и контроль размера telemetry history.
  • Нужна миграционная политика state schema.

Риск пилота: средний. Для 1-2 подразделений допустимо, для широкого внедрения нужен storage hardening или перенос критичного state в SQLite/DB.

8. Документация

Сильные стороны:

  • Есть документы по архитектуре, порталу, security model, agent architecture, deployment, Business Risk, pilot checklist, release readiness и позиционированию.
  • Документация удерживает безопасную линию для реестра: прикладные ИБ/DLP-lite функции не заявляются как сертифицированная СЗИ.
  • Pilot checklist уже содержит доступ, scope, retention, Grafana, evidence, readiness и приемку.

Слабые стороны:

  • Нет единого “операторского пакета пилота” в одном маршруте: installation -> first telemetry -> validation -> demo -> acceptance.
  • API-контракты уже оформлены отдельными маршрутами, но документация должна явно ссылаться на OpenAPI/TypeScript и порядок проверки совместимости.
  • Не хватает sizing guide: число endpoints, объем telemetry/day, CPU/RAM/disk, рекомендуемый retention.

Оценка: хорошая база, нужно уплотнить до customer pilot pack.

9. Отказоустойчивость

Сильные стороны:

  • Агент имеет spool/retry.
  • Портал best-effort читает optional state и не падает при отсутствии telemetry/review/audit/cases/expected_nodes.
  • Readiness bundle, checksum/signature и Prometheus/Grafana readiness ideas уже заложены в документах и тестах.
  • Legacy fallback сохранен там, где это нужно для rollback.
  • Полное удаление PowerShell должно быть отдельной задачей после burn-in, canary test, rollback plan и acceptance gate.

Слабые стороны:

  • Нет HA для портала/AW server/хранилищ.
  • Нет формального RTO/RPO.
  • Нет нагрузочного теста на массовый прием telemetry и генерацию /api/reports.
  • Нет отдельной очереди с backpressure на серверной стороне telemetry ingest.

Оценка: достаточно для контролируемого пилота, не достаточно для SLA-продажи.

10. Обратная совместимость

Сильные стороны:

  • Старые telemetry без diagnostics работают.
  • agent_quality сохранен, новые explain/history/nodes поля добавлены без поломки старого API.
  • Отсутствие JSON state файлов обрабатывается.
  • PowerShell collector сохранен как legacy fallback, а не удален.
  • Pilot freeze не включает автоматическое удаление PowerShell scripts.

Слабые стороны:

  • Нет формальной матрицы совместимости версий agent/server/portal.
  • Нет version negotiation для telemetry payload.
  • Нужен changelog breaking/non-breaking API полей.

Оценка: практически совместимо, формально не закреплено.

11. Производительность

Сильные стороны:

  • Rust-gates проходят быстро, release build чистый.
  • Критичные runtime helpers переведены на Rust.
  • Portal snapshot cache снижает повторное выполнение внешних команд.

Слабые стороны:

  • /api/reports является агрегирующим endpoint и потенциально станет тяжелым при росте telemetry history, cases, candidates и audit JSONL.
  • JSONL scan без ограниченной индексации может стать узким местом.
  • Нет зафиксированного benchmark: endpoints, records/day, время формирования отчета, p95/p99 latency.

Оценка: достаточно для пилота, нужны load-тесты перед масштабированием.

12. Безопасность

Сильные стороны:

  • Публичная документация придерживается sanitized-подхода и не должна содержать live infrastructure values.
  • Evidence path защищен opaque ID, canonical path/root allowlist, magic validation, max-size limit, hash validation и Bearer upload token.
  • Telemetry ingest не принимает дефолтный ключ.
  • local_fallback не используется как доказательство активности.
  • pfSense mutation/enforcement не включен в текущий scope.

Слабые стороны:

  • Portal auth/RBAC должен быть гарантирован внешним gateway; без него портал не должен публиковаться наружу.
  • Нужны security headers, TLS termination profile, session/access log policy.
  • Нужно определить, кто может менять Incident Review/Cases и как проверяется reviewer.
  • JSON state и evidence нуждаются в отдельном backup/retention/access-control регламенте.

Оценка: нормально для закрытого пилота за auth gateway, нельзя открывать как самостоятельный публичный портал без gateway/RBAC.

13. Сильные стороны проекта

  • Сформирована понятная коммерческая ценность: Workforce-first + Security + Forensics.
  • Портал показывает не только метрики, а причинно-следственную картину риска.
  • Rust-first перенос выполнен широко: agent, portal, DLP/worktime/readiness, helpers и проверки.
  • Есть доказательная линия: agent quality, coverage SLA, candidates, incident review audit, investigation packs, cases.
  • Тесты закрывают ключевые регрессии: old telemetry, missing state, fallback, collector errors, coverage SLA, markdown order.
  • Публичное позиционирование стало безопаснее для реестра и коммерческой презентации.

14. Слабые стороны

  • Нет встроенного RBAC/auth в portal application layer.
  • JSON/JSONL state пока не hardened для больших объемов и параллельных записей.
  • API-контракты и OpenAPI уже есть, но нет формального versioning и матрицы совместимости agent/server/portal.
  • Нет load/sizing профиля.
  • Windows agent еще требует промышленного rollout guide и матрицы OS/locale.
  • FreeBSD/pfSense support нельзя считать законченным commercial module.
  • Не хватает единого customer pilot runbook с шагами “чистая VM -> агенты -> первый отчет -> приемка”.

15. Технический долг

  1. Описать и зафиксировать API schema/versioning.
  2. Ввести storage policy для JSON/JSONL: lock, atomic write, rotation, backup, restore, retention.
  3. Разделить heavy /api/reports на стабильные contract endpoints или документировать его как aggregate endpoint с p95 SLA.
  4. Добавить benchmark/load-test сценарий telemetry ingest и report generation.
  5. Оформить RBAC/auth gateway profile для ролей: владелец, руководитель, ИБ, оператор, администратор.
  6. Сделать matrix agent compatibility: OS, locale, session source, fallback, worktime accepted/not accepted.
  7. Подготовить anonymized pilot dataset и регламент преддемо-прогона.

16. Риски пилота

Риск Уровень Что сделать до пилота
Неверная трактовка proxy KPI как абсолютной “полезности” HIGH В договоре/демо явно писать: индекс активности - proxy, веса приложений согласуются по ролям.
Недостаточное покрытие агентов HIGH Заполнить expected_nodes.json, проверять coverage SLA каждый день.
Портал без auth gateway CRITICAL Не публиковать портал без TLS/auth/RBAC reverse proxy.
Рост JSONL/audit файлов MEDIUM Включить retention/backup/rotation policy.
Спорные candidates из-за плохого data quality MEDIUM Использовать agent quality, local_fallback не принимать в KPI, показывать Trust KPI.
Неописанная версия agent/server MEDIUM Зафиксировать версии в pilot acceptance и release manifest.
Evidence/privacy вопросы HIGH Согласовать локальный регламент, доступы, retention, уведомление сотрудников.

17. Блокеры внедрения

Для контролируемого пилота:

  • Критических блокеров не выявлено, если портал закрыт auth gateway и scope пилота ограничен заранее выбранными рабочими местами.

Для промышленного customer rollout:

  1. Нет формального production auth/RBAC profile для портала.
  2. Нет утвержденного backup/retention/access-control регламента для telemetry, cases, audit и evidence.
  3. Нет sizing/load-test отчета.
  4. Нет формального API versioning и матрицы совместимости agent/server/portal.
  5. Нет завершенного customer pilot runbook с ожидаемыми результатами проверки.

18. Рекомендации v0.3

Приоритет P0 до пилота:

  1. Подготовить закрытый auth gateway profile: TLS, Basic/OIDC/VPN, role mapping, access logs.
  2. Заполнить expected_nodes.json для пилотного scope и проверить coverage SLA.
  3. Описать pilot retention: telemetry, reports, incident review audit, cases, evidence.
  4. Зафиксировать версии agent/server/portal и команды проверки в pilot acceptance act.
  5. Перед показом выполнить преддемо-прогон: готовность данных, наличие кандидата, открытие расследования, скачивание пакета и итоговый отчет.

Приоритет P1 для v0.3:

  1. Зафиксировать API versioning, матрицу совместимости и порядок проверки OpenAPI/TypeScript contracts.
  2. Добавить storage hardening для JSON/JSONL state или перенести критичный state в SQLite.
  3. Сделать load test: 50/100/250 endpoints, records/day, /api/reports p95.
  4. Расширить agent deployment docs: Windows service, rollback, locale matrix, spool monitoring.
  5. Добавить единый PILOT_RUNBOOK_RU.md: установка, проверка, smoke, отчет, критерии приемки.

Приоритет P2 после пилота:

  1. Развивать per-user baseline и role-based workforce weights.
  2. Укрепить FreeBSD/pfSense read-only mode, но не включать enforcement без отдельного решения.
  3. Добавить SIEM/syslog/webhook export profile как integration pack.
  4. Добавить formal evidence chain policy, если продукт будет продаваться как Forensics-ready.

19. Финальный вывод

AWatch-rus уже можно показывать заказчику как MVP+/v0.3 платформу Workforce-first операционного контроля с explainable risk и ручным расследовательским workflow.

Для пилота система должна запускаться в закрытом контуре, с заранее согласованными рабочими местами, включенным agent coverage SLA, заполненным списком expected nodes и внешним auth gateway перед порталом.

Главная техническая граница зрелости сейчас не в UI и не в Rust-переносе, а в эксплуатационной дисциплине: доступы, retention, backup, API contract, sizing и регламент качества данных агента.