Phase 2.5: when DLP policy rule has action="block", the collector now actively prevents the action instead of just logging: - USB: Set-Disk -IsReadOnly via Get-Partition/Get-Disk pipeline - Print: Remove-CimInstance Win32_PrintJob for matching jobs - Clipboard: Set-Clipboard -Value $null to clear sensitive content Each enforcement adds enforced=true/false to incident telemetry. Windows balloon notification shown to user on every block action. Backward-compatible: existing action="alert" rules unchanged. Co-Authored-By: Fashion Lisa <igor04091968@gmail.com>
127 lines
5.0 KiB
Markdown
127 lines
5.0 KiB
Markdown
# DLP Enforcement (action: "block")
|
||
|
||
## Обзор
|
||
|
||
Phase 2.5 расширяет DLP endpoint collector функциями **активного предотвращения** (enforcement).
|
||
При `action: "block"` в правиле DLP-политики коллектор не только регистрирует инцидент, но и выполняет блокирующее действие:
|
||
|
||
| Канал | Действие при `block` |
|
||
|-----------|-----------------------------------------------------------|
|
||
| clipboard | Очистка буфера обмена (`Set-Clipboard -Value $null`) |
|
||
| usb | Перевод USB-диска в read-only (`Set-Disk -IsReadOnly`) |
|
||
| print | Отмена задания печати (`Remove-CimInstance Win32_PrintJob`)|
|
||
|
||
Во всех случаях пользователь получает Windows-уведомление (balloon notification) с описанием причины блокировки.
|
||
|
||
## Конфигурация политики
|
||
|
||
Формат `dlp-policy.json` не изменился — поле `action` в правиле теперь поддерживает значение `"block"` наряду с `"alert"` (по умолчанию).
|
||
|
||
### Пример: блокировка USB записи
|
||
|
||
```json
|
||
{
|
||
"defaults": {
|
||
"enabled": true,
|
||
"action": "alert",
|
||
"severity": "medium",
|
||
"cooldownSeconds": 300
|
||
},
|
||
"endpoint": {
|
||
"usb": [
|
||
{
|
||
"id": "block-all-usb-write",
|
||
"action": "block",
|
||
"severity": "high",
|
||
"message": "Запись на USB-носитель заблокирована политикой DLP"
|
||
}
|
||
],
|
||
"clipboard": [
|
||
{
|
||
"id": "block-pdn-clipboard",
|
||
"action": "block",
|
||
"severity": "high",
|
||
"regexPatterns": [
|
||
"\\b\\d{3}-\\d{3}-\\d{3}\\s?\\d{2}\\b",
|
||
"\\b\\d{4}\\s?\\d{6}\\b"
|
||
],
|
||
"minLength": 8,
|
||
"message": "Буфер обмена очищен: обнаружены персональные данные (СНИЛС/паспорт)"
|
||
}
|
||
],
|
||
"print": [
|
||
{
|
||
"id": "block-confidential-print",
|
||
"action": "block",
|
||
"severity": "high",
|
||
"documentRegex": "(?i)(конфиденциально|секретно|confidential|restricted)",
|
||
"message": "Печать заблокирована: документ содержит метку конфиденциальности"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
### Пример: только мониторинг (без блокировки)
|
||
|
||
```json
|
||
{
|
||
"endpoint": {
|
||
"usb": [
|
||
{
|
||
"id": "monitor-usb",
|
||
"action": "alert",
|
||
"severity": "medium",
|
||
"message": "Обнаружено подключение USB-носителя"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
## Телеметрия
|
||
|
||
Каждый инцидент с enforcement записывается в bucket `aw-dlp-incidents_<host>` с дополнительным полем:
|
||
|
||
```json
|
||
{
|
||
"ruleId": "block-all-usb-write",
|
||
"action": "block",
|
||
"severity": "high",
|
||
"signalType": "usb_insert",
|
||
"enforced": true,
|
||
"driveLetter": "E:",
|
||
"volumeName": "FLASH_DRIVE"
|
||
}
|
||
```
|
||
|
||
- `enforced: true` — блокировка выполнена успешно
|
||
- `enforced: false` — блокировка не удалась (недостаточно прав, устройство недоступно и т.д.)
|
||
|
||
## Требования
|
||
|
||
- **Clipboard block**: Не требует повышенных прав.
|
||
- **USB write-block**: Требует запуск от имени администратора (для `Set-Disk -IsReadOnly`). При запуске без прав блокировка не сработает, но инцидент будет зарегистрирован с `enforced: false`.
|
||
- **Print block**: Требует права на отмену заданий печати (обычно — SYSTEM или администратор принт-сервера).
|
||
|
||
## Уведомления
|
||
|
||
При каждой блокировке пользователю показывается Windows balloon notification:
|
||
|
||
| Канал | Заголовок |
|
||
|-----------|--------------------------------------|
|
||
| clipboard | `DLP: буфер обмена очищен` |
|
||
| usb | `DLP: USB заблокирован для записи` |
|
||
| print | `DLP: печать заблокирована` |
|
||
|
||
Текст уведомления берётся из поля `message` правила политики.
|
||
|
||
## Rollback
|
||
|
||
Для отключения enforcement без изменения кода — смените `action` с `"block"` на `"alert"` в `dlp-policy.json`. Все правила продолжат мониторинг без блокировки.
|
||
|
||
Для USB, переведённого в read-only, восстановление:
|
||
```powershell
|
||
Get-Disk | Where-Object { $_.BusType -eq 'USB' -and $_.IsReadOnly } | Set-Disk -IsReadOnly $false
|
||
```
|