文档 DLP 管线:守得住的掩码
文档 DLP:三层检测、贯穿文档的编号占位符、彻底的重新嵌入、AES-256-GCM 的原文 —— 两道显式的 unmask 关卡。Census:F-DLP-1。

文档只进来一次;占位符留下
AI workspace 的知识库里进来的是真文档 —— 合同、HR 信函、发票。有些带着谁都不该随手看到的数据,而 LLM 永远不该引用它们。Simmetric Chat 对启用了该功能的 workspace 的回答:一条文档扫描管线,把敏感实体改写为贯穿全文的编号占位符,并把唯一一份干净原文加密保存。设计的重点在最后半句 —— 占位符留下:按构造,掩码是单向的,于是“文档”与“可检索的语料”从设计上就成了两个不同的对象。
本文以操作者遇到它的方式走一遍这条管线:异步扫描、三层检测、一个占位符保证了什么、重新嵌入时发生什么、原文如何保存,以及两道 unmask 关卡(聊天中的重组、预览里的 unmask)—— 让干净副本只在有意图时可达。
Enterprise 版可选功能,按 workspace 启用,默认关闭(workspace 开关 + 评估门槛)。数据:FACT-CENSUS.md F-DLP-1。扫描:异步、排队、在摄取完成后
当某 workspace 启用了文档扫描,每个上传的文档在摄取完成后经过一次异步的 pg-boss 扫描 —— 上传路径保持响应,而扫描表现得像平台里的每个后台作业一样:排队、重试、可观察。遗留语料有自己的回填(需通过评估门槛、在界面里显式确认),限速在活体扫描之下,而且可恢复:一列标记(dlpScannedAt)把每次重跑圈定在从未被扫描过的文档上。
检测:三层
检测是一条三层管线,每层各司其职:
- 管理员可配置的正则模式 —— 由 admin 维护的模式服务(任意模式的开关、测试预览)。
- 对固定格式意大利/欧洲标识符的校验和验证 —— Codice Fiscale(含 omocodia 校验)、P.IVA、IBAN:这些类别是确定性的;没通过校验和的字符串不是标识符,因此普通数字永远不会触发它们。
- 对名字/地址的 LLM 上下文检测 —— 上下文类别经过模型;它们的召回率是量测并写进文档的数值,而不是一句承诺。
两个被点名的类别是确定性(校验和)的,两个是上下文(LLM)的 —— 评估门槛量测的正是这个划分:启用它的质量标准 = 确定性类别上零被抑制的误报,上下文类别的召回率逐次运行都有记录。
这篇文章永远不会印出的那个数字:一个“存在多少种 PII”的计数。census 合约是明确的 —— 查不到出处的数字不发货;类别是被点名的,代码说明它检测什么。
掩码:无法再次匹配的编号占位符
被检测到的实体成为贯穿文档的编号占位符([PERSON_1]、[GOV_ID_2]…)。三个属性让它有意义:
- 全文跨文档一致 —— 同一实体在整个文档里是同一个占位符;LLM 继续读的是一份一致的文档。
- 幂等 —— 掩码是自己的不动点:占位符语法永远无法再次匹配,重扫不会产出
[PERSON_1_1]一类的残渣。 - 重写是彻底的 —— chunk 以掩码后的文本重写,FTS 向量重新计算,嵌入在掩码文本上重新生成。没有任何未涂黑的向量保持可检索。
加密:唯一干净副本是 AES-256-GCM
原文与每个实体值都以加密形态落地(AES-256-GCM,平台的密钥合约)。这是管线诚实的原因:掩码不是“在视图层里藏起来” —— 未涂黑的字节在存储里根本不以明文形态存在。加密原文是唯一干净副本。
两道 unmask 关卡
干净副本恰好可以经由两道显式关卡可达:
- 聊天中重组 —— 流结束时、恰好一次,服务器在最终消息里重组占位符,只对在来源文档的 workspace 里持有
dlp:unmask权限的用户生效。重组后的文本由 SSE 的done载荷携带;widget 访客永远收不到重组文本(在服务端强制,不是靠藏一个按钮)。 - 预览 unmask —— 文档文本端点默认给掩码后的文本;unmask 参数只经由关卡梯队生效(参数在场、workspace 开关打开、角色解析出权限)。每一个未命中的分支仍然返回掩码文本并给 200 —— 这个端点从来不是权利的预言机。
审计矩阵
每条读路径都被行为测试钉住(文本视图、OCR 预览、综合、引用、widget、MCP 工具、全文搜索、导出、管理员的重新嵌入)。三个最硬的钉子是“永远不”的臂:widget 访客、引用表面与 MCP 工具拿到的是掩码文本,永远不是重组文本。审计日志类别(平台的不变事件日志,F-AUDIT-1)记录触碰这个表面的操作。
继续阅读
操作指南带着完整的操作者走读 —— 开关、评估运行器、回填、每个端点 —— 在 /zh/docs/document-dlp-pipeline:
- Document DLP pipeline —— 操作指南
- 本文数据:
FACT-CENSUS.md行 F-DLP-1(管线)、F-DLP-2(无出处计数的裁定)、F-AUDIT-1(事件日志)
Provenance:Simmetric Chat 的 docs/DLP_DOCUMENT_PIPELINE.md(v0.28.1,Phase 192 DLP-01..06)、packages/server/src/services/(dlpPatternService/dlpChecksum/quota services)、encryptionService —— 处于 census 固定的文档状态(SHA aca5b8ff)。