Files
AWatch-rus/docs/dlp-production-plan-windows-10-19.md
T

12 KiB

Production DLP Plan for Windows 10-19

Goal

Build a reliable, easy-to-deploy, and maintainable production DLP system on top of the existing AWatch-rus platform, with Windows hosts 10-19 as the primary target scope.

This plan assumes the current baseline already exists:

  • Windows collectors for endpoint/browser/email/file telemetry
  • ActivityWatch-based ingestion and Web UI overlays
  • Ansible deployment for AW server and Windows endpoints
  • InnoSetup-based Windows install kit

Scope

In scope:

  • Centralized DLP policy lifecycle
  • Advanced practical content analysis for Russian personal data
  • SIEM/SOAR exports and notifications
  • Case management for investigations
  • Compliance reporting
  • Administrative tooling and health checks

Out of scope for this phase:

  • Full enterprise RBAC/SoD model
  • Multi-tenant administration
  • Heavy ML/UEBA
  • Approval workflows more complex than basic policy rollback/case review

Delivery Principles

  • Keep deployment simple: Python + SQLite + systemd on server, PowerShell on endpoints.
  • Default to last-known-good behavior on every critical component.
  • Do not break current Phase-1/2 DLP behavior while adding server-side controls.
  • Prefer additive rollout behind feature flags and config toggles.
  • Every new service must have Ansible deployment, health checks, logs, and rollback notes.

Current Baseline and Gap

Current AWatch-rus DLP already provides:

  • Rule-based endpoint detection
  • Incident buckets and review UI
  • Basic enforcement for clipboard/USB/print
  • Email/file/browser collectors
  • Initial reliability hardening work

Main gap to production DLP:

  • Policies are still too endpoint-local
  • Content analysis is not centralized or rich enough
  • Incident export/investigation/reporting chain is incomplete
  • Health/operations model is not yet unified

Stage 1: Policy Engine

Objective

Centralize policy management and distribution without breaking endpoint autonomy.

Files

  • aw-server/dlp-policy-engine/policy_service.py
  • aw-server/dlp-policy-engine/policy_schema.py
  • aw-server/dlp-policy-engine/policy_storage.py
  • aw-server/dlp-policy-engine/policy_distributor.py
  • aw-server/dlp-policy-engine/requirements.txt
  • aw-server/dlp-policy-engine/dlp-policy-engine.service
  • ansible/roles/dlp-policy-engine/tasks/main.yml
  • docs/dlp-policy-engine.md
  • windows/dlp-policy-client.ps1

Server responsibilities

  • REST API:
    • GET /api/0/dlp/policies
    • POST /api/0/dlp/policies
    • PUT /api/0/dlp/policies/{id}
    • DELETE /api/0/dlp/policies/{id}
    • GET /api/0/dlp/policies/active
  • SQLite-backed storage with version history in policy_versions
  • Validation through Pydantic and JSON schema before activation
  • Backup and rollback of active policy versions
  • Heartbeat-aware policy distribution model

Endpoint changes

Update windows/dlp-endpoint-signals-collector.ps1:

  • add -PolicyMode with values local and server
  • in server mode pull active policy every 5 minutes
  • cache last valid server policy locally
  • fallback to local cached policy if server is unavailable

Acceptance criteria

  • Policy can be created, versioned, activated, and rolled back through API.
  • Endpoints continue working during policy engine outage.
  • Invalid policy cannot become active.
  • Endpoint logs clearly show source of active policy: local, server, or cached.

Main risks

  • Breaking current local-policy-only flow
  • Partial rollout where server mode is enabled before engine is healthy
  • Policy drift between server and endpoints

Risk controls

  • Feature flag: aw_dlp_policy_engine_enabled
  • Default endpoint mode remains local until validation is complete
  • Store active policy checksum/version on both server and endpoint

Stage 2: Advanced Content Analysis

Objective

Add practical, legally relevant detection quality without overengineering.

2.1 Dictionary packs for 152-FZ personal data

Files

  • aw-server/dlp-content-analysis/dictionaries/152-fz-pdn.json
  • aw-server/dlp-content-analysis/checksum_validator.py
  • aw-server/dlp-content-analysis/dictionary_matcher.py

