feat(dlp-phase1): add policy-based incident pipeline and capability gap analysis

This commit is contained in:
igor04091968
2026-04-25 16:11:05 +03:00
parent 016a323afc
commit c3a49e658c
13 changed files with 473 additions and 10 deletions
+50
View File
@@ -0,0 +1,50 @@
# DLP gap analysis: AWatch-rus vs enterprise DLP class
## Текущий контур AWatch-rus
- Endpoint activity tracking (`aw-watcher-afk`, `aw-watcher-window`).
- Browser URL/domain collection (native UIAutomation collector).
- Rule-based категоризация web-активности.
- Phase-1 DLP policy: rule match + incident bucket `aw-dlp-incidents_<host>` + локальный incident log.
- Автоматизированный deployment (PowerShell, Ansible, Proxmox).
## Разрыв до enterprise DLP уровня
1. **Каналы перехвата**: почта, USB/MTP, печать, clipboard, мессенджеры, облака, file transfer.
2. **Контент-анализ**: PII/dictionaries/EDM/IDM, advanced OCR, document fingerprinting.
3. **Реагирование**: block/quarantine/workflow approvals, исключения, эскалации.
4. **Расследования**: case-management, evidence chain, immutable audit.
5. **Управление**: RBAC/SoD, policy lifecycle, multi-tenant admin model.
6. **Интеграции**: SIEM/SOAR/ITSM, AD/IdP, ticketing.
## Реалистичный roadmap
### Phase 1 (сделано)
- DLP policy JSON + rules.
- Incident generation в отдельный AW bucket.
- Incident cooldown/dedup.
### Phase 2 (следующий шаг)
- USB/print/clipboard collectors.
- File-operation telemetry (create/copy/archive/upload hints).
- Central incident aggregation/export.
### Phase 3
- Policy engine service (server-side), versioned policies, approval workflow.
- Correlation engine (user + channel + object + time).
- SIEM connector (CEF/JSON over syslog/HTTP).
### Phase 4
- Advanced detectors (dictionary packs, regex packs, OCR pipeline).
- Risk scoring / UEBA.
- Compliance reports (152-ФЗ / PCI DSS / ISO 27001-aligned evidence views).
## Reference links (product capability benchmark)
- https://www.infowatch.ru/products/dlp-sistema-traffic-monitor/vozmozhnosti-dlp-sistemy
- https://www.infowatch.ru/products/dlp-sistema-traffic-monitor/sistemnye-trebovaniya-dlp
- https://www.infowatch.ru/company/presscenter/news/zapatentovana-tekhnologiya-dlya-raspoznavaniya-teksta-na-izobrazheniyakh
+8 -2
View File
@@ -9,11 +9,13 @@
- `windows/validate-deployment.ps1` — машинная проверка состояния и JSON-отчёт.
- `windows/browser-domains-native-collector.ps1` — native collector доменов браузера с категоризацией.
- `windows/web-category-rules.example.json` — пример кастомных правил категоризации.
- `windows/dlp-policy.example.json` — пример DLP-политики (phase-1: alerting incidents).
## Что делает пакет
- Ставит `aw-watcher-afk` и `aw-watcher-window` из официального Windows ZIP ActivityWatch.
- Копирует browser-domain collector в `C:\ProgramData\ActivityWatch`.
- Копирует DLP policy в `C:\ProgramData\ActivityWatch\dlp-policy.json`.
- Создаёт per-user задачи `ActivityWatch Launch [...]` с запуском при логоне.
- Создаёт системную задачу `ActivityWatch Recovery`, которая циклически перезапускает per-user launch tasks.
- Применяет ACL к `C:\Program Files\ActivityWatch`, `C:\ProgramData\ActivityWatch` и каталогу логов.
@@ -36,7 +38,8 @@ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
-ServerHost aw.example.local `
-ServerPort 5600 `
-TargetUser 'CONTOSO\svc.activity.user01' `
-CustomRulesPath .\windows\web-category-rules.example.json
-CustomRulesPath .\windows\web-category-rules.example.json `
-CustomPolicyPath .\windows\dlp-policy.example.json
```
Локальный пользователь:
@@ -85,7 +88,8 @@ CSV-формат: колонка `User`, `Username`, `SamAccountName` или `Lo
-ServerPort 5600 `
-Domain CONTOSO `
-UserListPath C:\Temp\aw-users.txt `
-CustomRulesPath C:\Temp\web-category-rules.json
-CustomRulesPath C:\Temp\web-category-rules.json `
-CustomPolicyPath C:\Temp\dlp-policy.json
```
Если список уже содержит `DOMAIN\user`, параметр `-Domain` не нужен.
@@ -98,6 +102,7 @@ CSV-формат: колонка `User`, `Username`, `SamAccountName` или `Lo
-ServerPort 5600 `
-Domain CONTOSO `
-Users user1,user2,user3,user4,user5 `
-CustomPolicyPath C:\Temp\dlp-policy.json `
-ValidateAfterDeploy
```
@@ -119,6 +124,7 @@ CSV-формат: колонка `User`, `Username`, `SamAccountName` или `Lo
- `C:\ProgramData\ActivityWatch\launch-watchers.ps1` — per-user launcher.
- `C:\ProgramData\ActivityWatch\recovery-loop.ps1` — system recovery loop.
- `C:\ProgramData\ActivityWatch\browser-domains-native-collector.ps1` — runtime collector.
- `C:\ProgramData\ActivityWatch\dlp-policy.json` — активная DLP-политика.
- `C:\ProgramData\ActivityWatch\logs\` — логи collector'а.
## Повторный прогон
+1
View File
@@ -22,6 +22,7 @@ C:\Deploy\AWatch-rus\windows\deploy-ensemble.ps1 `
-ServerPort 5600 `
-Domain AD `
-Users user1,user2,user3,user4,user5 `
-CustomPolicyPath C:\Deploy\AWatch-rus\windows\dlp-policy.example.json `
-ValidateAfterDeploy
```
+13
View File
@@ -20,6 +20,7 @@ $report | ConvertTo-Json -Depth 12
Test-Path 'C:\Program Files\ActivityWatch\aw-watcher-afk\aw-watcher-afk.exe'
Test-Path 'C:\Program Files\ActivityWatch\aw-watcher-window\aw-watcher-window.exe'
Test-Path 'C:\ProgramData\ActivityWatch\browser-domains-native-collector.ps1'
Test-Path 'C:\ProgramData\ActivityWatch\dlp-policy.json'
Test-Path 'C:\ProgramData\ActivityWatch\deployment-config.json'
```
@@ -72,6 +73,7 @@ Invoke-WebRequest https://aw.example.local/api/0/info
- `aw-watcher-window_<hostname>`
- `aw-watcher-web-edge_<hostname>` или другой browser bucket
- `aw-detmir-web-category_<hostname>`
- `aw-dlp-incidents_<hostname>` (при срабатывании policy rule с `action=alert|block|quarantine`)
Проверка через API:
@@ -86,6 +88,17 @@ Invoke-WebRequest http://aw.example.local:5600/api/0/buckets | Select-Object -Ex
3. Проверьте category bucket на сервере.
4. Убедитесь, что поля `domain`, `rootDomain`, `category`, `categoryGroup`, `categoryRule` заполнены.
## Проверка DLP phase-1
1. В `dlp-policy.json` задайте правило на тестовый домен.
2. Откройте этот домен в браузере.
3. Проверьте `aw-dlp-incidents_<hostname>` через API.
4. Проверьте локальный лог:
```powershell
Get-Content "C:\ProgramData\ActivityWatch\logs\dlp-incidents-$env:USERNAME.log" -Tail 50
```
## Проверка восстановления
1. Завершите `aw-watcher-afk.exe` и `aw-watcher-window.exe` у тестового пользователя.