数据防泄漏 (dlp)
Headless 命令 — 不依赖桌面 GUI,直接使用核心包运行。适用于服务器、CI/CD、容器化等无桌面环境。
核心特性
- 🔍 内容扫描: 实时扫描内容中的敏感数据,匹配正则和关键词策略
- 🚨 事件管理: 查看所有 DLP 违规事件,按渠道和严重级别过滤
- ✅ 事件解决: 对违规事件进行审核和关闭处理
- 📊 DLP 统计: 扫描次数、拦截次数、告警次数、事件总数等指标
- 📜 策略管理: 创建、列出和删除 DLP 策略,支持自定义规则
概述
ChainlessChain CLI 数据防泄漏(DLP)模块提供内容级别的敏感数据保护。scan 命令根据已配置的策略扫描内容,匹配正则表达式和关键词规则,根据策略配置执行 allow(放行)、alert(告警)、block(拦截)或 quarantine(隔离)操作。
每次扫描命中策略都会生成事件记录。incidents 查看所有违规事件,resolve 对事件进行审核关闭。stats 提供全局统计。policy 子命令管理 DLP 策略的创建、列表和删除。
命令参考
dlp scan — 扫描内容
bash
chainlesschain dlp scan <content>
chainlesschain dlp scan "用户密码是 p@ssw0rd123" -c email -u user01
chainlesschain dlp scan "信用卡号 4111-1111-1111-1111" --json扫描内容是否违反 DLP 策略。返回是否放行、执行的动作、匹配策略数和事件列表。
dlp incidents — 查看事件
bash
chainlesschain dlp incidents
chainlesschain dlp incidents -c email -s high
chainlesschain dlp incidents --json列出所有 DLP 违规事件,支持按渠道和严重级别过滤。
dlp resolve — 解决事件
bash
chainlesschain dlp resolve <incident-id>
chainlesschain dlp resolve inc-001 -r "确认为误报,已排除"关闭指定违规事件,附带解决说明。
dlp stats — DLP 统计
bash
chainlesschain dlp stats
chainlesschain dlp stats --json显示 DLP 统计:扫描次数、拦截次数、告警次数、事件总数、未解决事件数。
dlp policy create — 创建策略
bash
chainlesschain dlp policy create <name>
chainlesschain dlp policy create "信用卡检测" \
-p "\d{4}-\d{4}-\d{4}-\d{4}" \
-k "visa,mastercard" \
-a block -s high创建 DLP 策略,指定正则模式、关键词、动作和严重级别。
动作类型:allow(放行)、alert(告警)、block(拦截)、quarantine(隔离)。
dlp policy list — 列出策略
bash
chainlesschain dlp policy list
chainlesschain dlp policy list --json列出所有 DLP 策略及其配置。
dlp policy delete — 删除策略
bash
chainlesschain dlp policy delete <policy-id>
chainlesschain dlp policy delete pol-001删除指定 DLP 策略。
数据库表
| 表名 | 说明 |
|---|---|
dlp_incidents | 违规事件(渠道、用户、严重级别、动作、匹配内容、解决状态) |
dlp_policies | DLP 策略(名称、正则模式、关键词、动作、严重级别、启用状态) |
系统架构
用户命令 → dlp.js (Commander) → dlp-engine.js
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
内容扫描 事件管理 策略引擎
(正则+关键词匹配) (记录/查看/解决) (创建/列出/删除)
▼ ▼ ▼
dlp_policies dlp_incidents dlp_policies关键文件
packages/cli/src/commands/dlp.js— 命令实现packages/cli/src/lib/dlp-engine.js— DLP 引擎库
测试
bash
npx vitest run __tests__/unit/dlp-engine.test.js
# 25 tests, all pass使用示例
场景 1:配置策略并扫描
bash
# 创建信用卡检测策略
chainlesschain dlp policy create "信用卡号检测" \
-p "\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}" \
-a block -s high
# 创建密码泄露策略
chainlesschain dlp policy create "密码检测" \
-k "password,密码,secret" \
-a alert -s medium
# 扫描内容
chainlesschain dlp scan "请将密码发送到 email"
chainlesschain dlp scan "卡号 4111-1111-1111-1111" --json场景 2:事件管理
bash
# 查看所有高严重级别事件
chainlesschain dlp incidents -s high
# 解决误报事件
chainlesschain dlp resolve inc-abc123 \
-r "确认为测试数据,非真实信用卡号"
# 查看统计
chainlesschain dlp stats --json故障排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 扫描总是放行 | 无策略配置 | 先使用 dlp policy create 创建策略 |
| "Incident not found" | 事件 ID 不存在 | 使用 dlp incidents 查看有效事件 ID |
| 策略不生效 | 策略已禁用 | 检查策略 enabled 状态 |
| 正则匹配失败 | 模式语法错误 | 验证正则表达式语法 |
安全考虑
- 实时扫描: 内容在传输前即被检测,防止敏感数据外泄
- 多级响应: 支持放行、告警、拦截、隔离四种响应级别
- 事件审计: 所有违规事件完整记录,支持事后审计
- 策略灵活性: 支持正则表达式和关键词的组合匹配规则
