敏感数据分类分级:PII、PHI、PCI 标准归纳总结

咱们做 DSPM,第一步就得搞清楚——数据到底是什么?

你没看错。很多团队一上来就铺扫描工具、画数据流图,结果连哪些字段是 PII、哪些是 PHI 都分不清。最后暴露路径找到了,但定性定级全乱套。我个人习惯,先把数据分类分级的标准吃透,再动手。

说白了,分类分级就是 DSPM 的“地图”。没有这张地图,你找的暴露路径全是盲人摸象。

三大敏感数据标准速览

业界最常见的敏感数据标准有三个:PII、PHI、PCI。它们各自覆盖什么?怎么区分?我整理了一张对比表。

标准 全称 典型字段 合规框架 我的经验点
PII 个人可识别信息 姓名、身份证号、手机号、邮箱、地址 GDPR、CCPA、个人信息保护法 注意“可识别”范围很宽,IP 地址也算
PHI 受保护的健康信息 病历、诊断结果、医保编号、基因数据 HIPAA、HITECH 医疗场景下,日期、年龄也可能成为 PHI
PCI 支付卡行业数据 卡号、有效期、CVV、磁条磁道数据 PCI DSS 存 CVV 就是违规,别问我怎么知道的
我曾经踩过的坑: 把客户的 IP 地址当成非敏感数据,结果 GDPR 罚款找上门来。PII 的定义比你想的“宽”。检查数据字典时,别忘了 device_id、user_agent 这类间接标识符。

分类分级的核心逻辑

光分类不行,还得分级。同一类数据,暴露在不同场景下,风险等级天差地别。

举个例子:员工姓名在通讯录里是公开的,但在离职分析报告里就是敏感。

我建议按“业务使用上下文 + 法规要求”来定级。下面这张图总结了分类分级的整体思路。

敏感数据分类分级框架 敏感数据标准体系 PII 个人可识别信息 姓名、身份证号 手机号、邮箱、地址 IP地址、设备ID PHI 受保护健康信息 病历、诊断结果 医保编号、基因数据 治疗日期、年龄 PCI 支付卡行业数据 卡号、有效期 CVV、磁条磁道 PIN、持卡人姓名 分级体系(示例) L1 - 公开 L2 - 内部 L3 - 敏感 L4 - 绝密

你想想看,同样的 PII 数据,在不同的分级下,暴露路径的处置策略完全不一样。L1 级别可以忽略,L4 级别必须立即隔离加审计。

分类分级的实操步骤

我自己的经验,三步走——

  1. 摸清家底:遍历数据库、文件存储、消息队列,发现所有字段。
  2. 打标签:按字段内容类型匹配 PII/PHI/PCI 规则。比如身份证号用正则 ^\d{17}[\dX]。
  3. 审上下文:同一个字段在不同表或文件里,业务用途不同,分级可能不一样。这一步最容易被自动化工具骗过去。
我常用的一个小技巧: 先跑自动化工具做粗分类,再让业务方逐表确认上下文。工具能覆盖 80%,剩下 20% 必须人工。千万别迷信全自动。

代码示例:用 Python 做 PII 模式匹配

这里给一个简单的 Pattern 判断示例,方便你在资产盘点脚本里直接用。

import re

def classify_field(value):
    # 中国身份证
    if re.match(r'^\d{17}[\dXx]$', value):
        return 'PII_L3'
    # 信用卡
    if re.match(r'^\d{4}-\d{4}-\d{4}-\d{4}$', value):
        return 'PCI_L4'
    # 手机号
    if re.match(r'^1[3-9]\d{9}$', value):
        return 'PII_L2'
    # 默认
    return 'UNKNOWN'

嗯,这里要注意:正则只能做初步判断。比如 123456789012345678 也能通过身份证正则,但实际可能是测试数据。所以我建议在匹配后加一个 验证位 校验。

避坑指南汇总

  • 别混淆 PII 和 PHI:医疗场景下,患者姓名 + 诊断结果才是 PHI。光有姓名没有诊断,算 PII。
  • 别漏了聚合数据:统计报表里的身份证号虽然脱敏了,但如果存在原始映射表,仍然算暴露路径。
  • 注意复合字段:比如“身份证号+银行卡号”同时出现,分类要取最高等级。
我记得有一次,客户把 PCI 数据误标成内部数据,CVV 明文存数据库。审计一问,全公司都惊了。分类分级真正做透才能防止这种事故。

最后再说一句,分类分级不是一次性的工作。数据字段会变、业务场景会变、法规也会变。建议每季度重新跑一次分类清单,我习惯把它塞进 CI/CD 的定时任务里。