Data Lineage Policy enforcement
Lineage: the series of families that somebody comes from
originally
Every activity is sent by Windows Agent to Cloud, so that inspection can
be done
Policy enforcement and lineage Graph will constructed using every
activity.
How cyberhaven Laptop client captures the events
Kernel-level drivers, Browser extensions/hooks, System API
| OS | Event | How |
|---|---|---|
| Windows | File uploaded on Chrome | Brower extensions |
| Windows | FTP sending file |
Agent hooks into network socket operations WFP - Windows Filtering Platform, Minifilter drivers |
| Linux | FTP sending file | Linux Netfilter/eBPF ((Extended Berkeley Packet Filter) and kernel modules to monitor system calls, file access, and socket activity seamlessly without destabilizing the kernel) |
What telemetry data Need to be sent?
user is uploading file to box.com after download from github.com
{
"source": "github.com" //Where did the data come from?
"action": "Copy/Paste/Print/Network Upload" //What is happening to the data?
"actor": "Userid/ProcessName/path/device state/time" //Who is doing it?
"destination": "box.com/FTP/USB drive" //Where is it going?
"classification": "code/financial record" //What is inside the data?
}
HLD
1. Tenant creates policy, which flows to Windows agent. Policy might
have default rules. Cyberhaven agent starts with policy AST
2. User downloads test.cpp from github.com. The endpoint agent tags this
file in the local data lineage store, recording its provenance (origin:
GitHub, classification: source code).
3. User attempts to upload test.cpp to box.com
4. Cyberhaven agent intercepts the network using OS primitives (like WFP
on Windows or browser hooks).
5. Agent checks the action against its cached, pre-fetched LocalPolicy
tree without making a synchronous cloud call.
6. Local policy engine returns an immediate allow or deny decision.
7. Telemetry Ingestion: Audit log, Alert is periodically or immediately
transmitted for event processing and analytics.
sequenceDiagram
autonumber
box Device (Endpoint)
actor User as Employee / Browser
participant Agent as Cyberhaven Agent
(WFP / Hooks)
participant Policy@{ "type" : "boundary" } as Local Policy Tree
end
box rgb(255, 245, 238) External Services
participant GH as GitHub.com
participant Web as Box.com
end
box rgb(240, 248, 240) Cloud Backend
participant PE@{ "type" : "control" } as PolicyEngine
participant LB@{ "type" : "control" } as Load Balancer (LB)
participant Kafka@{ "type" : "queue" } as Kafka / Ingestion
participant Proc@{ "type" : "control" } as Event Processing
end
PE ->> Agent: policy.json
Agent ->> Policy: Create local AST
policy tree
User->>GH: Download test.cpp
Note over Agent: Event Noted
GH-->>User: File downloaded
User ->> Web: upload test.cpp
Note over Agent: Event Noted
Agent->>Policy: Query local rules for action
Policy-->>Agent: Deny
Agent->>User: Block
Note over Agent, Proc: 3. Asynchronous Telemetry Pipeline
Agent->>LB: Send event metadata / incident snapshot
LB->>Kafka: Push event stream
Kafka->>Proc: Process logs for
global lineage graph
& analytics
Policy decisions are taken locally by cyberhaven client
Windows Agent pre-fetched policy rules from cloud, hence at start Policy
tree is present on agent.
These are baseline threat intelligence(default) + tenant specific
rules(defined by tenant).
Tenant Admin(Policy UI)
|
| DLP Rules(Default) +
| Tenant write his own rule
v
Policy engine
|
|policy.json
v
Cyberhaven Endpoint Agent
[Create its AST]
Allow/Deny Runtime
Data sent to cloud for Creating Lineage graph
Not everything is sent to cloud. Data is sent in batches.
For example: policy violations are sent