Skip to content

DLP Assessment

Tanimul Haque Khan edited this page Oct 13, 2026 · 2 revisions

DLP Assessment (Deferred)

Status: Assessed October 2026. Decision: not a primary focus. We will revisit after the items on the Roadmap that DLP depends on are done. The cheap parts (posture signals) are folded into the compliance work. The expensive parts (real-time, content-aware blocking) are parked.

This page records what Data Loss Prevention (DLP) is, what it would take for SentinelGo to offer it, and why the effort is not worth it right now. Read it before proposing DLP work, so the discussion starts from here instead of from zero.


1. What DLP actually covers

DLP is about keeping sensitive data inside the places it is allowed to be. Every DLP product answers three questions:

  1. What is sensitive? This is classification.
  2. Where is it, and where is it going? This is visibility.
  3. What happens when a rule matches? This is enforcement: allow, warn, block, encrypt, or quarantine.

The three states of data

State Meaning Example control
At rest Stored on a disk, share or bucket Find spreadsheets with card numbers on laptops
In motion Moving over a network or channel Stop customers.xlsx being uploaded to a personal Gmail
In use Open in an app, on screen, in the clipboard Block pasting CRM data into a public AI chatbot; block screenshots

The four kinds of DLP product

Kind Where it runs Relevant to SentinelGo?
Endpoint DLP Agent on the laptop: USB, print, clipboard, browser upload, AirDrop/Bluetooth Yes. It's the only kind an endpoint agent can be
Network DLP Inline proxy or gateway with TLS inspection No
Email DLP Mail platform (M365, Google Workspace) No
Cloud DLP / CASB SaaS APIs (Drive, SharePoint, Slack sharing) No

How content is classified

From cheapest to most sophisticated:

Technique How it works Typical weakness
Regex + validator Pattern plus checksum, e.g. 16 digits and a valid Luhn check Without validators, every order ID looks like a card number
Keywords / dictionaries "CONFIDENTIAL", project codenames Easy to evade, noisy
Exact Data Match (EDM) Hash the real customer table; match only actual records Needs a secure pipeline for the source data
Document fingerprinting Hash chunks of known documents to catch partial copies Needs a curated set of "crown jewel" documents
Sensitivity labels Users or systems tag files (e.g. Microsoft Purview labels) Depends on people labelling
ML classifiers / OCR "This looks like a CV", text inside screenshots Heavy, hard to tune, opaque

2. The core problem: watching is easy, blocking is not

Observing that a USB stick was inserted needs no special privileges beyond what SentinelGo already has. Stopping a file from being written to it, or stopping an upload in the browser, needs a hook inside the operating system:

Platform What real-time blocking requires Fits SentinelGo's rules?
Windows A kernel-mode file-system minifilter driver (plus the Windows Filtering Platform for network). Written in C, signed through Microsoft's hardware dev center with an EV certificate. No. It's a separate C kernel component. A bug crashes machines fleet-wide (see the July 2024 CrowdStrike outage).
macOS An Endpoint Security system extension. Needs an entitlement that Apple grants on request, plus notarization. The API is C/Swift. No. It needs cgo or a separate Swift component.
Linux fanotify permission events (FAN_OPEN_PERM) can deny file access; eBPF can observe. Yes, from pure Go (golang.org/x/sys/unix, cilium/ebpf).
Browser uploads A managed browser extension per browser, or TLS interception No. It's a separate product surface.

SentinelGo's hard rule is no cgo, one static Go binary per platform (see Home). Real DLP enforcement on Windows and macOS, which is most of our fleet, would mean shipping and maintaining a second, native, kernel-adjacent product next to the agent. That is the main reason the return doesn't justify the effort.


3. What we could build, by tier

Tier What it is Example Effort Risk Decision
0: Posture Report whether a device is configured so data can leak USB storage allowed? Removable-drive encryption enforced? Personal cloud sync client installed? AirDrop on? Days Very low Do it, as part of desired-state compliance (see Roadmap)
1: Visibility Detect and report events, block nothing USB insert events; file writes to removable media (Windows event 4663 with Audit Removable Storage on); print jobs (PrintService/Operational event 307, when enabled); a scheduled data-at-rest scan that reports counts of card/ID-number matches per file Weeks Low to medium Later. Revisit after desired-state compliance and enforcement
2: Coarse enforcement Flip OS-level switches, no content awareness Disable USB mass storage (USBSTOR Start=4 on Windows, usb-storage blacklist on Linux); make removable drives read-only; force BitLocker To Go Weeks Medium Becomes part of enforcement with drift correction as ordinary policies, not as "DLP"
3: Content-aware blocking Block a specific file or upload because of what it contains "Block copying any file with >5 card numbers to USB" Many months, per OS High Parked. If ever needed, integrate with an existing product (e.g. Microsoft Purview Endpoint DLP) and report its health instead

4. Why DLP is not our primary focus: worked examples

Example 1: The USB stick. A manager asks: "Stop people copying client data to USB."

  • What actually solves it: a policy that disables USB mass storage, or allows only encrypted drives. That is Tier 2, an OS setting, and it belongs in our Roadmap's policy enforcement work anyway.
  • What DLP adds: "allow USB, but block only files that contain client data". That needs a Windows minifilter driver and a macOS system extension: months of native work, kernel signing, and fleet-crash risk. The marginal benefit over "no USB storage" is small for most organisations.

Example 2: The browser upload. "Stop people uploading source code to personal Google Drive."

  • An endpoint agent can't see inside HTTPS uploads without a browser extension or TLS interception. Both are separate products with their own privacy and breakage problems.
  • The practical controls are on the network and identity side: tenant restrictions, a CASB or secure web gateway, conditional access. They don't belong in SentinelGo.

Example 3: The data-at-rest scan. "Tell us which laptops hold files with national ID numbers."

  • This is buildable in pure Go (Tier 1), but:
    • The agent becomes a sensitive-data sink. If findings include snippets, our backend now stores the data we're meant to protect. Findings must be limited to type + count + path, and every report still needs review.
    • False positives decide adoption. A regex without validators flags invoice numbers. Tuning detectors is ongoing work, not a one-off.
    • Parsing hostile files as SYSTEM/root (zip, docx, pdf) adds attack surface: zip bombs, parser bugs. Go's memory safety helps; timeouts and size caps are still mandatory.
    • Employee monitoring is a legal and HR question (notice, scope, personal folders). That has to be settled before engineering starts.

Example 4: Tamper resistance. A user-mode agent can be stopped by a local administrator. Without kernel-level self-protection, any DLP we build covers only non-admin users. The fleets that need DLP most are the ones where that gap matters most.

Bottom line: most of the real-world value of DLP (USB control, encryption, posture) comes from Tiers 0 and 2. We get those anyway by building compliance reporting and policy enforcement, and those also serve many other needs. The DLP-specific part (Tier 3) costs the most and adds the least for us right now.


5. When to revisit

Reopen this assessment if any of the following becomes true:

  • A customer or audit requires content-aware DLP and will not accept an integration with an existing DLP product.
  • Desired-state compliance and enforcement with drift correction (see Roadmap) are shipped. Tier 1 visibility then becomes a natural, low-risk extension.
  • The organisation adopts Microsoft Purview / Defender. Reporting their DLP health from SentinelGo is then cheap.
  • A legal and HR position on content scanning of employee devices exists.

6. Guardrails if DLP work starts later

  • No cgo. Any native component is a separate, separately-signed deliverable with its own owner.
  • Never send matched content to the backend. Send detector type, count and file path only.
  • Scans run as background tasks with CPU and I/O throttling, size caps and per-file timeouts. They never run in the heartbeat path.
  • Advertise a capability (e.g. dlp_scan_v1) in AgentCapabilities only in the same change that implements it.