第三章:敏感数据分类框架 —— 结构化、半结构化、非结构化

做敏感数据识别这么多年,我见过最多的坑就是:一上来就想用一套规则搞定所有数据。你想想看,数据库里的身份证号和 PDF 合同里的身份证号,能是同一种处理方式吗?显然不是。分类,是所有识别工作的地基。今天我们就聊聊最常见的三种数据形态:结构化、半结构化、非结构化。

3.1 先理清概念:三种数据长什么样?

我习惯用一个生活化的例子来理解:
结构化数据——好比 Excel 表格,每一行、每一列都规规矩矩,字段名、数据类型、长度都是定义好的。
半结构化数据——有点像填了一半的问卷,有些部分有固定格式,有些部分自由填写。典型的就是 JSON、XML、HTML。
非结构化数据——就是一堆散乱的文件、图片、视频、邮件正文,没有统一的模式约束。

类型 典型案例 识别难度 典型敏感字段举例
结构化 关系型数据库表 低(模式明确) 身份证号、手机号、银行卡号
半结构化 JSON/XML/日志 中(需解析标签) 埋点数据中的设备ID、请求体中的用户信息
非结构化 Word/PDF/图片 高(需 NLP 或 OCR) 合同中的签名、简历中的家庭住址
一个小提示:很多团队只关注结构化数据,认为半结构和非结构太“乱”管不了。但泄露事件中,非结构化文档的占比其实非常高——比如员工随手把客户名单放在共享文件夹里。

3.2 结构化数据:识别效率最高,但陷阱也多

结构化数据的敏感字段识别,说白了就是匹配元数据 + 正则。我个人习惯先看表注释和字段名,命中“idcard”“phone”“name”这些关键词再上内容检查。速度最快,误报也少。

但我要提醒你一个坑:字段名不靠谱。我曾经在一个项目中遇到一张表,字段名叫“remark”,注释写着“备注”,结果里面存了整条客户信息——包括身份证号。光靠元数据肯定漏。所以我的做法是:元数据规则 + 内容采样验证,双保险。

注意事项:结构化的“结构”不一定可信。特别是老旧系统的表,字段名可能胡乱缩写,或者一个字段存了多个值(比如把地址和电话拼在一起)。一定要结合内容抽样检查。

3.3 半结构化数据:难点在解析与嵌套

JSON 和 XML 看起来有层次,但字段的值可能是另一个嵌套结构。比如一个用户 JSON 里,“contacts”是个数组,里面每个元素又包含 name、phone 等字段。正则直接打在序列化后的字符串上,很容易误匹配。

我的经验是分两步走:
1. 先解析成层级路径(比如 JSONPath、XPath)。
2. 再在叶子节点上做内容识别。

# 伪代码示例:对半结构化数据按路径识别
for each json_object:
    for path, value in flatten_json(json_object):
        if path.endswith('phone'):
            if match_regex(value, phone_pattern):
                mark_as_sensitive(path, value)

这里有个容易忽略的地方:半结构化的 key 本身也可能泄露敏感信息。比如一个字段名叫“password_hash”,虽然值是个哈希,但命名暴露了字段用途。所以除了内容,字段路径也要纳入敏感词库。

3.4 非结构化数据:真正的“硬骨头”

非结构化数据占企业数据总量的 80% 以上。处理它,不是靠正则能搞定的。文本需要 NLP 实体识别,图片需要 OCR,音视频更麻烦。

我参与过一家金融公司的敏感数据盘点项目。对方把所有历史合同(PDF 版)交给我们,里面既有扫描件也有电子版。扫描件 OCR 后误识别率一度高达 30%,很多“张三”被识别成了“张二”。怎么办?后来我们加了上下文校验——比如附近有“身份证号”关键词且符合校验规则的,才认定为人名实体。靠谱多了。

  • 文本类(Word、txt、邮件正文):用命名实体识别 + 正则,注意长文档的段落分割。
  • 图片类(PDF扫描件、截图):OCR 是第一步,但切图精度很重要。我建议优先用结构化布局检测,把表格区域单独识别。
  • 音视频类:先做语音转文字或视频关键帧提取,再走文本识别流程。算力成本极高,一般只在重点审计场景使用。

3.5 分类框架的核心逻辑:按形态选技术

下面这张图展示了我常用的敏感数据分类识别路径。同一份数据可能包含多种形态,比如一封邮件(非结构)里挂了一个 Excel(结构)和一个 JSON(半结构),识别器需要逐级拆解。

敏感数据分类识别流程框架 敏感数据分类识别框架 原始数据源 结构化数据 半结构化数据 非结构化数据 识别方法 元数据解析 + 字段名词典 正则匹配 + 校验位验证 识别方法 JSONPath/XPath 路径分析 叶子节点内容 + key 敏感词 识别方法 NLP 实体识别 + OCR 上下文校验 + 分段处理 敏感数据清单 混合文档场景注意 一个文件可能包含多种形态 如邮件 = 正文(非结构) + 附件(结构/半结构)

3.6 实操建议:怎么落地分类?

如果你现在要开始做敏感数据分类,我会建议这么一个路径:

  1. 盘点数据资产目录:先搞清楚有哪些数据库、文件服务器、邮件系统。不然你连对象都找不到。
  2. 按形态打标:对每个数据源标注是结构化/半结构化/非结构化,甚至可以细到字段级。
  3. 针对不同形态选识别策略:结构化用规则引擎,半结构化用解析+规则,非结构化上机器学习或 NLP。
  4. 建立交叉验证机制:同一敏感实体在不同形态中的识别结果要能联动,比如“手机号”在结构化表里命中后,在附件 PDF 里也要能排查出来。

关键认知:敏感数据分类不是一次性的。数据会变,业务系统会改,新的非结构化文档会不断产生。我建议每季度至少做一次增量扫描,把新增的字段和文件纳入分类体系。

好了,本章我们重点梳理了三种数据形态的特点、识别难点和个人踩过的坑。记住一句话:没有最好的识别技术,只有最适合当前数据形态的识别组合。下节我们聊聊怎么给敏感数据定级,那就是另一套逻辑了。