9.8 KiB
docs/roadmap/TASK_004_RISK_NARRATIVE.md
Рекомендуемые параметры
Mode: xhigh Reasoning: maximum Task type: product feature / executive risk UX / reporting Quality bar: production-ready Breaking changes: forbidden Architecture changes: minimal Simplifications: forbidden Security posture: no sensitive data exposure
Required checks:
cargo fmt --all --check cargo clippy --all-targets --all-features -- -D warnings cargo test --all cargo build --release AWATCH_PORTAL_SMOKE_URL=http://127.0.0.1:8720 node scripts/awatch-production-hardening-smoke.mjs
Задача
Добавить Risk Narrative слой для AWatch-rus.
Цель
Связать уже существующие данные:
- Workforce KPI;
- Explainable KPI;
- UEBA Score;
- Coverage;
- Risk Heatmap;
- Security Correlation;
- Incident Candidates;
- pfSense contract status;
в понятный управленческий вывод:
Что происходит? Насколько это рискованно? Почему система так считает? Что делать дальше?
Контекст
AWatch-rus позиционируется как Workforce-first система с отдельными контурами:
- Executive;
- Workforce;
- Security;
- Forensics;
- Admin.
Нужно не добавлять новую SIEM/DLP/ML-систему, а собрать уже имеющиеся сигналы в объяснимый risk narrative.
Что реализовать
- Risk Narrative model
Добавить модель:
{ "risk_level": "medium", "risk_score": 62, "title": "Умеренный рост операционного риска", "summary": "Активность подразделения снизилась при росте удаленных сессий и частичных пробелах покрытия.", "why": [ "Индекс активности ниже среднего по подразделениям", "UEBA score повышен до high", "Покрытие агентов ниже целевого уровня", "Есть кандидаты на инциденты" ], "evidence": [ { "source": "workforce_kpi", "label": "Индекс активности", "value": "74%", "severity": "medium" }, { "source": "ueba", "label": "UEBA score", "value": "high", "severity": "high" } ], "recommended_actions": [ "Проверить подразделения с низким покрытием данных", "Проверить рост удаленных сессий", "Передать security-события в контур ИБ для анализа" ], "limitations": [ "pfSense находится в contract_only режиме", "Risk Narrative не является ML-прогнозом" ] }
- API endpoint
Добавить endpoint:
GET /api/risk/narrative
Поддержать параметры, если они уже есть в текущей архитектуре:
- date;
- department;
- role;
- module.
Не добавлять employee-level детализацию, если нет готового безопасного контракта.
- Rule-based risk scoring
Реализовать детерминированный rule-based scoring.
Пример уровней:
0-24 low 25-49 guarded 50-74 medium 75-89 high 90-100 critical
Сигналы для расчета:
- low Workforce KPI;
- low KPI confidence;
- low agent coverage;
- increased UEBA severity;
- incident candidates count;
- high security correlation;
- missing data;
- afterhours/remote activity;
- pfsense contract_only limitation.
Важно:
- не использовать ML;
- не использовать LLM;
- не использовать predictive scoring;
- все причины должны быть объяснимыми.
- UI в Executive Portal
Добавить блок:
Риск-нарратив
Показать:
- уровень риска;
- risk score;
- краткое резюме;
- почему система так считает;
- evidence;
- recommended actions;
- limitations.
Интерфейс должен быть управленческим, не техническим.
- UI в Security Portal
Добавить security-oriented view:
ИБ-интерпретация риска
Показать:
- security evidence;
- UEBA-related reasons;
- incident candidates;
- correlation indicators;
- что нужно проверить ИБ.
Не смешивать это с HR-оценкой сотрудников.
- Markdown report
Обновить markdown report.
Добавить раздел:
Риск-нарратив
Включить:
- risk level;
- risk score;
- summary;
- why;
- evidence;
- recommended actions;
- limitations.
- OpenAPI / TypeScript contracts
Обновить:
- OpenAPI spec;
- TypeScript contracts;
если в проекте они уже поддерживаются.
- Tests
Добавить тесты:
- "/api/risk/narrative" returns valid JSON;
- low-risk scenario;
- medium-risk scenario;
- high-risk scenario;
- limitations include contract_only where relevant;
- no ML/LLM claims;
- role visibility не раскрывает лишнее;
- markdown report contains risk narrative section;
- existing role gates not broken.
- Documentation
Добавить:
docs/RISK_NARRATIVE_RU.md
Описать:
- что такое Risk Narrative;
- какие сигналы используются;
- как считается risk level;
- что означает evidence;
- что означает limitations;
- почему это не ML/LLM;
- почему это не SIEM и не DLP;
- как это показывать заказчику.
Запрещено
Не делать:
- ML;
- LLM;
- predictive analytics;
- полноценную SIEM;
- полноценную DLP;
- employee punishment scoring;
- новую БД;
- React;
- Tauri;
- Dioxus;
- SaaS-зависимости;
- ложные claims о pfSense ingestion.
Критерии приемки
Задача выполнена, если:
- добавлен "/api/risk/narrative";
- добавлена rule-based модель risk narrative;
- Executive UI показывает управленческий риск-нарратив;
- Security UI показывает ИБ-интерпретацию;
- markdown report обновлен;
- OpenAPI/TypeScript обновлены при необходимости;
- документация добавлена;
- тесты проходят;
- smoke проходит;
- существующие контракты не сломаны.
Финальный отчет Codex должен содержать
- Краткое описание изменений.
- Список измененных файлов.
- Новый endpoint.
- Risk scoring rules.
- UI-блоки.
- Обновления report/OpenAPI/TypeScript.
- Добавленные тесты.
- Результаты fmt/clippy/test/build/smoke.
- Известные ограничения.
Выполнение
Статус: выполнено для Pilot v1.
Краткое описание:
- добавлен rule-based Risk Narrative layer;
- добавлен endpoint
GET /api/risk/narrative; - risk score связывает Workforce KPI, Explainable KPI, UEBA, coverage,
security correlation, incident candidates и pfSense
contract_onlylimitation; - Executive UI показывает блок
Риск-нарратив; - Security UI проверяет ИБ-релевантную связь рисков и активности;
- Markdown-отчет содержит раздел
## Риск-нарратив; - OpenAPI и TypeScript contracts обновлены;
- создана отдельная документация
docs/RISK_NARRATIVE_RU.md.
Ключевые файлы:
adk-rust/crates/detmir-portal/src/risk_narrative.rs;adk-rust/crates/detmir-portal/src/static/app.js;adk-rust/crates/detmir-portal/src/contracts/openapi.json;adk-rust/crates/detmir-portal/src/contracts/typescript.d.ts;docs/RISK_NARRATIVE_RU.md;scripts/browser-conformance-smoke.mjs;scripts/detmir-portal-tabs-smoke.mjs.
Risk scoring rules:
0-24-low;25-49-guarded;50-74-medium;75-89-high;90-100-critical.
Сигналы:
- low Workforce KPI;
- low KPI confidence;
- low agent coverage;
- increased UEBA severity;
- incident candidates count;
- high security correlation;
- missing data;
- afterhours/remote activity;
- pfSense
contract_onlylimitation.
UI-блоки:
- Executive:
Риск-нарратив,Почему,Подтверждения,Дальше,Ограничения; - Security:
Связь рисков и активности,Требует проверки,Рекомендуемые действия ИБ; - Forensics: расследования, timeline, материалы расследования и аудит.
Проверки:
- unit tests для risk narrative scenarios;
- OpenAPI/TypeScript contract smoke;
node scripts/browser-conformance-smoke.mjs;node scripts/detmir-portal-tabs-smoke.mjs;cargo fmt --all --check;cargo clippy --all-targets --all-features -- -D warnings;cargo test --all;cargo build --release;git diff --check.
Известные ограничения:
- Risk Narrative не является ML/LLM/predictive analytics;
- Risk Narrative не подтверждает нарушение без ручной проверки;
- нет auto-remediation;
- pfSense не заявляется как ingestion/SIEM, пока это не пройдет отдельную приемку;
- live customer-stand validation остается отдельным шагом Demo Freeze v1.