跳到主要内容

PII 处理

问题

什么是 PII?数据分析中如何正确处理 PII?

答案

PII 定义

PII(Personally Identifiable Information)是指能够直接或间接识别特定个人的信息。

类型示例
直接标识符姓名、身份证号、手机号、邮箱
间接标识符IP 地址、设备 ID、Cookie ID
敏感 PII银行卡号、密码、医疗记录、生物识别
准标识符年龄 + 性别 + 邮编(组合可能识别个人)

PII 处理流程

PII 扫描

import re

# 简单的 PII 扫描规则
PII_PATTERNS = {
'手机号': re.compile(r'1[3-9]\d{9}'),
'身份证': re.compile(r'\d{17}[\dXx]'),
'邮箱': re.compile(r'[\w.+-]+@[\w-]+\.[\w.]+'),
'银行卡': re.compile(r'\d{16,19}'),
'IP地址': re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'),
}

def scan_pii(text: str) -> dict:
"""扫描文本中的 PII"""
results = {}
for pii_type, pattern in PII_PATTERNS.items():
matches = pattern.findall(text)
if matches:
results[pii_type] = matches
return results

# 扫描 SQL 查询结果中的 PII
sample_data = "用户张三,手机 13812345678,邮箱 alice@gmail.com"
print(scan_pii(sample_data))
# {'手机号': ['13812345678'], '邮箱': ['alice@gmail.com']}

数据分析中的 PII 处理建议

场景处理方式
用户行为分析使用哈希后的 user_id
导出报告聚合数据,不含个人信息
A/B 测试使用匿名标识符分桶
数据建模特征工程时去除 PII 列
共享给第三方静态脱敏 + 审批
BI 看板动态脱敏,角色控制
红线行为
  • ❌ 将含 PII 的数据导出到个人电脑
  • ❌ 在群聊/文档中共享含 PII 的截图
  • ❌ 使用真实 PII 作为测试数据
  • ❌ 未脱敏就将数据共享给外部

常见面试问题

Q1: 如何判断一个字段是否是 PII?

答案: 判断标准:该字段单独或与其他字段组合后能否识别到特定个人。

  • 手机号 → 直接识别 → PII
  • 年龄 → 单独不可识别 → 非 PII
  • 年龄 + 邮编 + 性别 → 组合可能识别 → 准标识符

Q2: 如何建立 PII 合规检查机制?

答案

  1. 数据目录标注:在元数据中标记 PII 字段
  2. 自动扫描:定期扫描数据仓库中的 PII
  3. 审批流程:访问 PII 数据需走审批
  4. SQL 审计:记录包含 PII 字段的查询
  5. 培训教育:定期对数据使用者进行合规培训

相关链接