Files
AWatch-rus/docs/dlp-enforcement.md
T

6.5 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) с описанием причины блокировки.

Для cross-OS развития используется отдельный native-first профиль: docs/dlp-cross-os-native-enforcement.md. Он задает правило: Windows enforcement оставляем на штатных GPO/AppLocker/Spooler/Storage механизмах, macOS строим через System Extensions/MDM, Linux через fanotify/auditd/eBPF, ChromeOS через Data Controls. Тяжелый универсальный агент не является целевой архитектурой.

Конфигурация политики

Формат dlp-policy.json не изменился — поле action в правиле теперь поддерживает значение "block" наряду с "alert" (по умолчанию).

Важно: для production safety action: "block" в конкретном endpoint-правиле не включает блокировку сам по себе. Реальное enforcement-действие выполняется только если:

  • nativeControls.mode равно "enforce";
  • nativeControls.rollout.allowGlobalBlock=true;
  • и nativeControls.channels.<channel>.action равно "block" или "blockWithOverride".

Если правило просит block, но native controls находятся в monitor, collector пишет инцидент как alert и добавляет поля:

  • requestedAction: "block";
  • enforcementMode;
  • nativeChannelAction;
  • enforcementSuppressed: true.

Пример: блокировка USB записи

{
  "defaults": {
    "enabled": true,
    "action": "alert",
    "severity": "medium",
    "cooldownSeconds": 300
  },
  "nativeControls": {
    "mode": "enforce",
    "rollout": {
      "allowGlobalBlock": false
    },
    "channels": {
      "clipboard": {"action": "block"},
      "usb": {"action": "block"},
      "print": {"action": "block"}
    }
  },
  "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