Files
AWatch-rus/docs/dlp-enforcement.md
T
IgorRachkovGitHubFashion LisaDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
eea851141f feat(dlp): enforcement + email outbound collector (#14)
* 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>
2026-05-04 00:23:06 +03:00

5.0 KiB
Raw Blame History

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 записи

{
  "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 заблокирован для записи
print 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