Sensitive Data Protection 使用信息类型(或 infoType)来定义要扫描的内容。infoType 是一种敏感数据类型,如姓名、电子邮件地址、电话号码、身份证号码和信用卡号等等。infoType 检测器是指依据 infoType 的匹配条件进行匹配的相应检测机制。
选择 infoType 的最佳实践
了解数据是保护数据的第一步,也是关键的一步。最佳做法是,您应仅收集、存储和处理有业务需求的信息。通过识别您正在处理的数据,您可以针对业务、用户以及数据安全和隐私状况做出明智的决策。
您的某些业务用例可能需要某些敏感信息,而其他用例可能不需要。没有一种解决方案能够支持所有应用场景。 因此,Sensitive Data Protection 提供了对要扫描的数据类型的灵活控制。如果您使用 infoType 进行去标识化或遮盖,您还可以控制何时以及如何转换数据。
一般准则
选择 infoType 时,请考虑以下一般准则。
使用通用 infoType 代替特定 infoType
如果您不需要扫描结果显示检测到的特定 infoType,请考虑在检查配置中使用通用 infoType,而不是特定 infoType。如需了解在请求中使用常规 infoType 检测器的优势,请参阅本页面上的常规和特定 infoType 检测器。
如需查看通用 infoType 及其包含的特定 infoType 的完整列表,请参阅通用 infoType。
您无需收集的敏感信息
业务中的每项服务都应仅收集该服务所需的数据。例如,您业务中的某些服务不需要收集财务信息。对于这些服务,请考虑启用 infoType 检测器,例如 CREDIT_CARD_NUMBER、FINANCIAL_ACCOUNT_NUMBER 以及行业类别 FINANCE 中的其他 infoType。
您需要收集但不希望与团队广泛共享的信息
收集个人信息可能有有效的用例,但您不应与团队广泛分享这些信息。例如,提交支持服务工单的客户可能会向您提供联系信息,以便您联系他们解决任何问题。您不希望团队中查看工单的所有人都看到个人身份信息 (PII)。考虑启用 infoType 检测器,例如 PHONE_NUMBER、EMAIL_ADDRESS 以及类型类别 PII 中的其他 infoType。
受行业、数据隐私权或管辖区法规约束的敏感数据类别
某些信息类型因其签发方式或用途而被视为敏感信息。在其他情况下,情境信息和受众特征信息会被视为受保护类别。这些类型的信息在收集、使用和管理方式上可能会受到额外的限制。请考虑启用以下类别的 infoType 检测器:
在相似的 infoType 之间进行选择
在选择类似的 infoType 检测器时,请考虑以下事项。
护照
如果您不需要扫描特定国家/地区的护照标识符,请选择通用检测器:PASSPORT。
某些特定国家/地区的护照检测器(例如 UK_PASSPORT)可用。不过,某些特定国家/地区的护照检测器只能识别具有特定格式或存在上下文线索的护照。
用户姓名
在扫描用户姓名时,请在大多数用例中使用 PERSON_NAME,而不是 FIRST_NAME 或 LAST_NAME。
PERSON_NAME 是人名检测器。包括单字名称和全名。此检测器会尝试使用各种技术(包括自然语言理解)来检测姓名,例如 Jane、Jane Smith 和 Jane Marie Smith。FIRST_NAME 和 LAST_NAME 是此检测器的子集,用于尝试识别名称的各个部分。这些检测器的发现结果始终是 PERSON_NAME 发现结果的子集。
日期和时间
如果您不需要扫描所有日期,不妨考虑使用 DATE_OF_BIRTH 等有针对性的日期检测器。此检测器会尝试识别表明日期与某人的出生日期相关的上下文。
DATE 检测器会尝试查找所有日期,无论上下文如何。它还会标记相对日期,例如今天或昨天。同样,TIME 会尝试查找所有时间戳。
位置
如果您不需要扫描所有位置,请考虑使用 STREET_ADDRESS,而不是 LOCATION 检测器。STREET_ADDRESS 检测器会尝试查找完全限定的地址,这些地址通常比大致位置更精确,并且可以被视为更敏感。
LOCATION infoType 检测器会尝试查找任何位置,无论上下文如何,例如巴黎或加拿大。
需要上下文的 infoType 检测器
许多 infoType 检测器需要存在上下文线索,然后才能识别匹配项。如果内置 infoType 检测器未标记您希望标记的内容,因为这些内容附近没有出现上下文线索,请考虑改用 GENERIC_ID 或自定义 infoType 检测器。
缺乏通用行业定义的信息类型
某些信息类型缺乏通用的行业定义。例如,病历号、账号、PIN 码和安全码。对于这些类型,请考虑使用 GENERIC_ID、FINANCIAL_ACCOUNT_NUMBER 和 MEDICAL_RECORD_NUMBER 等 infoType。这些检测器结合使用实体检测和上下文来查找潜在的敏感元素。
延迟时间较长的 infoType 检测器
避免启用不需要的 infoType 检测器。虽然以下 infoType 在某些情况下很有用,但这些 infoType 可能会导致请求的运行速度比不包含这些 infoType 的请求慢得多:
PERSON_NAMEFEMALE_NAMEMALE_NAMEFIRST_NAMELAST_NAMEDATE_OF_BIRTHLOCATIONSTREET_ADDRESSORGANIZATION_NAME
始终明确指定 infoType 检测器。请勿使用空的 infoTypes 列表。
如何使用 infoType
Sensitive Data Protection 在其扫描配置中使用 infoType 检测器来确定要检查的内容以及如何转换发现结果。显示或报告扫描结果时也会使用 infoType 名称。
例如,如果您想在文本块中查找电子邮件地址,则可以在检查配置中指定 EMAIL_ADDRESS infoType 检测器。如果要隐去文本块中的电子邮件地址,您可以在检查配置和去标识化配置中指定 EMAIL_ADDRESS 来指示如何隐去或转换该类型。
此外,您还可以结合使用内置和自定义 infoType 检测器,从扫描结果中排除一部分电子邮件地址。首先,创建一个名为 INTERNAL_EMAIL_ADDRESS 的自定义 infoType,并将其配置为排除内部测试电子邮件地址。然后,您可以设置扫描以纳入 EMAIL_ADDRESS 的结果,再添加排除规则以排除与 INTERNAL_EMAIL_ADDRESS 匹配的任何结果。如需详细了解自定义 infoType 检测器的排除规则和其他功能,请参阅创建自定义 infoType 检测器。
Sensitive Data Protection 提供了一组内置 infoType 检测器,您可以按名称指定这些检测器,每个检测器都列在 InfoType 检测器参考文档中。这些检测器使用各种方法来发现每种类型并对其进行分类。例如,一些类型要求进行模式匹配,一些类型可能有数学校验和,一些类型有特殊的数字限制,还有一些类型则可能有具体的前缀或结果上下文。
示例
设置 Sensitive Data Protection 以扫描内容时,您需要在扫描配置中添加要使用的 infoType 检测器。
例如,以下 JSON 和代码示例演示了向 DLP API 发出的简单扫描请求。请注意,PHONE_NUMBER 检测器是在 inspectConfig 中指定的,它会指示 Sensitive Data Protection 扫描给定字符串中的手机号码。
C#
如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
JSON 输入:
POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/content:inspect?key={YOUR_API_KEY}
{
"item":{
"value":"My phone number is (415) 555-0890"
},
"inspectConfig":{
"includeQuote":true,
"minLikelihood":"POSSIBLE",
"infoTypes":{
"name":"PHONE_NUMBER"
}
}
}
当您向指定端点发送上述请求时,Sensitive Data Protection 会返回以下内容:
JSON 输出:
{
"result":{
"findings":[
{
"quote":"(415) 555-0890",
"infoType":{
"name":"PHONE_NUMBER"
},
"likelihood":"VERY_LIKELY",
"location":{
"byteRange":{
"start":"19",
"end":"33"
},
"codepointRange":{
"start":"19",
"end":"33"
}
},
"createTime":"2018-10-29T23:46:34.535Z"
}
]
}
}
您必须在检查配置中指定参考文档中列出的特定 infoType。如果您未指定任何 infoType,Sensitive Data Protection 会使用仅用于测试目的的默认 infoType 列表。默认列表可能不适合您的应用场景。
如需详细了解如何使用 infoType 检测器扫描内容,请参阅其中一个有关检查、遮盖或去标识化的操作方法主题。
确定性和测试
系统在报告结果时会提供一个称为可能性的确定性分数。可能性分数表示结果与相应类型匹配的可能性有多高。例如,如果类型仅与模式匹配,可能会返回较低的可能性;如果类型与模式匹配且旁边有肯定的上下文,则会返回较高的可能性。由于这个原因,您也许会注意到同一个结果可能以较低的得分匹配多种类型。此外,如果结果匹配不充分,或者旁边有否定的上下文,可能就不会出现或其确定性可能较低。例如,如果发现结果与指定 infoType 的结构匹配,但未通过 infoType 的校验和,则可能不会报告该发现结果。或者,如果结果与多种 infoType 匹配,但上下文显示其与其中一种类型的匹配度更高,系统将仅针对该类型报告此结果。
如果您测试不同的检测器,可能会发现系统不会报告虚构数据或样本数据,因为虚构数据或样本数据无法通过足够多的检查。
infoType 检测器的种类
Sensitive Data Protection 包含多种 infoType 检测器,所有这些检测器都汇总在此处:
- 内置 infoType 检测器内置于 Sensitive Data Protection 中。它们包括针对特定国家/地区或特定区域的敏感数据类型以及全球适用的数据类型的检测器。通用 infoType 也有助于简化配置。
- 自定义 infoType 检测器 - 您自行创建的检测器。自定义 infoType 检测器有三种:
- 小型自定义字典检测器是 Sensitive Data Protection 匹配的简单字词列表。如果您有最多几万个字词或短语的列表,请使用小型自定义字典检测器。如果您预计字词列表不会发生显著变化,也建议首选小型自定义字典检测器。
- 大型自定义字典检测器由 Sensitive Data Protection 使用存储在 Cloud Storage 或 BigQuery 中的大量字词或短语列表生成。如果您有一个包含高达数千万个字词或短语的庞大列表,请使用大型自定义字典检测器。
- 正则表达式 (regex) 检测器使 Sensitive Data Protection 能够根据正则表达式模式检测匹配项。
如需优化扫描结果,您可以创建检查规则。
内置 infoType 检测器
内置 infoType 检测器内置于 Sensitive Data Protection 中,包括针对特定国家或区域的敏感数据类型的检测器,例如法国 Numéro d'Inscription au Répertoire (NIR) (FRANCE_NIR)、英国驾照号码 (UK_DRIVERS_LICENSE_NUMBER) 和美国社会保障号 (US_SOCIAL_SECURITY_NUMBER)。它们还包括全球适用的数据类型,例如人名 (PERSON_NAME)、电话号码 (PHONE_NUMBER)、电子邮件地址 (EMAIL_ADDRESS) 和信用卡号 (CREDIT_CARD_NUMBER)。
请务必更新内置 infoType 检测器列表。如需当前支持的内置 infoType 检测器的完整列表,请参阅 InfoType 检测器参考。
您还可以通过调用 Sensitive Data Protection 的 infoTypes.list 方法来查看所有内置 infoType 检测器的完整列表。
检测技术
为了检测与内置 infoType 对应的内容,Sensitive Data Protection 使用了各种技术,包括模式匹配、校验和验证、机器学习和上下文分析。例如,为了检测 CREDIT_CARD_NUMBER infoType,Sensitive Data Protection 会检查已知的发卡机构前缀、验证校验和、分析字符长度,并考虑潜在卡号出现的上下文。
Sensitive Data Protection 演示是一款基于 Web 的应用,可用于测试内置 infoType 检测器。
语言支持
国家/地区特定的 infoType 支持英语和各个国家/地区的语言。大多数全球 infoType 支持多种语言。使用您的数据测试 Sensitive Data Protection,以验证其是否符合您的要求。
通用和特定 infotype 检测器
通用 infoType 检测器是一种检测器,其定义比典型 infoType 检测器更广泛,可以匹配各种潜在敏感信息类型。通用 infoType 检测器是具有共同属性或用途的特定 infoType 检测器的超集。例如,DRIVERS_LICENSE_NUMBER infoType 检测器可以检测与 GERMANY_DRIVERS_LICENSE_NUMBER 和 CANADA_DRIVERS_LICENSE_NUMBER infoType 匹配的内容。
在许多情况下,常规 infoType 检测器还可以找到特定 infoType 检测器无法找到的匹配项。例如,PASSPORT 检测器比特定国家/地区的护照检测器更擅长查找护照号码,后者有时需要存在上下文线索或特定格式的内容。
在检查配置中,您可以使用通用 infoType 检测器代替特定 infoType 检测器。Sensitive Data Protection 会根据您在请求中指定的检测器来显示结果。例如,如果您检查的字符串与 GERMANY_DRIVERS_LICENSE_NUMBER infoType 匹配,并且您在请求中同时扫描了 DRIVERS_LICENSE_NUMBER 和 GERMANY_DRIVERS_LICENSE_NUMBER,则您会获得同一字符串的两个发现结果:一个针对 DRIVERS_LICENSE_NUMBER,另一个针对 GERMANY_DRIVERS_LICENSE_NUMBER。但是,如果您在请求中仅扫描了 DRIVERS_LICENSE_NUMBER,则检查结果仅显示 DRIVERS_LICENSE_NUMBER 的发现结果。
使用常规 infoType 检测器具有以下优势:
在许多情况下,通用 infoType 检测器的召回率高于特定 infoType 检测器。召回率是指真正例实例数占相关实例总数的比例。
您可以简化 Sensitive Data Protection 请求,因为您不必指定需要扫描的每个特定 infoType。例如,仅
GOVERNMENT_IDinfoType 检测器就包含 100 多个不同的 infoType 检测器。您不太可能达到每个请求 150 个 infoType 检测器的上限。
如果 Sensitive Data Protection 发布了新的 infoType,并将其添加到现有配置中已指定的通用 infoType,则 Sensitive Data Protection 会自动将新的 infoType 纳入其扫描范围。您无需手动将新发布的 infoType 添加到现有配置中。
通用 infoType 和特定 infoType 之间存在多对多关系。也就是说,一个通用 infoType 可以包含许多特定 infoType,而一个特定 infoType 可以属于许多通用 infoType。如需查看通用 infoType 及其包含的特定 infoType 的完整列表,请参阅通用 infoType。
自定义 infoType 检测器
自定义 infoType 检测器有三种:
如需优化扫描结果,您可以创建检查规则。
小型自定义字典检测器
使用小型自定义字典检测器(也称为“常规自定义字典检测器”)可以匹配最多几万个字词或短语的短列表。小型自定义字典可以作为自己的唯一检测器。
当您想要扫描的字词或短语列表不易通过正则表达式或内置检测器匹配时,则可以使用自定义字典检测器。例如,假设您想扫描那些通常用分配的房间名称而不是房间号码称呼的会议室(例如州或地区名称、地标、虚构名称等),您可以创建一个小型自定义字典检测器,并加入由这些会议室名称组成的列表。Sensitive Data Protection 可以扫描您的内容,查找每个会议室名称,并在上下文中遇到其中一个名称时返回匹配项。如需详细了解 Sensitive Data Protection 如何匹配字典字词和短语,请参阅创建常规自定义字典检测器的“字典匹配细节”部分。
如需详细了解小型字典自定义 infoType 检测器的工作原理以及实际示例,请参阅创建常规自定义字典检测器。
大型自定义字典检测器
如果您要扫描大量的字词或短语,或者您的字词或短语列表经常变化,请使用大型自定义字典检测器(也称为“存储的自定义字典检测器”)。大型自定义字典检测器可以匹配多达数千万个字词或短语。
大型自定义字典检测器的创建方式与正则表达式自定义检测器和小型自定义字典检测器不同。每个大型自定义字典都由两部分组成:
- 您创建和定义的短语列表。该列表以文本文件的形式存储在 Cloud Storage 中或以列的形式存储在 BigQuery 表中。
- 生成的字典文件,由 Sensitive Data Protection 根据您的短语列表构建。字典文件存储在 Cloud Storage 中,包含源短语数据的副本以及布隆过滤器,有助于搜索和匹配。您无法直接修改这些文件。
创建字词列表并使用 Sensitive Data Protection 生成自定义字典后,您可以使用大型自定义字典检测器启动或安排扫描,其方式与其他 infoType 检测器类似。
如需详细了解大型自定义字典检测器的工作原理及其实际应用示例,请参阅创建存储的自定义字典检测器。
正则表达式
借助正则表达式 (regex) 自定义 infoType 检测器,您可以创建自己的 infoType 检测器,使 Sensitive Data Protection 能够根据正则表达式模式检测匹配项。例如,假设您的医疗记录编号采用 ###-#-##### 形式。您可以定义一个正则表达式模式,如下所示:
[1-9]{3}-[1-9]{1}-[1-9]{5}
然后,Sensitive Data Protection 会匹配如下内容:
123-4-56789
您还可以指定要分配给每个自定义 infoType 匹配项的可能性。也就是说,当 Sensitive Data Protection 匹配您指定的序列时,它会分配您指定的可能性。这非常有用,因为如果您的自定义正则表达式定义了一个足够常见的序列,它很容易与其他一些随机序列匹配,您不希望 Sensitive Data Protection 将每个匹配项都标记为 VERY_LIKELY。这样做会降低扫描结果的置信度,还可能导致对错误信息进行匹配和去标识化。
如需详细了解正则表达式自定义 infoType 检测器及其实际应用,请参阅创建自定义正则表达式检测器。
检查规则
您可以使用检查规则优化现有 infoType 检测器(内置或自定义)返回的结果。如果需要以某种方式(通过添加到现有 infoType 检测器或从中排除)增强 Sensitive Data Protection 返回的结果,则检查规则会很有用。
如需详细了解检查规则,请参阅修改 InfoType 检测器以优化扫描结果。
排除规则
通过排除规则,您可以通过向内置或自定义 infoType 检测器添加规则来减少返回结果的数量或降低精确率。排除规则可以帮助减少 InfoType 检测器返回的噪声或其他不需要的结果。
例如,如果您扫描数据库以查找电子邮件地址,则可以添加自定义正则表达式形式的排除规则,以指示 Sensitive Data Protection 排除以“@example.com”结尾的所有发现结果。
如需详细了解排除规则,请参阅修改 InfoType 检测器以优化扫描结果。
热词规则
通过热词规则,您可以通过向内置或自定义 infoType 检测器添加规则来增加返回结果的数量或提高准确率。热词规则可以有效地帮助您放宽现有的 infoType 检测器规则。
例如,假设您要扫描医疗数据库中的患者姓名。您可以使用 Sensitive Data Protection 的内置 PERSON_NAME infoType 检测器,但这会导致 Sensitive Data Protection 匹配所有人员姓名,而不仅仅是患者姓名。为解决此问题,您可以添加一个热词规则,该规则采用正则表达式自定义 infoType 的形式,用于在潜在匹配项的第一个字符附近的一定字符范围内查找“患者”一词。然后,您可以向匹配该模式的结果分配“极有可能”这一可能性,因为这些结果符合您的特殊标准。
如需详细了解热词规则,请参阅修改 InfoType 检测器以优化扫描结果。
示例
如需更深入地了解 infoType 匹配结果的方式,请查看以下示例。这些示例会匹配一系列数字来确定其是美国社会保障号还是美国个人纳税人识别号。请注意,这些示例适用于内置 infoType 检测器。创建自定义 infoType 检测器时,请指定用于确定扫描匹配项可能性的条件。
示例 1
"SSN 222-22-2222"
针对 VERY_LIKELY 报告较高的可能性分数 US_SOCIAL_SECURITY_NUMBER,原因如下:
- 采用的是标准的社会保障号格式,这提高了确定性。
- 旁边有上下文(“SSN”),这提高了其为
US_SOCIAL_SECURITY_NUMBER的确定性。
示例 2
"999-99-9999"
针对 US_SOCIAL_SECURITY_NUMBER 报告较低的可能性分数 VERY_UNLIKELY,原因如下:
- 采用的是标准格式,这提高了确定性。
- 它以 9 开头,这在社会保障号中是不允许的,因此降低了确定性。
- 缺少上下文,这降低了确定性。
示例 3
"999-98-9999"
针对 US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER 报告可能性分数 POSSIBLE,针对 US_SOCIAL_SECURITY_NUMBER 报告可能性分数 VERY_UNLIKELY,原因如下:
- 具有
US_SOCIAL_SECURITY_NUMBER和US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER的标准格式。 - 以 9 开头且有另一个校验位,这提高了其属于
US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER的确定性。 - 缺少上下文,这降低了其属于两者的确定性。
调整规则
调整规则可以根据发现结果出现的上下文提高(也称为提升)或降低发现结果的可能性值,从而帮助您提高检测准确率。
例如,您可以使用调整规则来提高 GENERIC_ID 发现结果在与 DOCUMENT_TYPE/CONTEXT/FINANCE 匹配的文档中出现时的可能性值。
如需了解详情,请参阅调整规则。
后续步骤
Sensitive Data Protection 团队会定期发布新的 infoType 检测器和组。如需了解如何获取最新的内置 infoType 列表,请参阅列出内置 infoType 检测器。