4、特征数据分级分类:敏感数据识别、数据分级标准与标签体系
数据分级分类这件事,说实话,是特征平台安全里最容易被低估的一环。我见过不少团队,一上来就搞权限模型、搞加密,结果连自己手里有哪些敏感数据都说不清楚。你想想看,连敌人在哪都不知道,这仗怎么打?
我个人习惯把分级分类比作「数据安全的基石」。没有它,后面的权限策略、脱敏规则、审计追踪,全都是空中楼阁。今天我们就来聊聊,怎么把这块基石打扎实。
4.1 为什么非做不可?
先讲个我自己的经历。几年前我参与过一个金融风控特征平台的项目,上线第一天就被安全部门叫停了。原因很简单——特征表里混着用户的身份证号、银行卡号,但权限策略只分了「读」和「写」两级。结果一个做运营的同学,不小心把整张表导出到了本地。
嗯,这就是典型的分级缺失问题。没有分级,你就没法回答三个核心问题:
- 哪些数据需要重点保护?——敏感数据识别
- 保护到什么程度?——分级标准
- 怎么标记和管理?——标签体系
说白了,分级分类就是给数据做「安检」。不同级别的数据,走不同的通道,享受不同的待遇。
4.2 敏感数据识别:先找到「金子」和「地雷」
敏感数据识别,是分级分类的第一步。我常用的方法分三种:
4.2.1 基于规则的识别
这是最直接的方式。写正则表达式,匹配常见的敏感数据模式。比如:
# 身份证号(中国大陆 18 位)
^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
# 手机号(中国大陆)
^1[3-9]\d{9}$
# 银行卡号(16-19 位数字)
^\d{16,19}$
我在项目中遇到过一个问题:正则匹配的误报率其实不低。比如一段文本里恰好出现了 18 位数字,但它根本不是身份证号。所以后来我加了一层校验——比如身份证号要校验最后一位校验码,手机号要校验号段归属地。
4.2.2 基于机器学习的识别
当数据量大了以后,纯规则就有点吃力了。这时候可以上 NLP 模型,做命名实体识别(NER)。比如用 BERT 微调一个模型,专门识别特征列名、特征描述里的敏感信息。
我曾经在一个电商特征平台上试过,模型能识别出「用户最近30天消费金额」这种列名里隐含的「消费金额」是敏感信息。虽然模型训练成本高,但长期来看,维护成本比规则低。
4.2.3 基于样本标注的识别
还有一种取巧的办法:让业务方先标注一批样本。比如让产品经理圈出哪些特征列涉及 PII(个人身份信息),然后拿这些标注去训练一个分类器。说白了,就是「人机协作」——人负责定性,机器负责规模化。
4.3 数据分级标准:定好「红黄绿」
识别出敏感数据之后,下一步就是定级。我一般把数据分成四个级别,参考了金融行业的标准,但做了一些简化:
| 级别 | 名称 | 典型数据 | 访问控制要求 |
|---|---|---|---|
| L4 | 极度敏感 | 身份证号、银行卡号、密码、生物特征 | 仅限特定角色 + 动态脱敏 + 全量审计 |
| L3 | 高度敏感 | 手机号、邮箱、家庭地址、消费记录 | 按需申请 + 静态脱敏 + 抽样审计 |
| L2 | 一般敏感 | 用户昵称、设备型号、城市信息 | 默认脱敏 + 可申请原始数据 |
| L1 | 非敏感 | 商品ID、类目、时间戳、聚合统计 | 无需特殊管控 |
这里要注意一点:分级不是一成不变的。同一个特征,在不同场景下敏感度可能不同。比如「用户年龄」在推荐场景下是 L2,但在信贷场景下可能就是 L3。所以分级标准要支持「场景化覆盖」。
4.4 标签体系:给数据打上「身份证」
分级标准定好了,怎么落地到每个特征上?答案就是标签体系。我给每个特征列打上元数据标签,标签里包含分级信息、敏感类型、数据来源等。
一个典型的特征标签结构长这样:
{
"feature_name": "user_id_card",
"data_level": "L4",
"sensitive_type": "PII_ID_CARD",
"data_source": "user_profile_table",
"owner_team": "user_team",
"mask_rule": "保留前6后4",
"audit_required": true,
"expire_at": "2025-12-31"
}
标签体系的好处是:权限引擎可以直接读取标签,自动决定是否脱敏、是否审计、是否允许导出。我习惯把标签存储在元数据中心,特征平台启动时加载到内存,查询时走本地缓存,性能基本没损耗。
4.5 整体流程:一张图说清楚
下面这张图,是我在项目中实际用过的分级分类流程。从数据接入到标签落地,一共五个步骤:
流程看起来简单,但每个环节都有细节。比如第②步敏感识别,我建议先跑一轮全量扫描,把历史数据都过一遍。第④步标签生成后,一定要做一轮人工抽检,防止机器误判。
4.6 避坑指南:我踩过的几个坑
最后分享几个实战中容易踩的坑,希望能帮你省点时间:
- 坑一:分级粒度太粗。 我曾经只分了三档,结果 L3 的数据量占了 80%,等于没分。后来我加了 L2+、L3- 这样的子级,才把粒度控制好。
- 坑二:标签只打一次。 数据是会变的。今天是非敏感的特征,明天可能因为业务调整变成敏感。所以标签要有版本号和过期时间,定期重新扫描。
- 坑三:忽略特征组合的敏感性。 单个特征可能不敏感,但几个特征组合起来就能定位到个人。比如「年龄 + 性别 + 邮编」就能大概率确定一个人。这种组合敏感度,我建议在标签里加一个
combination_risk字段来标记。
核心要点回顾:
- 敏感数据识别:规则 + 模型 + 样本标注,三种方法配合使用
- 分级标准:L1-L4 四级,支持场景化覆盖
- 标签体系:元数据标签驱动权限策略,动态生效
- 流程闭环:接入 → 识别 → 分级 → 打标 → 联动策略
分级分类这件事,做得好是「润物细无声」,做得不好就是「定时炸弹」。我个人觉得,花 30% 的精力在分级分类上,能省掉后面 70% 的安全运维成本。这笔账,怎么算都划算。