第三章:敏感数据分类框架 —— 结构化、半结构化、非结构化
做敏感数据识别这么多年,我见过最多的坑就是:一上来就想用一套规则搞定所有数据。你想想看,数据库里的身份证号和 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(半结构),识别器需要逐级拆解。
3.6 实操建议:怎么落地分类?
如果你现在要开始做敏感数据分类,我会建议这么一个路径:
- 盘点数据资产目录:先搞清楚有哪些数据库、文件服务器、邮件系统。不然你连对象都找不到。
- 按形态打标:对每个数据源标注是结构化/半结构化/非结构化,甚至可以细到字段级。
- 针对不同形态选识别策略:结构化用规则引擎,半结构化用解析+规则,非结构化上机器学习或 NLP。
- 建立交叉验证机制:同一敏感实体在不同形态中的识别结果要能联动,比如“手机号”在结构化表里命中后,在附件 PDF 里也要能排查出来。
关键认知:敏感数据分类不是一次性的。数据会变,业务系统会改,新的非结构化文档会不断产生。我建议每季度至少做一次增量扫描,把新增的字段和文件纳入分类体系。
好了,本章我们重点梳理了三种数据形态的特点、识别难点和个人踩过的坑。记住一句话:没有最好的识别技术,只有最适合当前数据形态的识别组合。下节我们聊聊怎么给敏感数据定级,那就是另一套逻辑了。