敏感数据分类分级: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 数据,在不同的分级下,暴露路径的处置策略完全不一样。L1 级别可以忽略,L4 级别必须立即隔离加审计。
分类分级的实操步骤
我自己的经验,三步走——
- 摸清家底:遍历数据库、文件存储、消息队列,发现所有字段。
- 打标签:按字段内容类型匹配 PII/PHI/PCI 规则。比如身份证号用正则
^\d{17}[\dX]。 - 审上下文:同一个字段在不同表或文件里,业务用途不同,分级可能不一样。这一步最容易被自动化工具骗过去。
我常用的一个小技巧: 先跑自动化工具做粗分类,再让业务方逐表确认上下文。工具能覆盖 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 的定时任务里。