Files
AWatch-rus/docs/roadmap/TASK_004_RISK_NARRATIVE.md
T

9.8 KiB
Raw Blame History

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.

Что реализовать

  1. 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-прогнозом" ] }

  1. API endpoint

Добавить endpoint:

GET /api/risk/narrative

Поддержать параметры, если они уже есть в текущей архитектуре:

  • date;
  • department;
  • role;
  • module.

Не добавлять employee-level детализацию, если нет готового безопасного контракта.

  1. 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;
  • все причины должны быть объяснимыми.
  1. UI в Executive Portal

Добавить блок:

Риск-нарратив

Показать:

  • уровень риска;
  • risk score;
  • краткое резюме;
  • почему система так считает;
  • evidence;
  • recommended actions;
  • limitations.

Интерфейс должен быть управленческим, не техническим.

  1. UI в Security Portal

Добавить security-oriented view:

ИБ-интерпретация риска

Показать:

  • security evidence;
  • UEBA-related reasons;
  • incident candidates;
  • correlation indicators;
  • что нужно проверить ИБ.

Не смешивать это с HR-оценкой сотрудников.

  1. Markdown report

Обновить markdown report.

Добавить раздел:

Риск-нарратив

Включить:

  • risk level;
  • risk score;
  • summary;
  • why;
  • evidence;
  • recommended actions;
  • limitations.
  1. OpenAPI / TypeScript contracts

Обновить:

  • OpenAPI spec;
  • TypeScript contracts;

если в проекте они уже поддерживаются.

  1. 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.
  1. 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 должен содержать

  1. Краткое описание изменений.
  2. Список измененных файлов.
  3. Новый endpoint.
  4. Risk scoring rules.
  5. UI-блоки.
  6. Обновления report/OpenAPI/TypeScript.
  7. Добавленные тесты.
  8. Результаты fmt/clippy/test/build/smoke.
  9. Известные ограничения.

Выполнение

Статус: выполнено для 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_only limitation;
  • 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_only limitation.

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.