docs: add customer demo pack

This commit is contained in:
igor04091968
2026-06-07 16:59:50 +03:00
parent 4c39dd3fb0
commit 888dbc32ef
15 changed files with 741 additions and 6 deletions
+10
View File
@@ -82,8 +82,13 @@ Security Analytics + Forensics для ролей `executive`, `manager`, `securi
Демо-материалы:
- [сценарий Pilot v1 demo](docs/PILOT_DEMO_SCENARIO_RU.md);
- [сценарий руководителя](docs/demo/DEMO_SCENARIO_EXECUTIVE_RU.md);
- [сценарий ИБ](docs/demo/DEMO_SCENARIO_SECURITY_RU.md);
- [сценарий расследований](docs/demo/DEMO_SCENARIO_FORENSICS_RU.md);
- [demo seed data](docs/fixtures/pilot-v1-demo/demo-seed-data.json);
- [demo evidence pack](docs/fixtures/pilot-v1-demo/evidence-pack/);
- [пример итогового demo-отчета](docs/DEMO_REPORT_EXAMPLE_RU.md);
- [ценность пилота для заказчика](docs/PILOT_VALUE_PROPOSITION_RU.md);
- [преддемо-runbook](docs/DEMO_RUNBOOK_RU.md).
Границы показа:
@@ -195,6 +200,11 @@ collectors.
- [Пакет пилота для заказчика](docs/CUSTOMER_PILOT_PACK_RU.md)
- [Pilot v1.0](docs/PILOT_V1_RU.md)
- [Pilot v1 demo](docs/PILOT_DEMO_SCENARIO_RU.md)
- [Demo scenario: руководитель](docs/demo/DEMO_SCENARIO_EXECUTIVE_RU.md)
- [Demo scenario: ИБ](docs/demo/DEMO_SCENARIO_SECURITY_RU.md)
- [Demo scenario: расследования](docs/demo/DEMO_SCENARIO_FORENSICS_RU.md)
- [Demo report example](docs/DEMO_REPORT_EXAMPLE_RU.md)
- [Pilot value proposition](docs/PILOT_VALUE_PROPOSITION_RU.md)
- [Pilot v1.0 acceptance checklist](docs/PILOT_V1_ACCEPTANCE_CHECKLIST_RU.md)
- [Pilot v1.0 evidence](docs/PILOT_V1_EVIDENCE_RU.md)
- [Production readiness портала](docs/PRODUCTION_READINESS_RU.md)
+8
View File
@@ -11,6 +11,14 @@
2. Выполнить обязательный преддемо-прогрев.
3. Убедиться, что smoke-тест прошел успешно.
4. Открыть портал на `/portal`.
5. Держать рядом [PILOT_VALUE_PROPOSITION_RU.md](PILOT_VALUE_PROPOSITION_RU.md)
и [DEMO_REPORT_EXAMPLE_RU.md](DEMO_REPORT_EXAMPLE_RU.md).
Ролевые подсказки:
- [Руководитель](demo/DEMO_SCENARIO_EXECUTIVE_RU.md);
- [ИБ](demo/DEMO_SCENARIO_SECURITY_RU.md);
- [Расследования](demo/DEMO_SCENARIO_FORENSICS_RU.md).
## Показ
+89
View File
@@ -0,0 +1,89 @@
# Demo Report Example
Пример итогового Markdown-отчета для демонстрации AWatch-rus Pilot v1.
Источник: синтетический dataset
`docs/fixtures/pilot-v1-demo/demo-seed-data.json`.
Границы: отчет не содержит реальных сотрудников, IP-адресов, hostname, логинов,
доменов, подразделений заказчика или событий безопасности. Все идентификаторы
демонстрационные.
## Главный вывод
В демонстрационном периоде зафиксирован рост операционного риска: снижение
активности в одном подразделении совпало с ростом удаленных сессий, повышенным
UEBA Score v1 и неполным покрытием агентами.
Вывод требует ручной проверки ответственными ролями. Система не выполняет
автоматическую блокировку, не меняет политики и не выносит окончательный
вердикт.
## KPI
| Показатель | Значение | Интерпретация |
| --- | --- | --- |
| Workforce KPI | `64%` | Ниже целевого уровня, требуется управленческий разбор. |
| Confidence | `medium` | Данные пригодны для показа, но есть ограничение по покрытию. |
| Agent coverage | `67%` | Ниже целевого уровня; один агент stale, один отсутствует. |
| Remote sessions growth | `+200%` | Удаленные сессии выше демонстрационной базы. |
| UEBA Score v1 | `82 / critical` | Кандидат требует ручной проверки ИБ. |
## Explainable KPI
| Фактор | Вклад | Объяснение |
| --- | --- | --- |
| Полезная активность | `+28` | Рабочие приложения присутствуют в дневном периоде. |
| Простой | `-9` | Есть периоды низкой активности в рабочее время. |
| Удаленные сессии | `-11` | Число удаленных сессий выросло относительно демонстрационной базы. |
| Полнота данных | `-7` | Покрытие агентами ниже целевого уровня. |
Индекс активности не является автоматической оценкой сотрудника. Он показывает
управленческий сигнал, который нужно интерпретировать вместе с покрытием данных
и контекстом подразделения.
## Risk Narrative
Уровень риска: `high`.
Risk score: `78`.
Почему система так считает:
- Workforce KPI ниже целевого уровня;
- есть рост удаленных сессий;
- UEBA Score v1 повышен до `critical` на демонстрационном кандидате;
- покрытие агентами ниже целевого уровня;
- есть incident candidate для ручной проверки.
Ограничения:
- Risk Narrative является rule-based выводом;
- UEBA Score v1 не использует ML/LLM;
- pfSense readiness остается `contract_only`;
- demo dataset не является production ingestion.
## Recommended Actions
| Priority | Action | Owner role | Deadline | Reason codes |
| --- | --- | --- | --- | --- |
| `high` | Проверить подразделение с низким индексом активности | `manager` | `24h` | `LOW_WORKFORCE_KPI`, `HIGH_REMOTE_ACTIVITY` |
| `high` | Передать кандидата в контур ИБ | `security` | `24h` | `HIGH_UEBA`, `INCIDENT_CANDIDATE` |
| `high` | Проверить покрытие агентами | `admin` | `24h` | `LOW_COVERAGE` |
## Evidence
- Demo dataset:
`docs/fixtures/pilot-v1-demo/demo-seed-data.json`.
- Executive summary:
`docs/fixtures/pilot-v1-demo/evidence-pack/executive-summary.md`.
- Security technical summary:
`docs/fixtures/pilot-v1-demo/evidence-pack/security-technical-summary.md`.
- Investigation report:
`docs/fixtures/pilot-v1-demo/evidence-pack/investigation-report.md`.
## Итог
AWatch-rus показывает руководителю главный риск, ИБ - объяснимого кандидата на
проверку, расследованиям - evidence package, эксплуатации - проблему покрытия
данных. Все выводы требуют ручного подтверждения ответственными ролями.
+9 -1
View File
@@ -6,6 +6,12 @@
Полный ролевой сценарий Pilot v1 demo:
[PILOT_DEMO_SCENARIO_RU.md](PILOT_DEMO_SCENARIO_RU.md).
Ролевые сценарии demo-pack:
- [Руководитель](demo/DEMO_SCENARIO_EXECUTIVE_RU.md);
- [ИБ](demo/DEMO_SCENARIO_SECURITY_RU.md);
- [Расследования](demo/DEMO_SCENARIO_FORENSICS_RU.md).
## Перед началом
- Открыть портал на рабочем демонстрационном URL.
@@ -46,6 +52,7 @@
- Markdown-отчет формируется.
- Smoke-тест завершился с `ok=true`.
- `DEMO_RUNBOOK_RU.md` открыт рядом с демонстрационным окном.
- `DEMO_REPORT_EXAMPLE_RU.md` открыт как резервный пример итогового отчета.
## Сценарий показа
@@ -68,7 +75,8 @@
- Портал открывается без ошибок.
- Статус загрузки: `Данные готовы`.
- События безопасности доступны.
- События безопасности доступны или fallback-статус понятен.
- Есть кандидат на проверку.
- Расследование открывается из карточки риска.
- Markdown-отчет формируется.
- Открывается пример отчета [DEMO_REPORT_EXAMPLE_RU.md](DEMO_REPORT_EXAMPLE_RU.md).
+7 -1
View File
@@ -174,11 +174,17 @@ SIEM, классическом DLP, ML/LLM или готовом pfSense ingesti
Демонстрационные материалы:
- [demo-сценарий руководителя](demo/DEMO_SCENARIO_EXECUTIVE_RU.md);
- [demo-сценарий ИБ](demo/DEMO_SCENARIO_SECURITY_RU.md);
- [demo-сценарий расследований](demo/DEMO_SCENARIO_FORENSICS_RU.md);
- [приемочный checklist demo-pack](demo/DEMO_PACK_ACCEPTANCE_CHECKLIST_RU.md);
- [demo-seed-data.json](fixtures/pilot-v1-demo/demo-seed-data.json);
- [executive-summary.md](fixtures/pilot-v1-demo/evidence-pack/executive-summary.md);
- [security-technical-summary.md](fixtures/pilot-v1-demo/evidence-pack/security-technical-summary.md);
- [investigation-report.md](fixtures/pilot-v1-demo/evidence-pack/investigation-report.md);
- [investigation-contract.json](fixtures/pilot-v1-demo/evidence-pack/investigation-contract.json).
- [investigation-contract.json](fixtures/pilot-v1-demo/evidence-pack/investigation-contract.json);
- [пример итогового отчета](DEMO_REPORT_EXAMPLE_RU.md);
- [ценность пилота для заказчика](PILOT_VALUE_PROPOSITION_RU.md).
Все материалы demo-only. Для сетевых примеров используются только RFC 5737
адреса `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24`.
+13 -2
View File
@@ -19,6 +19,11 @@ contracts, UEBA Score v1 и pfSense readiness.
| pfSense | [PFSENSE_INTEGRATION_RU.md](PFSENSE_INTEGRATION_RU.md) | readiness=`contract_only`, без SIEM/ingestion claims |
| Demo сценарий | [CUSTOMER_DEMO_SCENARIO_RU.md](CUSTOMER_DEMO_SCENARIO_RU.md) | 10-минутный показ заказчику |
| Pilot v1 demo | [PILOT_DEMO_SCENARIO_RU.md](PILOT_DEMO_SCENARIO_RU.md) | воспроизводимый demo-pack по ролям |
| Demo Executive | [demo/DEMO_SCENARIO_EXECUTIVE_RU.md](demo/DEMO_SCENARIO_EXECUTIVE_RU.md) | сценарий руководителя |
| Demo Security | [demo/DEMO_SCENARIO_SECURITY_RU.md](demo/DEMO_SCENARIO_SECURITY_RU.md) | сценарий ИБ |
| Demo Forensics | [demo/DEMO_SCENARIO_FORENSICS_RU.md](demo/DEMO_SCENARIO_FORENSICS_RU.md) | сценарий расследований |
| Demo report | [DEMO_REPORT_EXAMPLE_RU.md](DEMO_REPORT_EXAMPLE_RU.md) | пример итогового Markdown-отчета |
| Pilot value | [PILOT_VALUE_PROPOSITION_RU.md](PILOT_VALUE_PROPOSITION_RU.md) | ценность пилота для заказчика |
| Преддемо | [DEMO_RUNBOOK_RU.md](DEMO_RUNBOOK_RU.md) | прогрев и порядок проверки перед показом |
| Gap analysis | [PILOT_GAP_ANALYSIS_RU.md](PILOT_GAP_ANALYSIS_RU.md) | известные риски и остаточные ограничения |
@@ -52,12 +57,18 @@ contracts, UEBA Score v1 и pfSense readiness.
- `docs/screenshots/05-investigation-pack.png`;
- `docs/screenshots/06-markdown-report.png`;
- `docs/screenshots/07-product-architecture.png`;
- `docs/fixtures/pfsense-demo-events.json`.
- `docs/fixtures/pfsense-demo-events.json`;
- `docs/fixtures/pilot-v1-demo/demo-seed-data.json`;
- `docs/fixtures/pilot-v1-demo/evidence-pack/executive-summary.md`;
- `docs/fixtures/pilot-v1-demo/evidence-pack/security-technical-summary.md`;
- `docs/fixtures/pilot-v1-demo/evidence-pack/investigation-report.md`;
- `docs/fixtures/pilot-v1-demo/evidence-pack/investigation-contract.json`.
- `docs/fixtures/pilot-v1-demo/evidence-pack/investigation-contract.json`;
- `docs/demo/DEMO_SCENARIO_EXECUTIVE_RU.md`;
- `docs/demo/DEMO_SCENARIO_SECURITY_RU.md`;
- `docs/demo/DEMO_SCENARIO_FORENSICS_RU.md`;
- `docs/demo/DEMO_PACK_ACCEPTANCE_CHECKLIST_RU.md`;
- `docs/DEMO_REPORT_EXAMPLE_RU.md`;
- `docs/PILOT_VALUE_PROPOSITION_RU.md`.
Требования:
+70
View File
@@ -0,0 +1,70 @@
# Pilot Value Proposition
Документ фиксирует ценность AWatch-rus для пилотного показа заказчику без
преувеличений и без заявления несуществующих интеграций.
## Проблема заказчика
У руководителя, ИБ и эксплуатации часто разные картины одной ситуации:
- руководителю нужен короткий управленческий вывод, а не технические события;
- ИБ нужен объяснимый сигнал для проверки, а не набор разрозненных логов;
- расследованиям нужен связанный пакет материалов;
- эксплуатации нужно понимать, достаточно ли свежие и полные данные;
- при неполном покрытии источников риск легко переоценить или недооценить.
## Что решает AWatch-rus
AWatch-rus объединяет уже собранные сигналы в три прикладных слоя:
- Workforce Analytics: активность, подразделения, тренды, нагрузка и
объяснимый KPI.
- Security Analytics: UEBA Score v1, risk severity, кандидаты на ручную
проверку и ограничения источников.
- Forensics: timeline, контекст `user / host / app / network event`, evidence
package и Markdown-отчет.
Пилот показывает не максимальный набор интеграций, а ценность связанного
управленческого и ИБ-контура на понятных данных.
## Выгоды для руководителя
- главный риск отображается первым;
- KPI объяснен через факторы и уровень доверия;
- видно подразделение или зона, требующая внимания;
- рекомендации показывают ответственного и срок;
- отчет можно использовать для обсуждения без сырых технических логов.
## Выгоды для ИБ
- UEBA Score v1 rule-based и объясним через reason codes;
- incident candidates отделены от подтвержденных инцидентов;
- Risk Narrative связывает активность, покрытие данных и security-сигналы;
- Security View не подменяет SIEM, но дает понятный слой первичной проверки;
- pfSense readiness честно обозначается как `contract_only`, если ingestion не
включен и не принят отдельно.
## Выгоды для расследований
- один кандидат связывается с контекстом, timeline и evidence package;
- отчет экспортируется в Markdown;
- demo-пакет показывает цепочку `событие -> контекст -> evidence -> отчет`;
- решение остается за ответственным сотрудником, а не за автоматикой.
## Выгоды для эксплуатации
- видны полнота и свежесть данных;
- низкое покрытие агентами влияет на confidence, а не скрывается;
- fallback/readiness статусы можно объяснить до показа заказчику;
- smoke-проверка отделена от бизнес-демонстрации.
## Ограничения пилота
- AWatch-rus не является сертифицированным SIEM, EDR или классической DLP.
- UEBA Score v1 и Risk Narrative являются rule-based, без ML/LLM.
- Action Center не выполняет auto-remediation.
- pfSense readiness является `contract_only`, если реальный ingestion отдельно
не включен и не прошел приемку.
- Planned/future providers не считаются реализованными collectors.
- Demo dataset не является production data и не должен использоваться для
выводов о реальных сотрудниках.
@@ -0,0 +1,49 @@
# Customer Demo Pack: Acceptance Checklist
Чеклист используется перед пилотным показом заказчику.
## Материалы
- [ ] Открывается `docs/DEMO_RUNBOOK_RU.md`.
- [ ] Открывается `docs/PILOT_DEMO_SCENARIO_RU.md`.
- [ ] Открывается сценарий руководителя:
`docs/demo/DEMO_SCENARIO_EXECUTIVE_RU.md`.
- [ ] Открывается сценарий ИБ:
`docs/demo/DEMO_SCENARIO_SECURITY_RU.md`.
- [ ] Открывается сценарий расследований:
`docs/demo/DEMO_SCENARIO_FORENSICS_RU.md`.
- [ ] Открывается пример отчета:
`docs/DEMO_REPORT_EXAMPLE_RU.md`.
- [ ] Открывается ценностное описание пилота:
`docs/PILOT_VALUE_PROPOSITION_RU.md`.
## Demo Dataset
- [ ] `docs/fixtures/pilot-v1-demo/demo-seed-data.json` является валидным JSON.
- [ ] Dataset содержит только синтетические идентификаторы.
- [ ] Dataset покрывает нормальную работу.
- [ ] Dataset покрывает снижение активности.
- [ ] Dataset покрывает рост удаленных сессий.
- [ ] Dataset покрывает повышенный UEBA.
- [ ] Dataset покрывает incident candidate.
- [ ] Dataset покрывает низкое покрытие агентами.
## Screenshots
- [ ] `docs/screenshots/01-executive-overview.png` существует и не пустой.
- [ ] `docs/screenshots/02-risk-heatmap.png` существует и не пустой.
- [ ] `docs/screenshots/03-security-view.png` существует и не пустой.
- [ ] `docs/screenshots/04-operations-view.png` существует и не пустой.
- [ ] `docs/screenshots/05-investigation-pack.png` существует и не пустой.
- [ ] `docs/screenshots/06-markdown-report.png` существует и не пустой.
- [ ] `docs/screenshots/07-product-architecture.png` существует и не пустой.
## Запреты
- [ ] В demo-pack нет реальных IP-адресов, hostname, логинов, ФИО и
подразделений заказчика.
- [ ] Planned/future не описаны как implemented.
- [ ] pfSense readiness описан как `contract_only`, если ingestion отдельно не
включен и не принят.
- [ ] AWatch-rus не заявляется как SIEM, EDR или классическая DLP.
- [ ] ML/LLM не заявлены и не используются.
+57
View File
@@ -0,0 +1,57 @@
# Demo Scenario: Руководитель
Цель: показать управленческую ценность AWatch-rus без технических логов и без
ИБ-детализации по умолчанию.
Данные: только `docs/fixtures/pilot-v1-demo/demo-seed-data.json` и
обезличенные скриншоты `docs/screenshots/`.
## Что показывать
- роль `Руководитель`;
- блок `Главный вывод`;
- Workforce KPI и объяснение индекса;
- Risk Narrative;
- `Рекомендуемые действия`;
- карту рисков подразделений;
- итоговый Markdown-отчет.
## Порядок показа
1. Открыть портал и выбрать роль `Руководитель`.
2. Показать, что главный вывод расположен первым.
3. Перейти к KPI: общий индекс активности и уровень доверия к нему.
4. Показать объяснение KPI: полезная активность, простой, удаленные сессии,
полнота данных.
5. Показать Risk Narrative: что происходит, почему это риск и чем подтверждено.
6. Показать `Рекомендуемые действия`: кому адресовано, срок, причина.
7. Показать карту рисков подразделений.
8. Открыть пример итогового отчета:
`docs/DEMO_REPORT_EXAMPLE_RU.md`.
## Какие выводы делать
- AWatch-rus помогает руководителю увидеть главный риск без чтения технических
событий.
- KPI объясним: видно, какие факторы подняли или снизили индекс.
- Risk Narrative связывает Workforce KPI, UEBA, полноту данных и кандидатов на
проверку в понятный управленческий вывод.
- Action Center не выполняет действия автоматически, а формирует ручные
рекомендации для ответственных ролей.
## Какие вопросы ожидать
| Вопрос заказчика | Ответ |
| --- | --- |
| Это оценка эффективности сотрудника? | Нет. Это аналитика активности и рисков, требующая управленческой интерпретации. |
| Почему KPI именно такой? | Через explainability-блок: факторы, вклад, покрытие данных и уровень доверия. |
| Можно ли доверять выводу при неполных данных? | Система показывает confidence и coverage; при низком покрытии вывод должен использоваться осторожно. |
| Система сама назначает виновного? | Нет. Она показывает риск и рекомендации для ручной проверки. |
| Это SIEM или DLP? | Нет. AWatch-rus позиционируется как Workforce Analytics + Security Analytics + Forensics. |
## Границы демонстрации
- Не показывать персональные данные.
- Не обещать автоматические кадровые решения.
- Не показывать planned/future integrations как реализованные.
- Не использовать demo identifiers как реальные сотрудники или хосты.
+55
View File
@@ -0,0 +1,55 @@
# Demo Scenario: Расследования
Цель: показать, как AWatch-rus собирает контекст проверки и Markdown-отчет по
кандидату без утверждения, что система автоматически доказывает нарушение.
Данные: только demo evidence pack:
`docs/fixtures/pilot-v1-demo/evidence-pack/`.
## Что показывать
- роль `Расследования`;
- событие-кандидат;
- контекст `user / host / app / network event`;
- timeline;
- evidence package;
- Markdown-отчет расследования.
## Порядок показа
1. Выбрать роль `Расследования`.
2. Открыть кандидата `sec-demo-004` или соответствующую карточку проверки.
3. Показать контекст: demo user, demo host, приложение и сетевой readiness
признак.
4. Показать timeline: активность, UEBA signal, network readiness, review step.
5. Открыть evidence package:
`docs/fixtures/pilot-v1-demo/evidence-pack/investigation-contract.json`.
6. Показать Markdown-отчет:
`docs/fixtures/pilot-v1-demo/evidence-pack/investigation-report.md`.
7. Завершить выводом: решение принимает человек, система фиксирует контекст и
материалы для проверки.
## Какие выводы делать
- Forensics View помогает собрать проверяемый пакет материалов.
- Timeline объясняет, почему кандидат попал в ручную проверку.
- Evidence package связывает события без публикации персональных данных.
- Markdown export пригоден для внутреннего разбора и передачи ответственному
сотруднику.
## Какие вопросы ожидать
| Вопрос заказчика | Ответ |
| --- | --- |
| Это юридическая экспертиза? | Нет. Это внутренний evidence package для ручного расследования. |
| Система доказывает нарушение? | Нет. Она показывает контекст и причины для проверки. |
| Где реальные ФИО и хосты? | В demo-pack их нет. Используются только synthetic identifiers. |
| Можно ли экспортировать отчет? | Да, в проекте есть Markdown-отчет и demo-пример отчета. |
| Сетевой признак означает реальный pfSense ingestion? | Нет. В demo-pack это readiness/contract-only пример. |
## Границы демонстрации
- Не показывать реальные evidence/screenshots.
- Не обещать процессуальную доказательную силу отчета.
- Не утверждать, что network readiness равен production ingestion.
- Не добавлять во время показа новые источники или collectors.
+56
View File
@@ -0,0 +1,56 @@
# Demo Scenario: ИБ
Цель: показать пользу AWatch-rus для ИБ как explainable security analytics
слоя без заявления продукта как SIEM, EDR или классической DLP.
Данные: только синтетический dataset
`docs/fixtures/pilot-v1-demo/demo-seed-data.json` и demo evidence pack.
## Что показывать
- роль `Безопасность`;
- UEBA Score v1;
- incident candidates;
- Risk Narrative;
- `Рекомендуемые действия ИБ`;
- security correlation, если она есть в текущем отчете;
- ограничения pfSense readiness как `contract_only`.
## Порядок показа
1. Выбрать роль `Безопасность`.
2. Показать UEBA Score v1: numeric score, severity и reason codes.
3. Показать кандидата на проверку `sec-demo-004`.
4. Объяснить, что severity является сигналом для ручной проверки, а не
автоматическим вердиктом.
5. Показать Risk Narrative: как Workforce KPI, UEBA, coverage и candidate
складываются в общий риск.
6. Показать `Рекомендуемые действия ИБ`: передать кандидата в ИБ, провести
проверку и зафиксировать решение.
7. При необходимости открыть demo evidence pack:
`docs/fixtures/pilot-v1-demo/evidence-pack/security-technical-summary.md`.
## Какие выводы делать
- ИБ получает объяснимую очередь проверки без ML/LLM.
- UEBA Score v1 rule-based: причины видны через reason codes.
- Кандидаты отделены от подтвержденных инцидентов.
- pfSense показан честно: contract/readiness layer, не production ingestion.
- Action Center помогает не потерять ручное действие и срок.
## Какие вопросы ожидать
| Вопрос заказчика | Ответ |
| --- | --- |
| Это SIEM-корреляция? | Нет. Это security analytics и readiness-контракты поверх существующих сигналов. |
| UEBA использует ML? | Нет. UEBA Score v1 rule-based, детерминированный и объяснимый. |
| Что значит incident candidate? | Это кандидат на ручную проверку, не подтвержденный инцидент. |
| pfSense уже собирается в production? | Нет. Для Pilot v1 pfSense readiness обозначен как `contract_only`, если ingestion отдельно не включен и не принят. |
| Можно ли автоматически блокировать пользователя? | Нет. Auto-remediation и блокировки не реализуются в этом demo-pack. |
## Границы демонстрации
- Не заявлять DLP/SIEM/EDR функциональность.
- Не обещать автоматическую блокировку, карантин или изменение политик.
- Не показывать реальные сетевые адреса; использовать только TEST-NET примеры.
- Не смешивать ИБ-экран с управленческим Workforce Dashboard.
+11 -1
View File
@@ -6,7 +6,8 @@ AWatch-rus Pilot v1.
Состав:
- `demo-seed-data.json` - демонстрационный набор сигналов Workforce, Security,
Forensics, UEBA и pfSense readiness;
Forensics, UEBA, remote-session growth, low agent coverage и pfSense
readiness;
- `evidence-pack/executive-summary.md` - краткий управленческий вывод;
- `evidence-pack/security-technical-summary.md` - техническая сводка для ИБ;
- `evidence-pack/investigation-report.md` - Markdown-отчет расследования;
@@ -23,3 +24,12 @@ AWatch-rus Pilot v1.
В demo fixtures запрещены реальные IP-адреса, hostname, логины, ФИО,
подразделения заказчика и реальные события безопасности.
Покрытые demo-сценарии:
- нормальная работа;
- снижение активности;
- рост удаленных сессий;
- повышенный UEBA;
- incident candidate;
- низкое покрытие агентами.
@@ -6,12 +6,56 @@
"real_personal_data": false,
"real_customer_hosts": false,
"real_customer_networks": false,
"real_domains": false,
"real_logins": false,
"personal_data": false,
"allowed_network_examples": [
"192.0.2.0/24",
"198.51.100.0/24",
"203.0.113.0/24"
]
},
"scenario_coverage": [
{
"scenario": "normal_work",
"covered_by": [
"dept-sales-demo",
"activity event normal_activity"
]
},
{
"scenario": "activity_drop",
"covered_by": [
"dept-warehouse-demo",
"activity event low_activity"
]
},
{
"scenario": "remote_session_growth",
"covered_by": [
"remote_session_summary",
"rdp-session activity events"
]
},
{
"scenario": "elevated_ueba",
"covered_by": [
"ueba_score_examples sec-demo-004"
]
},
{
"scenario": "incident_candidate",
"covered_by": [
"investigation case-demo-004"
]
},
{
"scenario": "low_agent_coverage",
"covered_by": [
"agent_coverage"
]
}
],
"departments": [
{
"department_id": "dept-sales-demo",
@@ -106,6 +150,14 @@
"kind": "low_activity",
"duration_minutes": 8
},
{
"timestamp": "2026-06-06T18:25:00Z",
"user_ref": "demo-user-003",
"host": "HOST-DEMO-03",
"app": "rdp-session",
"kind": "remote_session_activity",
"duration_minutes": 31
},
{
"timestamp": "2026-06-06T21:40:00Z",
"user_ref": "demo-user-005",
@@ -113,8 +165,23 @@
"app": "admin-tool-demo.exe",
"kind": "night_access_anomaly",
"duration_minutes": 24
},
{
"timestamp": "2026-06-06T21:42:00Z",
"user_ref": "demo-user-005",
"host": "HOST-DEMO-05",
"app": "rdp-session",
"kind": "remote_session_activity",
"duration_minutes": 27
}
],
"remote_session_summary": {
"baseline_sessions_7d_avg": 2,
"demo_period_sessions": 6,
"growth_percent": 200,
"risk_signal": "remote_session_growth",
"explanation": "В демонстрационном периоде число удаленных сессий выше базового уровня."
},
"security_events": [
{
"event_id": "sec-demo-001",
@@ -209,6 +276,115 @@
]
}
],
"agent_coverage": {
"expected_agents": 6,
"active_agents": 4,
"stale_agents": 1,
"missing_agents": 1,
"coverage_percent": 67,
"sla_status": "WARNING",
"demo_impact": "KPI требует осторожной интерпретации из-за неполного покрытия."
},
"workforce_kpi_example": {
"kpi_score": 64,
"confidence": "medium",
"coverage": {
"agent_coverage_percent": 67,
"data_freshness": "fresh",
"missing_sources": [
"HOST-DEMO-06"
]
},
"factors": [
{
"name": "productive_activity",
"label": "Полезная активность",
"impact": "+28",
"explanation": "Рабочие приложения присутствуют в дневном периоде."
},
{
"name": "idle_time",
"label": "Простой",
"impact": "-9",
"explanation": "Есть периоды низкой активности в рабочее время."
},
{
"name": "remote_session_activity",
"label": "Удаленные сессии",
"impact": "-11",
"explanation": "Удаленные сессии выросли относительно демонстрационной базы."
},
{
"name": "data_coverage",
"label": "Полнота данных",
"impact": "-7",
"explanation": "Покрытие агентами ниже целевого уровня."
}
]
},
"risk_narrative_example": {
"risk_level": "high",
"risk_score": 78,
"title": "Рост операционного риска требует ручной проверки",
"summary": "Снижение активности в одном подразделении совпало с ростом удаленных сессий, повышенным UEBA и неполным покрытием агентами.",
"why": [
"Workforce KPI ниже целевого уровня",
"Есть рост удаленных сессий",
"UEBA Score v1 повышен до critical на демонстрационном кандидате",
"Покрытие агентами ниже целевого уровня"
],
"limitations": [
"Risk Narrative является rule-based выводом",
"pfSense readiness находится в contract_only режиме",
"Данные демонстрационные и не являются production ingestion"
]
},
"recommended_actions": [
{
"priority": "high",
"title": "Проверить подразделение с низким индексом активности",
"summary": "Просадка активности требует управленческого разбора причины.",
"owner_role": "manager",
"recommended_deadline": "24h",
"reason_codes": [
"LOW_WORKFORCE_KPI",
"HIGH_REMOTE_ACTIVITY"
],
"evidence": [
"Workforce KPI demo score: 64%",
"Рост удаленных сессий: +200%"
]
},
{
"priority": "high",
"title": "Передать кандидата в контур ИБ",
"summary": "UEBA Score v1 повышен; требуется ручная проверка специалистом ИБ.",
"owner_role": "security",
"recommended_deadline": "24h",
"reason_codes": [
"HIGH_UEBA",
"INCIDENT_CANDIDATE"
],
"evidence": [
"sec-demo-004 severity critical",
"Связка activity/app/network readiness"
]
},
{
"priority": "high",
"title": "Проверить покрытие агентами",
"summary": "Неполное покрытие снижает доверие к KPI и должно быть проверено эксплуатацией.",
"owner_role": "admin",
"recommended_deadline": "24h",
"reason_codes": [
"LOW_COVERAGE"
],
"evidence": [
"Покрытие агентами: 67%",
"Один агент stale, один отсутствует"
]
}
],
"investigation": {
"investigation_id": "case-demo-004",
"candidate_id": "sec-demo-004",
+42 -1
View File
@@ -210,4 +210,45 @@ docs/PILOT_VALUE_PROPOSITION_RU.md
4. Demo screenshots.
5. Demo dataset.
6. Проверки.
7. Ограничения.
7. Ограничения.
## Выполнение
Статус: done.
Добавленные документы:
- `docs/demo/DEMO_SCENARIO_EXECUTIVE_RU.md`;
- `docs/demo/DEMO_SCENARIO_SECURITY_RU.md`;
- `docs/demo/DEMO_SCENARIO_FORENSICS_RU.md`;
- `docs/demo/DEMO_PACK_ACCEPTANCE_CHECKLIST_RU.md`;
- `docs/DEMO_REPORT_EXAMPLE_RU.md`;
- `docs/PILOT_VALUE_PROPOSITION_RU.md`.
Обновленные документы и материалы:
- `README.md`;
- `docs/DEMO_RUNBOOK_RU.md`;
- `docs/PILOT_DEMO_SCENARIO_RU.md`;
- `docs/PILOT_V1_EVIDENCE_RU.md`;
- `docs/fixtures/pilot-v1-demo/README_RU.md`;
- `docs/fixtures/pilot-v1-demo/demo-seed-data.json`.
- `scripts/detmir-pilot-demo-smoke.mjs`.
Demo dataset:
- синтетический;
- покрывает нормальную работу, снижение активности, рост удаленных сессий,
повышенный UEBA, incident candidate и низкое покрытие агентами;
- использует только demo identifiers и TEST-NET адреса.
Demo screenshots:
- существующие PNG проверены как реальные изображения, не заглушки;
- обновление PNG не потребовалось.
Ограничения:
- новая функциональность, API, агенты, ML, LLM не добавлялись;
- SIEM/DLP/EDR claims не добавлялись;
- planned/future не описаны как implemented.
+89
View File
@@ -57,7 +57,15 @@ async function fetchText(baseUrl, relativePath, role = "executive") {
function readDemoFiles() {
const files = [
"docs/DEMO_RUNBOOK_RU.md",
"docs/CUSTOMER_DEMO_SCENARIO_RU.md",
"docs/PILOT_DEMO_SCENARIO_RU.md",
"docs/DEMO_REPORT_EXAMPLE_RU.md",
"docs/PILOT_VALUE_PROPOSITION_RU.md",
"docs/demo/DEMO_SCENARIO_EXECUTIVE_RU.md",
"docs/demo/DEMO_SCENARIO_SECURITY_RU.md",
"docs/demo/DEMO_SCENARIO_FORENSICS_RU.md",
"docs/demo/DEMO_PACK_ACCEPTANCE_CHECKLIST_RU.md",
"docs/fixtures/pilot-v1-demo/README_RU.md",
"docs/fixtures/pilot-v1-demo/demo-seed-data.json",
"docs/fixtures/pilot-v1-demo/evidence-pack/executive-summary.md",
@@ -71,6 +79,80 @@ function readDemoFiles() {
}));
}
function validateDemoDataset() {
const file = "docs/fixtures/pilot-v1-demo/demo-seed-data.json";
const data = JSON.parse(fs.readFileSync(path.join(root, file), "utf8"));
const scenarios = new Set((data.scenario_coverage || []).map((item) => item.scenario));
const required = [
"normal_work",
"activity_drop",
"remote_session_growth",
"elevated_ueba",
"incident_candidate",
"low_agent_coverage",
];
const missing = required.filter((name) => !scenarios.has(name));
return {
ok: data.demo_only === true
&& data.privacy?.real_personal_data === false
&& data.privacy?.real_customer_hosts === false
&& data.privacy?.real_customer_networks === false
&& data.privacy?.real_domains === false
&& data.privacy?.real_logins === false
&& data.privacy?.personal_data === false
&& missing.length === 0,
missing,
scenarios: [...scenarios].sort(),
};
}
function validateDemoScreenshots() {
const files = [
"docs/screenshots/01-executive-overview.png",
"docs/screenshots/02-risk-heatmap.png",
"docs/screenshots/03-security-view.png",
"docs/screenshots/04-operations-view.png",
"docs/screenshots/05-investigation-pack.png",
"docs/screenshots/06-markdown-report.png",
"docs/screenshots/07-product-architecture.png",
];
const missing = [];
for (const file of files) {
const fullPath = path.join(root, file);
if (!fs.existsSync(fullPath)) {
missing.push({ file, reason: "missing" });
continue;
}
const bytes = fs.readFileSync(fullPath);
if (bytes.length <= 1000 || !bytes.subarray(0, 8).equals(Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]))) {
missing.push({ file, reason: "not_png_or_too_small", size: bytes.length });
}
}
return { ok: missing.length === 0, missing, count: files.length };
}
function validateDemoMarkdownLinks() {
const findings = [];
const linkPattern = /!?\[[^\]]+\]\(([^)]+)\)/g;
for (const item of readDemoFiles()) {
let match = null;
while ((match = linkPattern.exec(item.text)) !== null) {
const raw = String(match[1] || "").trim();
const target = raw.split(/\s+/)[0].replace(/^<|>$/g, "");
if (!target || target.startsWith("#") || target.startsWith("http://") || target.startsWith("https://") || target.startsWith("mailto:")) {
continue;
}
const withoutAnchor = target.split("#", 1)[0];
if (!withoutAnchor) continue;
const resolved = path.resolve(root, path.dirname(item.file), withoutAnchor);
if (!fs.existsSync(resolved)) {
findings.push({ file: item.file, target });
}
}
}
return { ok: findings.length === 0, findings };
}
function scanDemoFiles() {
const forbidden = [
/10\.10\.\d+\.\d+/,
@@ -101,6 +183,13 @@ async function main() {
const baseUrl = normalizeBaseUrl(env("DETMIR_PORTAL_SMOKE_URL", "http://127.0.0.1:8720/portal/"));
const checks = [];
const dataset = validateDemoDataset();
pass(checks, "demo_dataset_loads_and_covers_required_scenarios", dataset.ok, dataset);
const screenshots = validateDemoScreenshots();
pass(checks, "demo_screenshots_exist_and_are_png", screenshots.ok, screenshots);
const markdownLinks = validateDemoMarkdownLinks();
pass(checks, "demo_markdown_links_valid", markdownLinks.ok, markdownLinks);
const html = await fetchText(baseUrl, "", "executive");
pass(checks, "portal_html_available", html.ok && contains(html.text, "AWatch-rus"), {
status: html.status,