Required capabilities

  • Detect:
    • INN
    • SNILS
    • Russian passport patterns
  • Validate checksums where applicable to reduce false positives

2.2 Regex packs

Files

  • aw-server/dlp-content-analysis/regex-packs/financial.json
  • aw-server/dlp-content-analysis/regex-packs/contacts.json
  • aw-server/dlp-content-analysis/regex-packs/secrets.json

Required capabilities

  • Reusable grouped pattern packs
  • Server-defined matching rules distributed via policy
  • Match metadata attached to incidents

2.3 OCR for screenshots

Files

  • aw-server/dlp-content-analysis/ocr_processor.py
  • aw-server/dlp-content-analysis/requirements.txt
  • ansible/roles/dlp-content-analysis/tasks/main.yml

Required capabilities

  • Tesseract wrapper for screenshots in incident_artifacts
  • OCR text sent through regex and dictionary pipeline
  • OCR enrichment attached to the original incident

2.4 Endpoint integration

Update:

  • windows/dlp-policy.example.json
  • windows/dlp-endpoint-signals-collector.ps1

Add policy fields:

  • dictionaryPack
  • regexPack
  • ocrEnabled

Endpoint behavior:

  • load server-delivered dictionary/regex references
  • perform checksum-aware validation for supported PII
  • upload screenshots for OCR when enabled by policy

Acceptance criteria

  • Server can enrich incidents with dictionary, regex, and OCR findings.
  • False positives are reduced through checksum validation.
  • OCR can be disabled per policy without code changes.
  • Screenshot upload path is explicit and logged.

Main risks

  • OCR cost and latency
  • Privacy overreach from over-collecting screenshots
  • Regex pack sprawl and poor maintainability

Risk controls

  • OCR disabled by default
  • Artifact retention policy documented
  • Pack ownership and naming convention enforced

Stage 3: SIEM and SOAR Integrations

Objective

Make DLP incidents operational outside the AW UI.

3.1 CEF exporter

Files

  • aw-server/dlp-integrations/cef_exporter.py
  • aw-server/dlp-integrations/cef-config.yaml
  • aw-server/dlp-integrations/cef-exporter.service
  • aw-server/dlp-integrations/cef-exporter.timer

Required capabilities

  • Read normalized incidents from SQLite/PostgreSQL
  • Convert incidents to CEF
  • Send via syslog
  • Map DLP severities to CEF severities

3.2 Webhook notifications

Files

  • aw-server/dlp-integrations/webhook_sender.py
  • aw-server/dlp-integrations/webhook-config.yaml

Required capabilities

  • Notify on severity=high
  • Retry with backoff
  • Include incident details, source host, user, rule, and evidence link

3.3 Ansible integration

Update ansible/deploy_aw_server.yml:

  • install Python dependencies
  • deploy configs/services/timers
  • manage enable/start state

Acceptance criteria

  • High-severity incidents can be exported to SIEM and webhook endpoints.
  • Export failures are visible and retry safely.
  • Timers/services are idempotently managed by Ansible.

Main risks

  • Duplicate exports
  • Alert fatigue
  • Silent delivery failure to external systems

Risk controls

  • Event ID based dedupe
  • Severity thresholding
  • Delivery logs and health checks

Stage 4: Case Management

Objective

Provide a practical investigation workflow without introducing a heavy IR platform.

Files

  • aw-server/dlp-case-management/case_service.py
  • aw-server/dlp-case-management/case_schema.py
  • aw-server/dlp-case-management/case_storage.py
  • aw-server/dlp-case-management/case-service.service
  • install-kit-awindows-20260427-211240/aw-server/aw-case-management-ui.js

Required capabilities

  • Create a case from an incident
  • Attach evidence links
  • Support statuses:
    • open
    • investigating
    • resolved
    • closed
  • Support comments
  • Maintain immutable audit records in case_audit

UI integration

Update install-kit-awindows-20260427-211240/aw-server/aw-ru-patch.js:

  • add Create case action in DLP review table
  • add Case Management section in UI
  • show linked cases on incident views

Acceptance criteria

  • An operator can create and track a case directly from a DLP incident.
  • Evidence remains linked after status transitions.
  • Case audit trail is append-only.

Main risks

  • UI debt in current patch overlay
  • Weak evidence chain semantics
  • Mixing incident review and case workflow logic

