敏感数据识别:PII分类、分级标准与资产盘点

做数据脱敏,第一步不是写代码,而是搞清楚——你到底在保护什么?

我见过不少团队,上来就搞动态脱敏工具,结果上线第一天就漏了。为什么?因为连哪些字段算敏感数据都没定义清楚。今天这章,咱们就把这个地基打牢。

一、PII(个人身份信息)分类

PII 这个词,圈里人都知道。但具体哪些算 PII,很多人其实模棱两可。我个人习惯把它分成三个层次:

类别 定义 典型字段 示例
直接标识符 单独就能定位到具体个人 身份证号、手机号、邮箱、护照号 110101199001011234
准标识符 组合后能锁定个人 姓名+生日+性别+邮编 张三 + 1990-01-01 + 男 + 100001
敏感属性 涉及隐私或安全 银行账号、医疗记录、生物特征 622202******1234

关键点:准标识符最容易被人忽略。你以为「姓名+生日」不算敏感?组合起来就是一把钥匙。我在项目中遇到过,某电商平台只脱敏了身份证号,结果攻击者用「姓名+手机号+收货地址」反推出了用户画像。

二、敏感数据分级标准

光分类还不够,你得给数据定个「危险等级」。我一般推荐四级制,简单粗暴:

  • L1 - 公开数据:公司官网、产品介绍、公开报告。脱敏?不需要。
  • L2 - 内部数据:员工通讯录、内部文档。脱敏看场景,但至少要做访问控制。
  • L3 - 敏感数据:客户订单、交易记录、部分PII。必须脱敏,尤其是导出或测试环境。
  • L4 - 核心数据:身份证、银行卡、医疗记录、生物特征。最高防护等级,动态脱敏+审计+加密三件套。

我的经验:很多公司把 L3 和 L4 混在一起管,结果就是「该严的不严,该松的也松」。建议你画一条红线——凡是涉及法律合规(比如 GDPR、个人信息保护法)的字段,一律按 L4 处理。

三、数据资产盘点方法

好了,分类和分级都有了。但你知道你的数据库里到底有哪些敏感字段吗?

说实话,大部分公司都不知道。我曾经帮一家金融客户做盘点,他们号称「已经梳理过」,结果我随手一查,三个核心业务表里躺着明文身份证号,连加密都没做。

盘点方法,我总结成四步走:

  1. 自动扫描:用工具(比如 DataSunrise、Imperva、甚至自己写脚本)扫描所有数据库,按正则匹配身份证、手机号、邮箱等模式。
  2. 人工复核:自动扫描会有误报。比如「12345678901」可能被当成手机号,但其实是测试数据。需要人工过一遍。
  3. 字段打标:给每个字段贴上标签,比如 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"
  1. 持续更新:业务在变,字段在加。我建议每季度做一次全量盘点,每次上线新表必须走敏感字段审批流程。

避坑指南:我曾经遇到一个项目,团队用 Excel 管理敏感字段清单。结果版本混乱,有人改了字段名没更新清单,脱敏策略直接失效。后来我强制要求:敏感字段清单必须和数据库元数据绑定,用自动化工具维护,别靠人肉。

四、知识体系总览

下面这张图,把咱们这章的核心逻辑串起来了。你可以把它贴在工位上,每次做脱敏前看一眼:

敏感数据识别知识体系 敏感数据识别知识体系 PII 分类 直接标识符 准标识符 敏感属性 分级标准 L1 - 公开数据 L2 - 内部数据 L3 - 敏感数据 L4 - 核心数据 资产盘点 自动扫描 人工复核 字段打标 持续更新 核心逻辑 分类 → 分级 → 盘点 → 打标 → 持续治理 三者缺一不可,否则脱敏策略就是空中楼阁

五、实战中的常见坑

最后,分享几个我踩过的坑,希望能帮你省点时间:

  • 坑一:只扫数据库,不扫日志和备份。 日志里经常明文记录请求参数,备份文件更是敏感数据重灾区。我见过一个案例,攻击者就是从备份文件里拖走了全量用户数据。
  • 坑二:分级标准太细。 有人搞了七八级,结果没人记得住。我建议最多四级,再多就失控了。
  • 坑三:盘点一次就完事。 业务在变,字段在加。你想想看,半年前的盘点结果,现在还有多少可信度?

一个小技巧:每次上线新表,强制要求开发人员在建表 SQL 里加上敏感字段注释。比如 -- PII_DIRECT L4,这样后续扫描工具可以直接解析,省去大量人工复核时间。