4. 数据分类与分级:敏感数据识别方法

数据分类分级,说白了就是先搞清楚你的数据「长什么样」「值多少钱」。DLP 策略配得再花哨,如果连哪些是敏感数据都认不出来,那全白搭。我见过不少团队一上来就写规则,结果把财务发工资的 Excel 当普通文档放行了,把公司前台打印的通讯录反而拦截了——这肯定不对。

所以咱们今天把敏感数据识别的底牌翻出来,讲透它。

4.1 为什么先做分类分级,再做策略

你想想看,DLP 引擎本质上是个「决策器」。

  • 分类解决「这是什么类型的数据」——合同?财务报表?源代码?
  • 分级解决「它有多重要」——公开级?内部级?机密级?

两个维度一交叉,你就知道:这份机密级技术文档外发时,必须触发审批流程;而一份公开级的市场白皮书,直接放行就行。

我自己的习惯:先让业务部门给出他们眼中的「高、中、低」分类清单,然后我去 IT 系统里跑一遍资产发现工具,核对实际数据分布。经常发现业务说的和实际存的不一样——相信我,这个坑踩过不止一次。

4.2 敏感数据识别六种主流方法

方法不复杂,但组合着用才有效。我按从「简单粗暴」到「精准打击」给你列出来:

方法 识别依据 常用场景 我的评价
关键词匹配 预定义敏感词列表 合同模板、身份证号关键词 快但不准,误报多
正则表达式 固定模式(如 18 位身份证) 银行卡号、手机号、邮箱 经典,但容易漏掉变种
数据指纹 精确哈希或部分哈希 机密文档库外泄识别 准确率高,维护成本也高
机器学习/文本分类 训练样本 & 特征向量 自然语言判断「这个是不是商业计划书」 效果好,需要持续标注样本
元数据标记 文件属性、标签、水印 Office 文档自定义属性、IRM 标记 源头标记最省事,但依赖上游系统配合
结构化数据扫描 数据库列名 + 行内容模式 财务系统、HR 系统的结构化敏感表 必须对接数据库,适合核心系统

嗯,这里面我有两个亲身体会。第一个,正则表达式看起来简单,但写不好就是灾难。我曾经见过一条正则写了 200 多个字符,结果在扫描几百万封邮件时把 CPU 吃满了——后来拆成了三个子表达式,性能才正常。第二个,机器学习方法在实战中其实被低估了,很多团队觉得它太黑盒,不敢用。但我告诉你:当你需要识别「商业计划书」这种语义概念时,关键词根本搞不定,ML 模型哪怕只有 85% 的准确率也值得上。

避坑指南:我曾经帮客户走了一遍数据发现流程,他们只用了正则匹配来识别「合同编号」,结果合同编号格式有三四种变体,漏掉了 40% 的合同。后来我建议他们合并元数据标记(文件名含“合同”二字)加上正则双重校验,漏报率直接降到 2% 以下。别迷信单一方法,组合拳才靠谱。

4.3 分类分级实战:拿身份证号举例

咱们实操一下。假设你要识别「中国居民身份证号」这个敏感数据类别。

首先定义它的特征:

  • 长度为 18 位(或老的 15 位)
  • 前 6 位是地址码(需要区域校验位)
  • 包含出生日期 8 位,早期以 19xx/20xx 为主
  • 最后 1 位是校验码(可以是数字或 X)
  • 通常出现在文本中,前后可能有空格、中文引号或冒号

然后写一个基础正则:

^\d{6}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$

这个表达式覆盖了出生日期范围,但注意:它只匹配连续文本中的身份证号,没有包边。真实场景中,你很可能要在邮件正文或附件里搜,那就要改一下边界条件:

(?<!\d)\d{6}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx](?!\d)

加上了前后负向零宽断言,防止误匹配一连串数字中的某一段。

4.4 分级:如何定义敏感等级

分类之后才是分级。分级标准最好跟你们公司已有的信息安全制度对齐。我常用的分级矩阵是这样的:

级别 定义 典型示例 外发策略推荐
L0 公开 可以随意对外传播 产品宣传册、公开白皮书 放行,不做检查
L1 内部 仅限内部使用,可对内传阅 内部周报、普通制度文件 记录日志,不拦截
L2 敏感 业务核心数据,泄露影响较大 客户信息表、源代码片段 触发人工审批
L3 机密 泄露将导致重大损失 并购方案、财务审计底稿 禁止外发,加密后授权次数

这里要注意:分级不是拍脑袋。我在实践中一般让业务owner、法务、安全三个角色一起签字确认分级标准,免得后期扯皮。而且分级最好在元数据层面打上标签——自动打标(基于规则) + 人工复核(抽样)是性价比最高的方式。

4.5 核心流程图:敏感数据识别全链路

下面这张图概括了从数据源到外发策略联动的完整识别路径。你可以把它当作本章的思维导图:

敏感数据识别全链路流程图 敏感数据识别全链路流程 数据源(文件/邮件/数据库) 内容扫描(关键字/正则) 指纹匹配(精确/近似) 智能分析(ML/语义) 分类分级引擎(合并结果 + 打标签) 外发策略联动(拦截/审批/放行) 说明:三种扫描方式可以并行运行,分类分级引擎会融合结果并给出最终的敏感等级标签。 元数据标记和结构化扫描也属于数据采集层,但为了清晰此处未单独画出。

4.6 识别规则的维护与迭代

定完规则不是终点。数据是活的,敏感数据的形态会变。我建议每个季度做一次规则有效性评审:

  1. 收集误报样本:从 DLP 审计日志里导出被拦截但实际合规的文档,分析正则或 ML 模型为什么判断错了。
  2. 收集漏报样本:从已知泄密事件中提取数据样本,反向验证现有规则能否命中。
  3. 更新关键词/正样本:把新的敏感词、新格式的身份证变体(比如带空格、带横杠)补充进规则库。
  4. 再训练(ML方案):如果有机器学习模型,把误报/漏报样本作为反例/正例重新训练一轮。
关键指标:我一般盯着两个数——误报率控制在 5% 以内,漏报率控制在 1% 以下。超过这个范围,说明规则需要动刀了。另外,别指望一次搞定,识别能力是螺旋上升的。

最后,别忘了跟业务部门搞好关系。你可能会需要在周末上线一批新规则,提前跟他们打个招呼,免得正扫描着就把他们的订单 Excel 拦了。嗯,这都是血泪经验换来的。