4.9 KiB
4.9 KiB
Боевая проверка AWatch-rus Portal, 2026-06-03
Документ фиксирует end-to-end проверку портала AWatch-rus в production-контуре без публикации live IP, доменов, имен хостов и путей с персональными данными.
Область проверки
- gateway entrypoint:
https://<PUBLIC_GATEWAY_FQDN>/portal/; - локальный backend портала на
<GATEWAY_HOST>; - evidence/readiness API на
<AW_SERVER_HOST>; detmir-check,detmir-auto,aw-rus-healthd;- вкладки портала: оператор, руководитель, владелец, инциденты ИБ, отчеты;
- API: health, summary, operator, manager, owner, incidents, reports, workforce policy explain, readiness bundle/verify, DLP evidence.
Найденные проблемы
aw-rus-healthdзапускался с public-safe placeholder значениями Windows target из публичных group vars. В результате healthd проверял не production host/buckets и давал ложный FAIL.detmir-checkсчитал AFK bucket строго fresh даже при отсутствии активной интерактивной сессии. Это создавало ложный FAIL дляdetmir-autoи портала.detmir-autoиdetmir-portalне имели единого приватного runtime env дляdetmir-check.detmir-portalобрабатывал HTTP-запросы последовательно. Параллельные fetch из браузера могли блокироваться тяжелыми snapshot-route.
Исправления
- Production runtime на AW-сервере восстановлен из приватного inventory/runtime values; публичные placeholders не записывались в Git.
- В
deploy_aw_server.ymlдобавлена защита: playbook сохраняет уже рабочие runtime значения monitored Windows target и не принимает TEST-NET/example значения для production healthd. - В
detmir-checkдобавлен режимinteractive_freshдля AFK/DLP heartbeat: при активной свежей worktime-сессии bucket обязан быть fresh; при отсутствии активной интерактивной сессии stale/missing bucket классифицируется какINACTIVEи не валит контур. - В
detmir-checkдобавленDETMIR_RDP_HOST/--rdp-host, чтобы TCP checks не зависели от public placeholder defaults. - На Proxmox создан приватный
/etc/detmir/detmir-check.env; systemd units читают его черезEnvironmentFile. detmir-portalпереведен на concurrent request handling и короткий TTL-cache snapshot, чтобы несколько одновременных UI/API-запросов использовали один общий снимок состояния.
Результаты проверки
aw-rus-healthd:ok=14,warn=0,fail=0.detmir-check:rc=0,bucket_stale=0,bucket_dead=0,service_failures=0.detmir-auto-rust --no-heal:severity=OK,needs_heal=false, DLPok=22,warn=0,fail=0.detmir-auto.service:Result=success,ExecMainStatus=0.- Proxmox failed units:
0. - AW server failed units:
0. - Authenticated gateway smoke:
/portal/->200;/portal/app.js->200;/portal/api/health->200;/portal/api/summary->200;/portal/api/operator->200;/portal/api/reports->200;/portal/api/readiness/bundle->200;/portal/api/readiness/verify->200;/portal/api/dlp/evidence->200.
- Parallel backend API smoke: all checked endpoints returned
200; heavy snapshot endpoints completed from shared cache in about one snapshot window. - Playwright browser smoke through
<PUBLIC_GATEWAY_FQDN>:- title:
AWatch-rus Portal; - JavaScript/page errors: none;
- all checked
/portal/api/*endpoints returned200; - tabs opened: руководитель, инциденты ИБ, отчеты;
- report UI rendered
Markdown для отчетаandПечать / PDF; - screenshot saved as runtime artifact outside the repository.
- title:
Ожидаемое поведение
- Unauthenticated
/portal/*requests return401; this is normal gateway protection. - Direct local portal API may expose only local evidence/readiness placeholders. Production UI must access readiness/evidence through gateway routes, where nginx proxies these paths to the AW evidence API.
- Public repository files must keep placeholders. Live endpoint values belong only to private inventory, systemd env files, and runtime state.