← 中文资源

简体中文版本

扫描数据库中未标注的个人数据

抽样文本列并用 Presidio 识别实体,输出疑似 PII 的清单,补齐缺失的分类标注。

阅读英文原文

概述

大多数公司知道结构化 PII 在哪里:users.email、customers.phone。真正的缺口是自由文本、客服备注、JSON 字段以及隐私评审之前留下的历史列。扫描把这些未知变成可复核的清单,为删除任务、访问控制和数据主体请求提供输入。

步骤

  1. 安装 Presidio 并确认模型可用:
pip install presidio-analyzer psycopg[binary]
python -c 'from presidio_analyzer import AnalyzerEngine; print(AnalyzerEngine().analyze(text="[email protected]", language="en"))'
  1. 在只读副本上抽样候选文本列,使用 0.6 以上的置信度阈值:
for result in analyzer.analyze(text=str(text), language="en"):
    if result.score >= 0.6:
        hits.append((row_id, result.entity_type, round(result.score, 2)))
  1. 按列和实体类型汇总,生成包含命中数和分类建议的 pii-inventory.csv。
  2. 将结论写入列注释,例如 COMMENT ON COLUMN support_tickets.notes IS 'PII: ...',让下游任务可以发现分类。

验证

预期清单中能识别出邮箱、电话、人名等实体,并标明所在列;抽查 20 条命中记录,确认误报比例可接受。列注释应出现在 information_schema 和数据目录同步结果中。

注意事项

  • 检测是概率性的,低置信度命中仍可能是个人数据,匿名化后的值也可能匹配模式。
  • 抽样可能漏掉稀有列,二进制与加密字段不在分析范围内。
  • 使用 TABLESAMPLE 与 LIMIT 控制扫描成本,绝不在主库上全表扫描。
  • 报告只保留计数与实体类型,不要把原始敏感值写入 CSV 或日志。