docs: add customer demo pack
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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).
|
||||
|
||||
## Показ
|
||||
|
||||
|
||||
@@ -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, эксплуатации - проблему покрытия
|
||||
данных. Все выводы требуют ручного подтверждения ответственными ролями.
|
||||
@@ -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).
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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`.
|
||||
|
||||
Требования:
|
||||
|
||||
|
||||
@@ -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 не заявлены и не используются.
|
||||
@@ -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 как реальные сотрудники или хосты.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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",
|
||||
|
||||
@@ -211,3 +211,44 @@ docs/PILOT_VALUE_PROPOSITION_RU.md
|
||||
5. Demo dataset.
|
||||
6. Проверки.
|
||||
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.
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user