第2章 敏感数据分类:识别方法实战
做令牌化之前,你首先得知道什么数据需要保护。说白了,数据分类就是给数据贴标签——哪些是敏感、哪些可以公开、哪些死活不能出域。
我刚开始做数据安全那会儿,接过一个挺惨的案子。客户把所有用户身份证号都用 AES 加密存了,结果半年后审计发现——他们的日志里明文本地打印了这些号码。加密层做得再好,分类没做干净,一样漏。所以这一章,咱们把四大类敏感数据捋清楚,每种怎么认、怎么抓。
2.1 个人身份信息(PII)—— 最容易被忽视的雷区
PII 的概念其实很宽。不只是身份证号、手机号,凡是能直接或间接定位到个人的数据都算。你想想看,邮箱地址、社保号、护照信息,甚至设备指纹、IP 地址在某些场景下也是 PII。
- 直接标识符:姓名 + 身份证号/护照号/社保号组合
- 准标识符:出生日期、性别、邮编(单独不行,组合可再识别)
- 行为数据:浏览记录、搜索历史、位置轨迹
我个人习惯是用正则表达式先扫一遍字段名。比如字段叫 id_card、phone、email 的,基本就是 PII。但注意,中文名要小心——有些系统管「身份证号」叫 sfz 或 zjh,别漏了。
用 Python 写个简单的模式匹配器,扫描建表语句里包含 "id"、"no"、"num"、"身份证"、"手机" 的字段,能快速圈定第一批 PII。
2.2 财务数据 —— 不光有钱,还有流水
财务数据不光是信用卡号、银行账号。我遇到过一家电商公司,他们把订单金额和优惠券码也当敏感数据——因为优惠券码可以被脚本批量猜解,造成资损。所以识别财务数据时,要遵循“资金流向相关”原则。
| 财务数据类型 | 典型字段 | 识别难点 |
|---|---|---|
| 支付凭证 | 信用卡号、CVV、有效期 | PCI DSS 要求严格,卡号前六位(BIN)需保留,但须去标识化 |
| 交易流水 | 金额、时间、商户 ID | 虽然不含 PII,但可关联用户行为 |
| 账户余额 | 余额、冻结金额 | 常常与用户 ID 一起出现在缓存中 |
嗯,这里要注意:信用卡号有格式校验(Luhn 算法),你可以先用 Luhn 筛一遍,减少误报。我曾经写过一段代码,专门用来清洗生产环境日志里的卡号,核心就两句正则+ Luhn 验证——效果比纯正则好得多。
2.3 医疗数据 —— HIPAA 和国内合规双重压力
医疗数据最敏感的不是你挂号时填的病历本,而是受保护的健康信息(PHI)。包括诊断代码(ICD-10)、检验结果、影像 DICOM 头里的患者姓名、甚至医院内部的病案编号。
我参与过一个医疗器械对接项目,他们每天几十万条 HL7 消息,里面嵌着各种 PHI。最开始纯用关键词匹配,漏了不少。后来改成结构解析 + 正则组合拳——先解析 HL7 段,再对每个段应用不同规则。举个例子,PID 段(患者标识段)里直接扫姓名、地址;OBX 段(观察结果段)注意备注里会不会带患者姓名。
我曾经只扫结构化字段忽略了影像 DICOM 标签里的患者 Name 和 Patient ID,结果被合规团队打回重做。记住,DICOM 头里 0x0010,0x0010 这个 Tag 一定得标记为医疗敏感数据。
2.4 商业机密 —— 识别要靠业务规则
商业机密最头疼,因为它没有“标准格式”。可能是产品定价策略、客户名单、源代码、技术蓝图。我通常的做法是:先跟业务部门聊出分类清单,再辅助关键字搜索。
- 源代码:扫描代码仓库里的数据库连接串、、许可证文件
- 合同文档:关键字如“保密”、“NDA”、“甲方”、“净利润率”
- 市场策略:分析报告、定价表、合作伙伴列表
现实里最难的是“边界模糊”。举个例:一个普通的 Excel 表格,里面既有员工姓名(PII),又有产品报价(商业机密),那这个文件应该同时归属于两类。令牌化的时候要按最严格的保护等级来——我一般直接把它算作商业机密对待。
2.5 数据分类的实施方法论
光靠理论不行,得动手。我推荐三步走:
- 资产盘点:列出所有存储敏感数据的数据库、文件服务器、SaaS 应用
- 字段标记:对每张表的每个字段打上分类标签
- 自动扫描:用 DLP 工具或自写脚本定期扫描新增资产
下面这张图概括了我们识别四类敏感数据的完整流程:
不要一次性做全量扫描。从业务价值最高的库开始,比如支付库、用户中心。做完一批立马上线令牌化规则,再推下一批。迭代推进比“大跃进”稳妥得多。
2.6 常见的识别陷阱
最后分享几个踩过的坑:
- 误把“空字段”当非敏感:某些表里身份证号字段可能为空,但一旦填了就是敏感数据。分类时必须按列定义来,不能按当前数据来。
- 静态快照漏了动态视图:数据库视图、存储过程里的中间表也可能暴露敏感字段。我曾经漏掉一个逻辑视图,里面拼接了用户姓名和银行卡号。
- 多语言字段名混淆:英文叫
card_no,中文叫卡号,日文叫カード番号。如果你们的系统支持多语言,记得统一扫。
日志系统是重灾区。应用日志、审计日志、API 请求日志里经常出现明文敏感数据。我见过最夸张的一次,某个微服务在 INFO 级别直接打印了完整的用户请求体,包括密码明文。分类扫描时一定要把日志目录纳入资产清单。
说白了,分类不是一次性任务。业务在变,字段在加,合规要求也在更新。我的建议是:把分类规则做成自动化流水线的一部分,每次上线新表或新接口自动触发扫描。这样你才能睡个安稳觉。