Sensitive Data Protection 使用信息类型(也称为 infoType)来定义需要在扫描中查找的内容。infoType 是一种敏感数据类型,如姓名、电子邮件地址、电话号码、身份证号码和信用卡号等等。infoType 检测器是指依据 infoType 的匹配条件进行匹配的相应检测机制。
选择 infoType 的最佳实践
了解您的数据是保护数据的第一步,也是至关重要的一步。最佳做法是,您应仅收集、存储和处理出于业务需求而需要的信息。通过确定您处理的数据,您可以针对业务、用户以及数据安全和隐私保护状况做出明智的决策。
您的某些业务用例可能需要某些敏感信息,而其他用例可能不需要。没有一种解决方案能够支持所有使用情形。 因此,Sensitive Data Protection 可让您灵活控制要扫描的数据类型。如果您使用信息类型进行去标识化或遮盖,还可以控制数据转换的时间和方式。
一般准则
选择 infoType 时,请考虑以下一般性准则。
使用通用 infoType 代替特定 infoType
如果您不需要扫描结果显示检测到的具体信息类型,请考虑在检查配置中使用一般信息类型,而不是具体信息类型。如需了解在请求中使用常规 infoType 检测器的优势,请参阅本页中的常规和特定 infoType 检测器。
如需查看通用 infoType 的完整列表及其包含的特定 infoType,请参阅通用 infoType。
您无需收集的敏感信息
您企业中的每项服务都应仅收集该服务所需的数据。例如,您企业中的某些服务不需要收集财务信息。对于这些服务,请考虑启用 CREDIT_CARD_NUMBER
、FINANCIAL_ACCOUNT_NUMBER
等行业类别 FINANCE
中的 infoType 检测器。
您需要收集但不想与团队广泛分享的信息
收集个人信息可能存在正当的用例,但不应与团队广泛分享。例如,提交支持服务工单的客户可能会向您提供联系信息,以便您联系他们来解决任何问题。您不希望团队中查看工单的每个人都看到个人身份信息 (PII)。不妨考虑启用 PII
类型类别中的 infoType 检测器(如 PHONE_NUMBER
、EMAIL_ADDRESS
)和其他 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 检测器。虽然以下信息类型在某些情况下很有用,但与不包含这些信息类型的请求相比,包含这些信息类型的请求的运行速度会慢得多:
PERSON_NAME
FEMALE_NAME
MALE_NAME
FIRST_NAME
LAST_NAME
DATE_OF_BIRTH
LOCATION
STREET_ADDRESS
ORGANIZATION_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 的简单扫描请求。请注意,inspectConfig
中指定了 PHONE_NUMBER
检测器,用于指示 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 检测器内置在敏感数据保护中。其中包括适用于某个国家/区域特有的敏感数据类型的检测器以及适用于全球通用数据类型的检测器。我们还提供通用 infoType,以帮助您简化配置。
- 自定义 infoType 检测器 - 您自行创建的检测器。自定义 infoType 检测器有三种:
- 小型自定义字典检测器 - Sensitive Data Protection 用作匹配依据的简单字词列表。如果您有最多几万个字词或短语的列表,请使用小型自定义字典检测器。如果您预计字词列表不会发生显著变化,也建议首选小型自定义字典检测器。
- 大型自定义字典检测器 - 由敏感数据保护功能使用 Cloud Storage 或 BigQuery 中存储的大量字词或短语生成。如果您有一个包含高达数千万个字词或短语的庞大列表,请使用大型自定义字典检测器。
- 正则表达式 (regex) 检测器 - 使敏感数据保护能够基于正则表达式模式检测匹配项。
此外,Sensitive Data Protection 还包含检查规则的概念,因此您可使用以下规则微调扫描结果:
- 排除规则 - 让您可以通过向内置或自定义 infoType 检测器添加规则来减少返回的结果数量。
- 热词规则 - 让您可以通过向内置或自定义 infoType 检测器添加规则来增加返回的结果数量或更改其可能性值。
内置 infoType 检测器
内置 infoType 检测器内置于敏感数据保护中,包括特定国家或区域敏感数据类型的检测器,例如法国的 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 检测器的完整列表,请参阅 InfoType 检测器参考。
您也可以通过调用 Sensitive Data Protection 的 infoTypes.list
方法查看包含所有内置 infoType 检测器的完整列表。
语言支持
国家/地区特定的 infoType 支持英语和各个国家/地区的语言。大多数全球 infoType 支持多种语言。使用您的数据测试敏感数据保护,以验证它是否符合您的要求。
一般 infoType 检测器和特定 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 检测器。召回率是指真正例实例数与相关实例总数的比率。
您可以简化敏感数据保护请求,因为您不必指定需要扫描的每个特定 infoType。例如,仅
GOVERNMENT_ID
infoType 检测器就包含 100 多个不同的 infoType 检测器。您不太可能达到每个请求 150 个 infoType 检测器的限制。
如果 Sensitive Data Protection 发布新的 infoType 并将其添加到现有配置中已指定的一般 infoType,则 Sensitive Data Protection 会自动将该新 infoType 纳入扫描范围。您无需手动将新发布的信息类型添加到现有配置中。
一般 infoType 和特定 infoType 之间存在多对多关系。也就是说,一个通用 infoType 可以包含许多特定 infoType,而一个特定 infoType 可以属于许多通用 infoType。如需查看一般 infoType 及其包含的特定 infoType 的完整列表,请参阅一般 infoType。
自定义 infoType 检测器
自定义 infoType 检测器有三种:
此外,Sensitive Data Protection 还包含检查规则,您可以通过将以下规则添加到现有检测器来微调扫描结果:
小型自定义字典检测器
使用小型自定义字典检测器(也称为“常规自定义字典检测器”)可以匹配最多几万个字词或短语的短列表。小型自定义字典可以作为自己的唯一检测器。
当您想要扫描的字词或短语列表不易通过正则表达式或内置检测器匹配时,则可以使用自定义字典检测器。例如,假设您想扫描那些通常用分配的房间名称而不是房间号码称呼的会议室(例如州或地区名称、地标、虚构名称等),您可以创建一个小型自定义字典检测器,并加入由这些会议室名称组成的列表。Sensitive Data Protection 可以扫描内容中是否包含每个房间名称,并在上下文中遇到其中一个房间名称时返回匹配项。如需详细了解 Sensitive Data Protection 如何匹配字典字词和短语,请参阅创建常规自定义字典检测器中的“字典匹配详情”部分。
如需详细了解小型自定义字典 infoType 检测器的工作原理及其实际应用示例,请参阅创建常规自定义字典检测器。
大型自定义字典检测器
如果您要扫描大量的字词或短语,或者您的字词或短语列表经常变化,请使用大型自定义字典检测器(也称为“存储的自定义字典检测器”)。大型自定义字典检测器可以匹配多达数千万个字词或短语。
大型自定义字典检测器的创建方式与正则表达式自定义检测器和小型自定义字典检测器不同。每个大型自定义字典都由两部分组成:
- 您创建和定义的短语列表。该列表以文本文件的形式存储在 Cloud Storage 中或以列的形式存储在 BigQuery 表中。
- 生成的字典文件,由敏感数据保护根据您的短语列表生成。字典文件存储在 Cloud Storage 中,由源短语数据的副本和帮助进行搜索和匹配的布隆过滤器组成。您无法直接修改这些文件。
在创建字词列表并使用敏感数据保护生成自定义字典后,您可以像使用其他 infoType 检测器一样,使用大型自定义字典检测器启动或安排扫描。
如需详细了解大型自定义字典检测器的工作原理及其实际应用示例,请参阅创建存储的自定义字典检测器。
正则表达式
通过正则表达式 (regex) 自定义 infoType 检测器,您可以创建自己的 infoType 检测器,使 Sensitive Data Protection 能够基于正则表达式模式检测匹配项。例如,假设您的医疗记录编号采用 ###-#-#####
形式。您可以定义一个正则表达式模式,如下所示:
[1-9]{3}-[1-9]{1}-[1-9]{5}
然后,敏感数据保护功能将匹配如下所示的项:
123-4-56789
您还可以指定要分配给每个自定义 infoType 匹配项的可能性。也就是说,当 Sensitive Data Protection 与您指定的序列匹配时,它将分配您指示的可能性。这很有用,因为如果您的自定义正则表达式定义了一个非常常见的序列,可能容易与其他一些随机序列匹配,您肯定不希望 Sensitive Data Protection 将每个匹配项都标记为 VERY_LIKELY
。这样做会降低扫描结果的置信度,还可能导致对错误信息进行匹配和去标识化。
如需详细了解正则表达式自定义 infoType 检测器及其实际应用,请参阅创建自定义正则表达式检测器。
检查规则
您可以使用检查规则优化现有 infoType 检测器(内置或自定义)返回的结果。需要以某种方式(无论是增添还是删减现有 infoType 检测器)强化 Sensitive Data Protection 返回的结果时,就可以使用检查规则。
这两种检查规则是:
- 排除规则
- 热词规则
如需详细了解检查规则,请参阅修改 InfoType 检测器以优化扫描结果。
排除规则
通过排除规则,您可以通过向内置或自定义 infoType 检测器添加规则来减少返回结果的数量或降低精确率。排除规则可以帮助减少 InfoType 检测器返回的噪声或其他不需要的结果。
例如,如果您要扫描数据库中的电子邮件地址,可以添加自定义正则表达式形式的排除规则,指示敏感数据保护功能排除以“@example.com”结尾的所有结果。
排除规则不能应用于对象 infoType。
如需详细了解排除规则,请参阅修改 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 开头 - 但社会保障号中不允许以 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
的确定性。 - 缺少上下文,这降低了其属于两者的确定性。
后续步骤
Sensitive Data Protection 团队会定期发布新的 infoType 检测器和组。如需了解如何获取最新的内置 infoType 列表,请参阅列出内置 infoType 检测器。