feat(1c): add file-based analytics stack scaffold

This commit is contained in:
igor04091968
2026-05-21 23:34:55 +03:00
parent b420104f1f
commit 04b45ecf03
30 changed files with 1537 additions and 13 deletions
+127
View File
@@ -0,0 +1,127 @@
# Файловая 1С: ClickHouse + Grafana + AI Investigator
Этот документ описывает целевой и уже подготовленный scaffold для **файловой 1С**.
Он нужен для случаев, когда:
- 1С работает как файловая база на Windows/RDP host;
- на сам RDP host не хочется ставить лишние тяжёлые сервисы;
- нужен не только KPI-обзор, но и audit/detection/investigation контур.
## Почему не `prometheus_1C_exporter`
`prometheus_1C_exporter` полезен для **серверной 1С** с `rac`.
Для файловой 1С он не даёт нужного контекста:
- нет кластера `rac`;
- нет нормального session/license/runtime слоя как у серверной 1С;
- остаются только host-level и export-level данные.
Поэтому для файловой 1С правильный путь другой:
```text
1С exports + reglog + host telemetry
ETL / normalize
ClickHouse
Grafana + detections
AI Investigator
```
## Что входит в scaffold
- `clickhouse-1c/` — новый каталог стека;
- ClickHouse schema для raw/core/timeline/cases;
- ETL loader CSV/JSON выгрузок;
- detection catalog;
- Grafana dashboard catalog;
- AI Investigator API contract.
## Основные таблицы
- `raw_1c_documents`
- `raw_1c_postings`
- `raw_reglog`
- `raw_audit`
- `raw_host_metrics`
- `documents`
- `postings`
- `reglog_events`
- `audit_events`
- `host_events`
- `entity_timeline`
- `detections`
- `cases`
## Что визуализировать в Grafana
Роли:
1. `1C Executive Summary`
2. `1C Operations Health`
3. `1C Audit Overview`
4. `1C Detections`
5. `1C Investigation Timeline`
6. `1C Data Quality`
Полный каталог панелей:
- `clickhouse-1c/grafana/dashboard-catalog.md`
- `clickhouse-1c/grafana/query-pack.sql`
## Detections
Первый production-набор правил:
- вход вне рабочего времени;
- всплеск failed logins;
- массовое перепроведение;
- изменение критичных объектов;
- аномальный рост ручных корректировок;
- аномальный рост возвратов;
- рост просроченной дебиторки;
- длительные операции;
- всплеск ошибок обмена;
- высокая задержка диска;
- stale backup;
- нетипичные проводки по счетам.
См.:
- `clickhouse-1c/detections/rules.yml`
- `clickhouse-1c/detections/insert_detections.sql`
- `clickhouse-1c/detections/build_entity_timeline.sql`
- `clickhouse-1c/detections/open_cases_from_detections.sql`
- `clickhouse-1c/ops/etl-cron.example`
## Операционный порядок
1. На файловом/RDP host:
- выгрузить данные 1С в `CSV/JSON`;
- выгрузить журнал регистрации;
- снять host telemetry.
2. На utility VM:
- положить файлы в `clickhouse-1c/landing/*`;
- прогнать `etl/load_1c_exports.py`;
- прогнать `insert_detections.sql`;
- открыть Grafana dashboards;
- при необходимости построить AI summary поверх cases/timeline.
## Где граница AI
AI не должен:
- писать обратно в 1С;
- выполнять произвольный SQL;
- менять case state без явного правила.
AI должен:
- объяснять detections;
- строить summary по case;
- связывать audit/reglog/documents в timeline;
- предлагать next steps.
+6
View File
@@ -2,6 +2,12 @@
Документ описывает внедрение контура мониторинга 1С в Grafana через Prometheus и SQL Exporter.
> Важно: этот документ относится к сценарию, где 1С удобно читается через SQL/read-only views.
> Для **файловой 1С** теперь есть отдельный контур:
>
> - `docs/1C_FILE_ANALYTICS_STACK_RU.md`
> - `clickhouse-1c/README.md`
## 1. Целевая схема
1. База 1С (PostgreSQL или MS SQL) содержит KPI views.
+12 -3
View File
@@ -26,7 +26,7 @@
- `runbook.md` — быстрые операционные действия и проверки.
- `operations.md` — сопровождение, бэкапы, rollback.
- `windows/*` — отдельная ветка документации по Windows-оркестрации.
- `1C_GRAFANA_DEPLOYMENT_RU.md`, `pfsense.md`, `linux-client.md` — специализированные подсистемы.
- `1C_GRAFANA_DEPLOYMENT_RU.md`, `1C_FILE_ANALYTICS_STACK_RU.md`, `pfsense.md`, `linux-client.md` — специализированные подсистемы.
### `proxmox/`
Скрипты ранней инфраструктурной фазы:
@@ -65,6 +65,15 @@ PowerShell toolkit для клиентской стороны:
### `grafana-1c/`
Набор для SQL exporter + Prometheus + Grafana дашбордов по 1C метрикам.
### `clickhouse-1c/`
Новый stack именно для **файловой 1С**:
- ETL выгрузок `CSV/JSON`,
- ClickHouse schema,
- rule-based detections,
- Grafana dashboard catalog,
- AI Investigator contract.
### `scripts/`
Утилиты и quality gates:
@@ -84,7 +93,7 @@ PowerShell toolkit для клиентской стороны:
4. Включение автозапуска и проверка (`systemd` + `docs/runbook.md`).
5. Rollout клиентов (обычно `windows/`, иногда `scripts/install_aw_linux_client.sh`).
6. Эксплуатация и изменения через `docs/operations.md`.
7. При необходимости — расширение мониторинга (`grafana-1c/`, `pfsense/`).
7. При необходимости — расширение мониторинга (`grafana-1c/`, `clickhouse-1c/`, `pfsense/`).
## 4) Что важно понять в первую очередь
@@ -120,7 +129,7 @@ PowerShell toolkit для клиентской стороны:
- Если интересует эксплуатация и инциденты: `docs/runbook.md`, `docs/operations.md`, `docs/windows/troubleshooting.md`.
- Если интересует автодеплой: `ansible/provision_proxmox_ct_and_deploy_aw.yml` и `ansible/tasks/`.
- Если интересует наблюдаемость: `grafana-1c/` + `pfsense/` + `prometheus`/`alerts` конфиги.
- Если интересует наблюдаемость: `grafana-1c/`, `clickhouse-1c/` + `pfsense/` + `prometheus`/`alerts` конфиги.
- Если интересует hardening и DLP: `windows/hardening-recovery.ps1`, `docs/dlp-gap-analysis.md`.
---
+42 -1
View File
@@ -82,7 +82,42 @@ Playbook вычисляет `durationDefault` автоматически (вкл
## Типовые инциденты
### Hayabusa: production validation end-to-end
### Hayabusa: операторский сценарий по умолчанию
Текущий production-сценарий уже не требует ручного `accept/process-inbox`.
Нормальный путь для оператора:
1. На Windows-хосте запустить:
```powershell
powershell.exe -ExecutionPolicy Bypass -File C:\ProgramData\AWatch-rus\export-upload-hayabusa-to-aw-server.ps1 -HoursBack 6 -CaseId 30
```
2. Сервер `10.10.10.13` сам:
- примет `zip` и `.meta.json` в `/opt/activitywatch/aw-rus-ops/drop`;
- запустит `aw-hayabusa`;
- посчитает severity/score;
- создаст case при уровне от `medium`;
- отправит Telegram alert при уровне от `high`.
3. Проверить результат:
```bash
cat /opt/hayabusa/state/latest-intake.json
journalctl -u aw-hayabusa-drop.service -n 80 --no-pager
curl -fsS http://127.0.0.1:5602/api/0/dlp/cases/30
```
Ожидаемо:
- `latest-intake.json` имеет `status=ok`;
- `drop` после обработки пустой;
- в case есть `forensics.hayabusa`;
- Telegram alert уже уходит в операторский чат.
### Hayabusa: manual fallback / production validation end-to-end
Цель: подтвердить один реальный путь
@@ -94,6 +129,12 @@ Playbook вычисляет `durationDefault` автоматически (вкл
Минимальный production-proven сценарий:
Этот путь нужен только если:
- надо руками прогнать старый пакет;
- надо повторно разобрать archived zip;
- надо отладить сам `aw-hayabusa` без drop-автоматики.
1. На Windows-хосте сделать экспорт:
```powershell
+50
View File
@@ -0,0 +1,50 @@
# File 1C Analytics
Эта страница описывает новый контур для **файловой 1С**.
## Когда он нужен
Используй этот контур, если:
- 1С файловая;
- на RDP host нельзя или нежелательно ставить тяжёлые агенты;
- нужен audit/detection/investigation стек;
- Grafana должна быть не только для KPI, но и для расследования.
## Схема
```text
1С exports + reglog + host telemetry
ETL / normalize
ClickHouse
Grafana + detections
AI Investigator
```
## Основные компоненты
- `clickhouse-1c/README.md`
- `clickhouse-1c/clickhouse/init/*.sql`
- `clickhouse-1c/etl/load_1c_exports.py`
- `clickhouse-1c/detections/rules.yml`
- `clickhouse-1c/grafana/dashboard-catalog.md`
- `clickhouse-1c/ai/INVESTIGATOR_API.md`
## Основные dashboard-ы
- `1C Executive Summary`
- `1C Operations Health`
- `1C Audit Overview`
- `1C Detections`
- `1C Investigation Timeline`
- `1C Data Quality`
## Связанные документы
- [File 1C analytics stack](../1C_FILE_ANALYTICS_STACK_RU.md)
- [1C Grafana deployment](../1C_GRAFANA_DEPLOYMENT_RU.md)
- [Runbook](../runbook.md)
+103
View File
@@ -0,0 +1,103 @@
# Hayabusa Security Analytics
Эта страница описывает текущий production-контур Hayabusa внутри `AW-rus`.
## Что уже работает
- Windows-хост раз в `6` часов делает `EVTX export + upload`
- `AW-server` автоматически подхватывает пакет из `drop`
- `aw-hayabusa` строит forensic-отчёт
- `aw-hayabusa-case-alert` считает severity и score
- при уровне от `medium` создаётся или обновляется case
- при уровне от `high` уходит Telegram alert
## Операторский сценарий
На Windows-хосте:
```powershell
powershell.exe -ExecutionPolicy Bypass -File C:\ProgramData\AWatch-rus\export-upload-hayabusa-to-aw-server.ps1 -HoursBack 6 -CaseId 30
```
На сервере для проверки:
```bash
cat /opt/hayabusa/state/latest-intake.json
journalctl -u aw-hayabusa-drop.service -n 80 --no-pager
curl -fsS http://127.0.0.1:5602/api/0/dlp/cases/30
```
## Что получает оператор
- `summary.html`
- `manifest.json`
- `run.log`
- `timeline.jsonl`
- `logon-summary-successful.csv`
- `logon-summary-failed.csv`
- case в DLP case API
- Telegram alert в операторский чат
## Как оценивается severity
Используются:
- Hayabusa `Level`
- top `RuleTitle`
- failed logons
- suspicious PowerShell
- credential-related detections
- timestomp detections
Выход:
- `low`
- `medium`
- `high`
- `critical`
## Границы
В case возвращается только bounded metadata:
- `tool`
- `host`
- `mode`
- `status`
- `intake_id`
- `package_path`
- `sha256`
- `report_dir`
- `summary_html`
- `timeline_path`
- `manifest_path`
Не возвращаются:
- сырые EVTX
- полный timeline body
- полный Sigma output
## Где настраивается
Windows:
- `aw_windows_hayabusa_auto_upload_enabled`
- `aw_windows_hayabusa_auto_upload_interval_hours`
- `aw_windows_hayabusa_auto_upload_hours_back`
- `aw_windows_hayabusa_auto_upload_mode`
Server:
- `aw_hayabusa_auto_case_enabled`
- `aw_hayabusa_auto_case_min_severity`
- `aw_hayabusa_telegram_enabled`
- `aw_hayabusa_telegram_min_severity`
- `aw_hayabusa_telegram_bot_token`
- `aw_hayabusa_telegram_chat_ids`
## Связанные документы
- [Runbook](../runbook.md)
- [Windows EVTX Export](../windows-hayabusa-evtx-export.md)
- [Security analytics stack v1](../security-analytics-stack-v1.md)
+16 -7
View File
@@ -13,6 +13,9 @@
- [Runtime status: Content analysis](../dlp-content-analysis-runtime-status-2026-05-13.md) - фактический live-статус dictionary/regex/OCR/IOC
- [Hayabusa AW-rus integration](../hayabusa-aw-rus-integration-2026-05-14.md) - bounded DFIR enrichment path для incidents/cases/operator flow
- [Hayabusa operator and IB guide](../hayabusa-operator-ib-guide-2026-05-14.md) - когда запускать forensic path, где лежат артефакты и какие у него границы
- [Hayabusa Security Analytics](Hayabusa-Security-Analytics) - текущий production-контур: auto-upload, auto-case, severity scoring и Telegram alerts
- [Security analytics stack v1](../security-analytics-stack-v1.md) - целевая v1-модель без претензии на Splunk-class SIEM
- [File 1C analytics](File-1C-Analytics) - ClickHouse/Grafana/AI Investigator контур для файловой 1С
### Компоненты
- [DLP Endpoint Monitoring](DLP-Endpoint-Monitoring) - мониторинг clipboard, печати, USB
@@ -37,14 +40,15 @@
### Минимальная конфигурация
```bash
# 1. Установка на Windows workstation
.\windows\deploy-domain-users.ps1
# 1. Развернуть сервер
cd ansible
ansible-playbook -i inventory.ini deploy_aw_server.yml
# 2. Запуск ActivityWatch Server
./aw-server/aw-server
# 2. Развернуть Windows collectors
AW_WINRM_PASSWORD='...' bash ./run_deploy_aw_windows.sh
# 3. Применение RU патчей
node aw-server/aw-ru-patch.js
# 3. Проверить операторский forensic path
powershell.exe -ExecutionPolicy Bypass -File C:\ProgramData\AWatch-rus\export-upload-hayabusa-to-aw-server.ps1 -HoursBack 6 -CaseId 30
```
### Полная конфигурация
@@ -60,7 +64,11 @@ ansible-playbook server-setup.yml
cd ../grafana-1c
docker-compose up -d
# 4. Агрегация DLP событий
# 4. Для файловой 1С поднять ClickHouse/Grafana scaffold
cd ../clickhouse-1c
docker compose up -d
# 5. Агрегация DLP событий
python3 scripts/aggregate_dlp_events.py
```
@@ -73,6 +81,7 @@ ActivityWatch-Russian - это корпоративная система мон
- **Аналитика** - агрегация данных и отчеты
- **Мониторинг** - Prometheus + Grafana дашборды
- **Автоматизация** - Ansible деплой на Windows и Linux
- **Security analytics** - Hayabusa, auto-case, severity scoring, Telegram alerts
## 🔗 Ссылки
+15 -2
View File
@@ -70,9 +70,22 @@ Example with custom window:
powershell.exe -ExecutionPolicy Bypass -File C:\ProgramData\AWatch-rus\export-evtx-for-hayabusa.ps1 -DaysBack 1
```
Current production path:
```powershell
powershell.exe -ExecutionPolicy Bypass -File C:\ProgramData\AWatch-rus\export-upload-hayabusa-to-aw-server.ps1 -HoursBack 6 -CaseId 30
```
This wrapper:
- builds the EVTX package;
- uploads `.caseid` if provided;
- uploads `.meta.json`;
- uploads the `zip` to the AW-server drop directory.
## Boundaries
- output stays outside standard AW buckets
- output stays outside normal DLP screenshot artifacts
- this phase only defines and validates Windows export
- transfer to `10.10.10.13` and Hayabusa execution belong to later phases
- server-side Hayabusa execution happens later on `10.10.10.13`
- only bounded Hayabusa metadata returns into the case layer