Presidio遗漏的内容:GDPR合规PII检测所需的220多种实体类型
Microsoft Presidio提供大约40种默认实体识别器。对于处理以美国为中心的文档的美国部署,这涵盖了基本类别:社会安全号码(SSN)、美国护照、美国驾驶执照、信用卡、电子邮件地址、电话号码和人名。
对于欧盟部署,覆盖差距显著。GDPR适用于所有欧盟个人数据,无论国籍如何。处理自己公民数据的欧盟组织需要Presidio未提供的识别器。
默认的Presidio实体库
Presidio的默认识别器包括:
以美国为中心的标识符:
- 美国社会安全号码(SSN)
- 美国护照号码
- 美国驾驶执照号码(多个州格式)
- 美国银行账户号码
- 美国ITIN(个人纳税人识别号码)
- 美国医疗执照号码
通用标识符:
- 电子邮件地址
- 电话号码(以美国为中心的格式优先)
- IP地址
- 信用卡号码(Luhn算法)
- 加密钱包地址
- URL
通用文本实体:
- PERSON(基于NER)
- LOCATION(基于NER)
- ORGANIZATION(基于NER)
- DATE_TIME(基于NER)
有限的国际覆盖:
- 英国NHS号码
- 英国国家保险号码(NINO)
- 财务实体标识符(部分)
总计:约40种识别器
欧盟组织实际需要的内容
财务标识符: IBAN(国际银行账户号码)几乎出现在每个涉及支付、电汇、开票和工资单的欧盟商业文件中。IBAN格式因国家而异,但遵循国际标准(ISO 13616)。Presidio没有默认的IBAN识别器。
一家德国金融科技公司在每个交易文档中处理IBAN号码。如果没有IBAN识别,这些文档在激活信用卡检测的情况下被处理(检测卡号),但IBAN字段(主要的欧盟支付标识符)被完全忽略。
国家税务标识符:
- 德国Steueridentifikationsnummer:11位数字
- 法国NIR(Numéro d'Inscription au Répertoire):13个字符的字母数字
- 意大利Codice Fiscale:16个字符的字母数字,具有结构验证
- 西班牙NIF/NIE:9个字符,带字母后缀/前缀
- 荷兰BSN:9位数字,具有11位验证
这些都不在Presidio的默认实体库中。处理来自多个成员国的员工文件的欧盟工资处理器对其最敏感的财务标识符实际上是盲目的。
国家健康标识符:
- 英国NHS号码:10位数字,具有模11校验
- 法国社会保障号码(NIR):也作为健康ID
- 德国Krankenkassennummer:字母数字,特定于保险公司
- 意大利Codice Fiscale:也用作健康ID
- 荷兰BSN:也用于健康保险
整个欧盟的医疗保健组织需要这些标识符以实现与HIPAA等效的健康数据保护。Presidio提供英国NHS号码,但遗漏了大陆欧洲的健康ID。
欧盟驾驶执照格式: Presidio有美国驾驶执照识别器(特定于州)。欧盟驾驶执照格式根据指令2006/126/EC进行标准化,但在字母数字结构上因成员国而异。Presidio的默认设置中没有欧盟驾驶执照识别器。
增值税注册号码: 欧盟增值税号码出现在每个企业对企业的交易中。格式:国家代码(2个字母)+ 8-12个字母数字。Presidio没有增值税号码识别器。对于共享发票、合同和商业文件的欧盟企业,增值税号码是与注册企业实体及其董事相关联的标识符。
欧盟护照格式: Presidio中有美国护照识别,但欧盟护照格式(特别是机器可读区格式)未被覆盖。
自定义识别器开发的工程成本
当欧盟组织部署Presidio并发现实体覆盖差距时,通常的反应是自定义识别器开发。成本:
每个识别器的开发时间:
- 研究标识符格式:1-2小时
- 编写PatternRecognizer Python类:2-4小时
- 实现带验证逻辑的正则表达式:2-4小时
- 配置上下文词以提高精度:1-2小时
- 编写测试:2-3小时
- 在部署中集成和测试:1-2小时
每个识别器:9-17小时。
对于一家德国金融科技公司需要IBAN + Steuer-ID + 欧盟驾驶执照 + 德国增值税 + IBAN:
- 4个自定义识别器 × 平均13小时 = 52个工程小时
- 每小时€100:€5,200的自定义识别器开发
加上随着格式变化、新测试用例出现以及Presidio API更新需要修改识别器的持续维护。
在Presidio基础上实现欧盟GDPR覆盖的总成本:€5,200+初始+持续维护
替代方案:托管实体库
anonym.legal扩展了Presidio基础,维护了285种以上的实体类型——包括Presidio默认设置遗漏的特定于欧盟的标识符:
超出Presidio默认设置的覆盖亮点:
- IBAN(所有欧盟成员国格式)
- 欧盟成员国税务标识符(包括Steuer-ID、NIR、Codice Fiscale、NIF/NIE、BSN、PESEL等)
- 欧盟国家健康标识符
- 增值税号码(欧盟格式)
- 欧盟驾驶执照格式
- 欧洲护照格式
- 所有48种支持语言的实体变体
维护: 实体库更新作为托管服务的一部分进行推送。当德国引入新的税务标识符格式时,用户无需提交拉取请求即可获得识别器。
自定义扩展: 对于库中没有的特定于组织的标识符,自定义实体构建器允许在不编写Python代码的情况下添加模式。
德国金融科技示例
一家德国金融科技公司需要在客户文档中检测IBAN、BIC、德国税务ID(Steuer-ID)和德国商业注册号码(Handelsregisternummer)。
这4种实体类型的Presidio默认检测率:0%
不是低精度,也不是假阳性——零检测。这4种实体类型都不出现在Presidio的默认实体库中。
编写自定义识别器: 4个识别器 × 13小时 = 52小时 = €5,200的工程费用。
使用托管实体库覆盖所有4种: €180/年(专业计划)。
实现GDPR合规检测这些德国财务标识符的成本:
- Presidio路线:€5,200工程费用 + Presidio运营成本
- 托管服务路线:€180/年,开箱即用检测所有4种
第一年的差距是28倍。每年运营中,自定义识别器维护的工程时间增加了Presidio的成本,而托管服务的成本保持不变。
结论
Presidio的约40种默认识别器很好地服务于以美国为中心的用例。对于需要在成员国特定标识符上实现GDPR合规的欧盟部署,开箱即用的覆盖是不足的。这个差距要么通过自定义识别器开发(成本高,耗时)来填补,要么通过维护欧盟实体覆盖的托管服务作为订阅的一部分来填补。
对于合规性不可谈判且工程资源受限的欧盟组织,托管服务的预构建欧盟实体库在首次文档匿名化之前消除了50多个小时的自定义开发项目。
来源: