feat(detmir): add rust-first operations tooling
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
# Cross-OS Native DLP Enforcement
|
||||
|
||||
## Цель
|
||||
|
||||
Расширять AWatch-rus как легкую DLP-систему без тяжелого монолитного endpoint-agent.
|
||||
Базовый принцип: сначала использовать естественные механизмы ОС и управляемых браузеров,
|
||||
а собственный код держать тонким слоем политики, телеметрии и корреляции.
|
||||
|
||||
Это не заменяет текущий Windows/RDP contour. Он остается основным production-контуром:
|
||||
|
||||
- `AWatchRusCollectorGuard` следит за collector health;
|
||||
- `aw-rus-healthd` принимает решение по свежести бакетов и активности хоста;
|
||||
- `tsj-guardian-bot` наблюдает и лечит только реальные деградации;
|
||||
- DLP policy engine остается центральным источником правил.
|
||||
|
||||
## Единая модель политики
|
||||
|
||||
Новые OS-specific механизмы должны сводиться к одному контракту:
|
||||
|
||||
```json
|
||||
{
|
||||
"nativeControls": {
|
||||
"mode": "monitor",
|
||||
"channels": {
|
||||
"removableStorage": {"action": "audit"},
|
||||
"print": {"action": "audit"},
|
||||
"clipboard": {"action": "audit"},
|
||||
"browserUpload": {"action": "audit"},
|
||||
"appExecution": {"action": "audit"}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Допустимые действия:
|
||||
|
||||
- `audit`: только событие в `aw-dlp-endpoint-signals_<host>`;
|
||||
- `warn`: событие плюс локальное уведомление пользователя;
|
||||
- `block`: блокировка штатным механизмом ОС или managed browser;
|
||||
- `blockWithOverride`: блокировка с управляемым исключением, если платформа это поддерживает;
|
||||
- `disabled`: канал выключен.
|
||||
|
||||
Для rollout по умолчанию используется `monitor/audit`. `block` включается только по одному
|
||||
каналу и одной группе хостов после накопления baseline.
|
||||
|
||||
На Windows это правило enforced в `dlp-endpoint-signals-collector.ps1`: если endpoint-правило
|
||||
просит `action: "block"`, но `nativeControls.mode` не равен `enforce` или канал не разрешает
|
||||
`block`, collector подавляет enforcement и пишет инцидент с `enforcementSuppressed=true`.
|
||||
|
||||
## Windows
|
||||
|
||||
Windows остается самой зрелой платформой для ближайшего enforcement.
|
||||
|
||||
Предпочтительный порядок:
|
||||
|
||||
1. USB/removable storage:
|
||||
- мониторинг: текущий `dlp-endpoint-signals-collector.ps1`;
|
||||
- enforcement: GPO/registry/device installation restrictions и `Set-Disk -IsReadOnly`;
|
||||
- область блокировки: запись на removable media, не чтение.
|
||||
2. Print:
|
||||
- мониторинг: `Microsoft-Windows-PrintService/Operational`;
|
||||
- enforcement: отмена print job штатным spooler API/CIM;
|
||||
- rollout: сначала только документы с совпадением `documentRegex`.
|
||||
3. Clipboard:
|
||||
- мониторинг: текущий endpoint collector;
|
||||
- enforcement: очистка clipboard только для high-confidence правил;
|
||||
- риск: UX и ложные срабатывания, поэтому `block` не включать глобально.
|
||||
4. App execution:
|
||||
- enforcement: AppLocker или WDAC/App Control for Business;
|
||||
- назначение: не “DLP content”, а сужение каналов утечки через запрещенные приложения.
|
||||
5. Browser upload:
|
||||
- легкий путь: managed browser policy + URL/category rules;
|
||||
- сильный путь: расширение браузера или коммерческий DLP browser control, если нужен inline file upload block.
|
||||
|
||||
Ограничение: AppLocker/WDAC управляют запуском кода, но не поведением уже запущенного приложения.
|
||||
Поэтому они дополняют DLP, а не заменяют USB/print/browser enforcement.
|
||||
|
||||
## macOS
|
||||
|
||||
Для macOS нельзя идти через kernel extension как основной путь. Современный естественный
|
||||
вариант - System Extensions и профиль управления через MDM.
|
||||
|
||||
Предпочтительный порядок:
|
||||
|
||||
1. Monitor-only agent:
|
||||
- LaunchDaemon + Swift/Go helper;
|
||||
- публикация событий в AW buckets;
|
||||
- локальный health heartbeat по аналогии с `aw-rus-collector-guard_<host>`.
|
||||
2. Endpoint Security system extension:
|
||||
- file open/write/exec telemetry;
|
||||
- deny только после отдельного PoC и подписи/entitlements;
|
||||
- обязательная MDM-подготовка approval profile.
|
||||
3. Network Extension:
|
||||
- для DNS/proxy/web egress контроля;
|
||||
- лучше применять к managed domains, не как полный MITM по умолчанию.
|
||||
4. MDM restrictions:
|
||||
- screen capture, AirDrop, external media, profile-level restrictions;
|
||||
- это самый легкий enforcement, если парк управляется MDM.
|
||||
|
||||
Ограничение: без MDM и Apple Developer entitlements macOS enforcement будет хрупким.
|
||||
Для неуправляемых Mac оставляем monitor-only.
|
||||
|
||||
## Linux
|
||||
|
||||
Linux должен быть легким и дистрибутивно-нейтральным. Не начинать с “универсального агента,
|
||||
который перехватывает все syscalls”.
|
||||
|
||||
Предпочтительный порядок:
|
||||
|
||||
1. fanotify file gate:
|
||||
- мониторинг и permission events для чувствительных каталогов;
|
||||
- хороший MVP для removable mount points, home/project shares, export directories;
|
||||
- блокировка через permission response до открытия файла.
|
||||
2. auditd/journald collectors:
|
||||
- дешево для exec, sudo, mount, removable media, ssh/scp hints;
|
||||
- подходит для server/workstation baseline.
|
||||
3. eBPF telemetry:
|
||||
- использовать для observability: process, connect, file metadata;
|
||||
- enforcement только через BPF LSM на поддерживаемых ядрах и после отдельной совместимости.
|
||||
4. Desktop clipboard/print:
|
||||
- monitor-only через DE-specific tools (`wl-paste`, `xclip`, CUPS logs);
|
||||
- block режим только для управляемых рабочих станций.
|
||||
|
||||
Ограничение: Linux enforcement сильно зависит от ядра, LSM stack и дистрибутива. Поэтому
|
||||
первая production-версия должна быть fanotify + auditd, а eBPF оставить как расширяемый слой.
|
||||
|
||||
## ChromeOS и managed browser
|
||||
|
||||
Для ChromeOS не надо писать свой endpoint-agent. Если устройства управляются через Google
|
||||
Admin Console, использовать ChromeOS Data Controls:
|
||||
|
||||
- copy/paste;
|
||||
- printing;
|
||||
- screen capture/screen sharing;
|
||||
- file open/upload/transfer;
|
||||
- removable storage.
|
||||
|
||||
Для Windows/macOS/Linux браузерный контур должен быть policy-first:
|
||||
|
||||
- Edge/Chrome enterprise policies;
|
||||
- URL/category lists из текущего DLP policy engine;
|
||||
- расширение браузера только когда нужен inline upload/file decision, а не только telemetry.
|
||||
|
||||
## Priority Backlog
|
||||
|
||||
### P0 - сейчас
|
||||
|
||||
- Привести все health-check скрипты к единой inactive/guard-aware классификации.
|
||||
- Хранить `nativeControls` в policy document как forward-compatible секцию.
|
||||
- Не включать новый `block` глобально; только `audit` и `warn`.
|
||||
|
||||
### P1 - Windows production
|
||||
|
||||
- USB write-block profile через GPO/PowerShell.
|
||||
- Print cancel по `documentRegex`.
|
||||
- Browser upload detection по managed URL categories.
|
||||
- Guard heartbeat для applied nativeControls version/checksum.
|
||||
|
||||
### P2 - Linux MVP
|
||||
|
||||
- `aw-linux-file-gate` на fanotify для monitor/audit по каталогам.
|
||||
- `aw-linux-audit-collector` для mount/usb/scp/sudo/process telemetry.
|
||||
- systemd unit + heartbeat bucket.
|
||||
|
||||
### P3 - macOS MVP
|
||||
|
||||
- `aw-macos-monitor` LaunchDaemon без enforcement.
|
||||
- MDM profile checklist.
|
||||
- System Extension PoC только для managed Macs.
|
||||
|
||||
### P4 - managed browser / ChromeOS
|
||||
|
||||
- Транслятор DLP policy domains/categories в Chrome/Edge policy bundle.
|
||||
- ChromeOS Data Controls mapping для организаций с Google Workspace.
|
||||
|
||||
## Rollout Rules
|
||||
|
||||
- Каждая новая платформа стартует в `monitor`.
|
||||
- `block` разрешен только после минимум 7 дней clean baseline.
|
||||
- Любой block должен писать:
|
||||
- rule id;
|
||||
- action;
|
||||
- platform;
|
||||
- native mechanism;
|
||||
- enforcement result;
|
||||
- override id, если применимо.
|
||||
- Если local guard/heartbeat старше порога, центральный бот не делает широкий restart,
|
||||
а переводит платформу в degraded и запускает platform-specific recovery.
|
||||
|
||||
## Sources
|
||||
|
||||
- Microsoft AppLocker overview: https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/applocker/applocker-overview
|
||||
- Microsoft AppLocker policy design: https://learn.microsoft.com/en-za/windows/security/application-security/application-control/app-control-for-business/applocker/understand-applocker-policy-design-decisions
|
||||
- Microsoft Purview Chrome DLP extension: https://learn.microsoft.com/en-us/purview/dlp-chrome-learn-about
|
||||
- Apple system extensions deployment: https://support.apple.com/guide/deployment/system-extensions-in-macos-depa5fb8376f/web
|
||||
- Linux fanotify manual: https://man7.org/linux/man-pages/man7/fanotify.7.html
|
||||
- eBPF docs: https://docs.ebpf.io/
|
||||
- ChromeOS Data Controls: https://support.google.com/chrome/a/answer/11587610
|
||||
Reference in New Issue
Block a user