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 整体流程:一张图说清楚

下面这张图,是我在项目中实际用过的分级分类流程。从数据接入到标签落地,一共五个步骤:

特征数据分级分类流程图 特征数据分级分类流程 ① 数据接入 ② 敏感数据识别 ③ 分级判定 ④ 标签生成 ⑤ 权限策略联动 识别方法 • 正则规则匹配 • NER 模型识别 • 样本标注训练 分级标准 L4: 极度敏感 L3: 高度敏感 L2: 一般敏感 / L1: 非敏感 标签示例 feature_name: user_id_card data_level: L4 mask_rule: 保留前6后4

流程看起来简单,但每个环节都有细节。比如第②步敏感识别,我建议先跑一轮全量扫描,把历史数据都过一遍。第④步标签生成后,一定要做一轮人工抽检,防止机器误判。

4.6 避坑指南:我踩过的几个坑

最后分享几个实战中容易踩的坑,希望能帮你省点时间:

  • 坑一:分级粒度太粗。 我曾经只分了三档,结果 L3 的数据量占了 80%,等于没分。后来我加了 L2+、L3- 这样的子级,才把粒度控制好。
  • 坑二:标签只打一次。 数据是会变的。今天是非敏感的特征,明天可能因为业务调整变成敏感。所以标签要有版本号和过期时间,定期重新扫描。
  • 坑三:忽略特征组合的敏感性。 单个特征可能不敏感,但几个特征组合起来就能定位到个人。比如「年龄 + 性别 + 邮编」就能大概率确定一个人。这种组合敏感度,我建议在标签里加一个 combination_risk 字段来标记。

核心要点回顾:

  • 敏感数据识别:规则 + 模型 + 样本标注,三种方法配合使用
  • 分级标准:L1-L4 四级,支持场景化覆盖
  • 标签体系:元数据标签驱动权限策略,动态生效
  • 流程闭环:接入 → 识别 → 分级 → 打标 → 联动策略

分级分类这件事,做得好是「润物细无声」,做得不好就是「定时炸弹」。我个人觉得,花 30% 的精力在分级分类上,能省掉后面 70% 的安全运维成本。这笔账,怎么算都划算。