Risk controls

  • Keep case service isolated from core AW server
  • Use immutable audit table
  • Treat evidence as links/references first, not copied blobs

Stage 5: Compliance Reporting

Objective

Generate regular compliance-grade reporting for Russian personal data handling.

Files

  • aw-server/dlp-compliance/report_generator.py
  • aw-server/dlp-compliance/templates/152-fz-report.html
  • aw-server/dlp-compliance/report-scheduler.service
  • aw-server/dlp-compliance/report-scheduler.timer

Required capabilities

  • Period incident report
  • Leak-channel statistics
  • User statistics
  • PDF export via weasyprint
  • Scheduled email delivery

Acceptance criteria

  • Monthly report can be generated unattended.
  • Report includes traceable source metrics.
  • Output is usable by operations/compliance without manual cleanup.

Main risks

  • Weak data quality in upstream incidents
  • PDF rendering dependency issues
  • Email delivery failures

Risk controls

  • Validate report inputs before generation
  • Keep HTML template under version control
  • Add health check for scheduler and last successful report

Stage 6: Administrative Tooling

Objective

Make the whole stack operable without manual database edits or ad hoc scripts.

Files

  • scripts/dlp-admin-cli.py
  • scripts/dlp-health-check.py

Required CLI functions

  • python3 dlp-admin-cli.py policies list
  • python3 dlp-admin-cli.py policies push --host HOSTNAME
  • python3 dlp-admin-cli.py incidents list --severity high
  • python3 dlp-admin-cli.py cases create --incident-id ID
  • python3 dlp-admin-cli.py health check

Health checks

  • API endpoint availability
  • endpoint reachability and policy sync state
  • queue health if implemented
  • disk space
  • systemd service state

Acceptance criteria

  • Operator can inspect policy, incident, case, and service health from CLI.
  • Health check has machine-readable exit status.
  • All critical services are covered by a single operational runbook.

Cross-Cutting Ansible Work

Update:

  • ansible/deploy_aw_server.yml
  • ansible/group_vars/all.example.yml
  • ansible/roles/dlp-policy-engine/tasks/main.yml
  • ansible/roles/dlp-content-analysis/tasks/main.yml

Required variables:

  • aw_dlp_policy_engine_enabled: true
  • aw_dlp_policy_engine_port: 5601

Ansible quality bar:

  • idempotent
  • rollback-aware
  • systemd-managed
  • config templated, not hand-edited in prod

Execution Order

  1. Stage 1: Policy Engine
  2. Stage 2: Advanced Content Analysis
  3. Stage 6: Administrative Tooling
  4. Stage 3: SIEM and SOAR Integrations
  5. Stage 4: Case Management
  6. Stage 5: Compliance Reporting

Rationale:

  • centralized policies are the control plane
  • content analysis increases signal quality
  • admin tooling is needed before broadening operations
  • integrations, cases, and reports depend on stable normalized incidents

Release Strategy

Wave 1

  • Deploy policy engine on AW server
  • Keep endpoints in local mode
  • Validate API, versioning, rollback

Wave 2

  • Enable server policy mode for a pilot subset of Windows 10-19
  • Validate cache/fallback behavior
  • Measure heartbeat and policy freshness

Wave 3

  • Roll out dictionary/regex/OCR selectively
  • Enable SIEM/webhook export
  • Stabilize case management and reporting

Definition of Done

The plan is considered implemented only when:

  • all new services are deployed by Ansible
  • endpoint fallback works under server outage
  • policy activation/rollback is proven
  • content analysis is documented and testable
  • SIEM/webhook integrations are observable
  • case workflow is usable from UI
  • monthly compliance report is generated automatically
  • admin CLI and health checks replace ad hoc operational steps

Deliverables Checklist

  • Policy engine service and API
  • Endpoint policy client and cache/fallback
  • SQLite policy versioning and rollback
  • Dictionary packs for 152-FZ
  • Regex packs for financial/contact/secret data
  • OCR processing pipeline
  • CEF exporter
  • Webhook sender
  • Case management service and UI integration
  • 152-FZ report generator and scheduler
  • Administrative CLI
  • Unified health check
  • Ansible deployment coverage
  • Operational documentation