* feat(dlp): add enforcement — USB write-block, print cancel, clipboard clear 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> * feat(dlp): add email outbound collector — Outlook COM + SMTP monitor Two collection modes: - outlook: polls Sent Items via COM, extracts metadata (subject hash, recipients hash, attachment names, body length) - smtp: monitors SMTP connections (25/587/465/2525) via Get-NetTCPConnection DLP policy rules: endpoint.email[] with regex matching on subject, recipients, sender, attachments, externalOnly flag. Enforcement: action=block moves mail to Drafts (Outlook mode). Privacy: subject/recipients stored as SHA256, body never read. Co-Authored-By: Fashion Lisa <igor04091968@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
5.0 KiB
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) |
Отмена задания печати (Remove-CimInstance Win32_PrintJob) |
Во всех случаях пользователь получает Windows-уведомление (balloon notification) с описанием причины блокировки.
Конфигурация политики
Формат dlp-policy.json не изменился — поле action в правиле теперь поддерживает значение "block" наряду с "alert" (по умолчанию).
Пример: блокировка USB записи
{
"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": "Печать заблокирована: документ содержит метку конфиденциальности"
}
]
}
}
Пример: только мониторинг (без блокировки)
{
"endpoint": {
"usb": [
{
"id": "monitor-usb",
"action": "alert",
"severity": "medium",
"message": "Обнаружено подключение USB-носителя"
}
]
}
}
Телеметрия
Каждый инцидент с enforcement записывается в bucket aw-dlp-incidents_<host> с дополнительным полем:
{
"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 заблокирован для записи |
DLP: печать заблокирована |
Текст уведомления берётся из поля message правила политики.
Rollback
Для отключения enforcement без изменения кода — смените action с "block" на "alert" в dlp-policy.json. Все правила продолжат мониторинг без блокировки.
Для USB, переведённого в read-only, восстановление:
Get-Disk | Where-Object { $_.BusType -eq 'USB' -and $_.IsReadOnly } | Set-Disk -IsReadOnly $false