Skip to main content

llm_kernel/dlp/
mod.rs

1//! Data-loss-prevention (DLP) primitives.
2//!
3//! Layered detection for outbound LLM traffic:
4//! - **L1** [`scan()`] — deterministic regex scan (secrets, Korean PII,
5//!   filesystem paths) returning byte spans, categories, severity, and an
6//!   overall [`Sensitivity`].
7//! - **L2** [`fingerprint`] (feature `dlp-fingerprint`) — cosine-match
8//!   outbound content against registered sensitive-document embeddings.
9//! - **L3** [`ContentClassifier`](classifier::ContentClassifier) — trait for
10//!   an optional local classifier on ambiguous cases.
11//! - **Policy** [`policy::lookup`] — map a provider
12//!   [`DataPolicy`] + [`Sensitivity`] to a [`PolicyAction`].
13//!
14//! ```
15//! use llm_kernel::dlp::{Sensitivity, scan};
16//!
17//! let report = scan("Authorization: Bearer abcdefghijklmnopqrstuvwxyz012345");
18//! assert!(report.sensitivity >= Sensitivity::Confidential);
19//! ```
20
21/// L3 — optional local classifier for ambiguous content.
22pub mod classifier;
23/// Policy resolution — `DataPolicy` + `Sensitivity` → `PolicyAction`.
24pub mod policy;
25/// L1 — deterministic content scan.
26pub mod scan;
27
28/// L2 — fingerprint matching of registered sensitive documents.
29#[cfg(feature = "dlp-fingerprint")]
30pub mod fingerprint;
31
32pub use crate::provider::policy::Sensitivity;
33pub use policy::{DataPolicy, ImagePolicy, PolicyAction, PolicyThreshold, lookup};
34pub use scan::{Finding, FindingCategory, ScanReport, Severity, Span, apply_redactions, scan};