敏感数据识别:PII分类、分级标准与资产盘点
做数据脱敏,第一步不是写代码,而是搞清楚——你到底在保护什么?
我见过不少团队,上来就搞动态脱敏工具,结果上线第一天就漏了。为什么?因为连哪些字段算敏感数据都没定义清楚。今天这章,咱们就把这个地基打牢。
一、PII(个人身份信息)分类
PII 这个词,圈里人都知道。但具体哪些算 PII,很多人其实模棱两可。我个人习惯把它分成三个层次:
| 类别 | 定义 | 典型字段 | 示例 |
|---|---|---|---|
| 直接标识符 | 单独就能定位到具体个人 | 身份证号、手机号、邮箱、护照号 | 110101199001011234 |
| 准标识符 | 组合后能锁定个人 | 姓名+生日+性别+邮编 | 张三 + 1990-01-01 + 男 + 100001 |
| 敏感属性 | 涉及隐私或安全 | 银行账号、医疗记录、生物特征 | 622202******1234 |
关键点:准标识符最容易被人忽略。你以为「姓名+生日」不算敏感?组合起来就是一把钥匙。我在项目中遇到过,某电商平台只脱敏了身份证号,结果攻击者用「姓名+手机号+收货地址」反推出了用户画像。
二、敏感数据分级标准
光分类还不够,你得给数据定个「危险等级」。我一般推荐四级制,简单粗暴:
- L1 - 公开数据:公司官网、产品介绍、公开报告。脱敏?不需要。
- L2 - 内部数据:员工通讯录、内部文档。脱敏看场景,但至少要做访问控制。
- L3 - 敏感数据:客户订单、交易记录、部分PII。必须脱敏,尤其是导出或测试环境。
- L4 - 核心数据:身份证、银行卡、医疗记录、生物特征。最高防护等级,动态脱敏+审计+加密三件套。
我的经验:很多公司把 L3 和 L4 混在一起管,结果就是「该严的不严,该松的也松」。建议你画一条红线——凡是涉及法律合规(比如 GDPR、个人信息保护法)的字段,一律按 L4 处理。
三、数据资产盘点方法
好了,分类和分级都有了。但你知道你的数据库里到底有哪些敏感字段吗?
说实话,大部分公司都不知道。我曾经帮一家金融客户做盘点,他们号称「已经梳理过」,结果我随手一查,三个核心业务表里躺着明文身份证号,连加密都没做。
盘点方法,我总结成四步走:
- 自动扫描:用工具(比如 DataSunrise、Imperva、甚至自己写脚本)扫描所有数据库,按正则匹配身份证、手机号、邮箱等模式。
- 人工复核:自动扫描会有误报。比如「12345678901」可能被当成手机号,但其实是测试数据。需要人工过一遍。
- 字段打标:给每个字段贴上标签,比如
PII_DIRECT、PII_QUASI、L3、L4。我习惯用 YAML 配置文件管理:
# sensitive_fields.yaml
tables:
- name: "user_info"
fields:
- name: "id_card"
type: "PII_DIRECT"
level: "L4"
- name: "phone"
type: "PII_DIRECT"
level: "L4"
- name: "birthday"
type: "PII_QUASI"
level: "L3"
- name: "order"
fields:
- name: "bank_card"
type: "PII_DIRECT"
level: "L4"
- 持续更新:业务在变,字段在加。我建议每季度做一次全量盘点,每次上线新表必须走敏感字段审批流程。
避坑指南:我曾经遇到一个项目,团队用 Excel 管理敏感字段清单。结果版本混乱,有人改了字段名没更新清单,脱敏策略直接失效。后来我强制要求:敏感字段清单必须和数据库元数据绑定,用自动化工具维护,别靠人肉。
四、知识体系总览
下面这张图,把咱们这章的核心逻辑串起来了。你可以把它贴在工位上,每次做脱敏前看一眼:
五、实战中的常见坑
最后,分享几个我踩过的坑,希望能帮你省点时间:
- 坑一:只扫数据库,不扫日志和备份。 日志里经常明文记录请求参数,备份文件更是敏感数据重灾区。我见过一个案例,攻击者就是从备份文件里拖走了全量用户数据。
- 坑二:分级标准太细。 有人搞了七八级,结果没人记得住。我建议最多四级,再多就失控了。
- 坑三:盘点一次就完事。 业务在变,字段在加。你想想看,半年前的盘点结果,现在还有多少可信度?
一个小技巧:每次上线新表,强制要求开发人员在建表 SQL 里加上敏感字段注释。比如 -- PII_DIRECT L4,这样后续扫描工具可以直接解析,省去大量人工复核时间。