敏感数据保护使用信息类型(也称 infoType)来定义它扫描的内容。infoType 是一种敏感数据类型,如姓名、电子邮件地址、电话号码、身份证号码和信用卡号等等。infoType 检测器是指依据 infoType 的匹配条件进行匹配的相应检测机制。
如何使用 infoType
敏感数据保护在扫描配置中使用 infoType 检测器来确定要检查的内容以及如何转换发现结果。显示或报告扫描结果时也会使用 infoType 名称。
例如,如果要在文本块中查找电子邮件地址,您可以在检查配置中指定 EMAIL_ADDRESS
这种 infoType 检测器。如果要隐去文本块中的电子邮件地址,您可以在检查配置和去标识化配置中指定 EMAIL_ADDRESS
来指示如何隐去或转换该类型。
此外,您可以结合使用内置和自定义的 infoType 检测器来从扫描结果中排除一部分电子邮件地址。首先,创建一个名为 INTERNAL_EMAIL_ADDRESS
的自定义 infoType,并将其配置为排除内部测试电子邮件地址。然后,您可以设置扫描以纳入 EMAIL_ADDRESS
的结果,再添加排除规则以排除与 INTERNAL_EMAIL_ADDRESS
匹配的任何结果。如需详细了解自定义 infoType 检测器的排除规则和其他功能,请参阅创建自定义 infoType 检测器。
敏感数据保护提供了一组按名称指定的内置 infoType 检测器,每个检测器都列在 InfoType 检测器参考文档中。这些检测器使用各种方法来发现每种类型并对其进行分类。例如,一些类型要求进行模式匹配,一些类型可能有数学校验和,一些类型有特殊的数字限制,还有一些类型则可能有具体的前缀或结果上下文。
示例
在设置敏感数据保护以扫描内容时,请添加要在扫描配置中使用的 infoType 检测器。
例如,以下 JSON 和代码示例演示了对 DLP API 的简单扫描请求。请注意,inspectConfig
中指定了 PHONE_NUMBER
检测器,它会指示敏感数据保护在给定字符串中扫描手机号码。
C#
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
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"
}
}
}
当您将上述请求发送到指定端点时,敏感数据保护会返回以下内容:
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 可能非常耗时或费用高昂,具体取决于需要扫描的内容量而定。
如需详细了解如何使用 infoType 检测器扫描内容,请参阅其中一个有关检查、遮盖或去标识化的操作方法主题。
确定性和测试
系统在报告结果时会提供一个称为可能性的确定性分数。可能性分数表示结果与相应类型匹配的可能性有多高。例如,如果类型仅与模式匹配,可能会返回较低的可能性;如果类型与模式匹配且旁边有肯定的上下文,则会返回较高的可能性。由于这个原因,您也许会注意到同一个结果可能以较低的得分匹配多种类型。此外,如果结果匹配不充分,或者旁边有否定的上下文,可能就不会出现或其确定性可能较低。例如,如果结果与指定 infoType 的结构匹配,但未通过 infoType 的校验和,系统可能就不会报告此结果。或者,如果结果与多种 infoType 匹配,但上下文显示其与其中一种类型的匹配度更高,系统将仅针对该类型报告此结果。
如果您测试不同的检测器,可能会发现系统不会报告虚构数据或样本数据,因为虚构数据或样本数据无法通过足够多的检查。
infoType 检测器的种类
敏感数据保护包括多种 infoType 检测器,下文汇总了所有这些检测器:
- 内置 infoType 检测器内置于敏感数据保护功能中。其中包括国家或区域特定敏感数据类型以及全球适用的数据类型的检测器。
- 自定义 infoType 检测器 - 您自行创建的检测器。自定义 infoType 检测器有三种:
- 小型自定义字典检测器 - 敏感数据保护匹配的简单字词列表。如果您有最多几万个字词或短语的列表,请使用小型自定义字典检测器。如果您预计字词列表不会发生显著变化,也建议首选小型自定义字典检测器。
- 大型自定义字典检测器由敏感数据保护使用存储在 Cloud Storage 或 BigQuery 中的大量字词或短语生成。如果您有一个包含高达数千万个字词或短语的庞大列表,请使用大型自定义字典检测器。
- 正则表达式 (regex) 检测器 - 敏感数据保护可以根据正则表达式模式检测匹配项。
此外,敏感数据保护包含检查规则的概念,因此您可使用以下规则微调扫描结果:
- 排除规则 - 让您可以通过向内置或自定义 infoType 检测器添加规则来减少返回的结果数量。
- 热词规则 - 让您可以通过向内置或自定义 infoType 检测器添加规则来增加返回的结果数量或更改其可能性值。
内置 infoType 检测器
内置 infoType 检测器内置于敏感数据保护技术中,包括用于检查特定国家或地区的敏感数据类型(学习特定国家或区域的敏感数据类型,例如法国 Numéro d'Inscription au Répertoire (NIR) (FRANCE_NIR
)、英国驾照号码 (UK_DRIVERS_LICENSE_NUMBER
) 和美国社会保障号 [US_SOCIAL_SECURITY_NUMBER
] 等)的检测器,以及用于检测特定国家/地区的敏感数据类型(用于检测个人身份、 infoType 和 infoType 等)的检测器。此外,这些检测器还包括与人名 (PERSON_NAME
)、电子邮件地址等各种全球适用的数据类型(PHONE_NUMBER
和电话号码)、EMAIL_ADDRESS
CREDIT_CARD_NUMBER
请务必更新内置 infoType 检测器列表。如需当前支持的内置 infoType 检测器的完整列表,请参阅 InfoType 检测器参考。
您还可以通过调用敏感数据保护的 infoTypes.list
方法来查看所有内置 infoType 检测器的完整列表。
内置 infoType 检测器不是 100% 准确的检测方法。例如,它们无法保证符合监管要求。您必须确定哪些是敏感数据,以及如何为敏感数据提供最佳保护。Google 建议您测试设置,以确保配置满足您的要求。
语言支持
国家/地区特定的 infoType 支持英语和各个国家/地区的语言。大多数全球 infoType 支持多种语言。使用您的数据测试敏感数据保护,以验证其是否符合您的要求。
自定义 infoType 检测器
自定义 infoType 检测器有三种:
此外,敏感数据保护包含检查规则,您可以通过将以下规则添加到现有检测器来微调扫描结果:
小型自定义字典检测器
使用小型自定义字典检测器(也称为“常规自定义字典检测器”)可以匹配最多几万个字词或短语的短列表。小型自定义字典可以作为自己的唯一检测器。
当您想要扫描的字词或短语列表不易通过正则表达式或内置检测器匹配时,则可以使用自定义字典检测器。例如,假设您想扫描那些通常用分配的房间名称而不是房间号码称呼的会议室(例如州或地区名称、地标、虚构名称等),您可以创建一个小型自定义字典检测器,并加入由这些会议室名称组成的列表。敏感数据保护可以扫描内容中的每个房间名称,并在上下文中遇到其中一个房间名称时返回匹配项。如需详细了解敏感数据保护如何与字典字词和短语匹配,请参阅创建常规自定义字典检测器的“字典匹配详情”部分。
如需详细了解小型自定义字典 infoType 检测器的工作原理及其实际应用示例,请参阅创建常规自定义字典检测器。
大型自定义字典检测器
如果您要扫描大量的字词或短语,或者您的字词或短语列表经常变化,请使用大型自定义字典检测器(也称为“存储的自定义字典检测器”)。大型自定义字典检测器可以匹配多达数千万个字词或短语。
大型自定义字典检测器的创建方式与正则表达式自定义检测器和小型自定义字典检测器不同。每个大型自定义字典都由两部分组成:
- 您创建和定义的短语列表。该列表以文本文件的形式存储在 Cloud Storage 中或以列的形式存储在 BigQuery 表中。
- 生成的字典文件,由敏感数据保护根据您的短语列表构建。字典文件存储在 Cloud Storage 中,由源短语数据的副本和帮助进行搜索和匹配的布隆过滤器组成。您无法直接修改这些文件。
创建字词列表,然后使用敏感数据保护生成自定义字典后,您可以使用大型自定义字典检测器启动或安排扫描,方式与其他 infoType 检测器类似。
如需详细了解大型自定义字典检测器的工作原理及其实际应用示例,请参阅创建存储的自定义字典检测器。
正则表达式
借助正则表达式 (regex) 自定义 infoType 检测器,您可以创建自己的 infoType 检测器,使敏感数据保护能够基于正则表达式模式检测匹配项。例如,假设您的医疗记录编号采用 ###-#-#####
形式。您可以定义一个正则表达式模式,如下所示:
[1-9]{3}-[1-9]{1}-[1-9]{5}
然后,敏感数据保护会匹配如下内容:
123-4-56789
您还可以指定要分配给每个自定义 infoType 匹配项的可能性。也就是说,当敏感数据保护与您指定的序列匹配时,它将分配您指示的可能性。这非常有用,因为如果您的自定义正则表达式定义了一个非常常见的序列,它可以轻松匹配其他某个随机序列,但您不希望敏感数据保护将每个匹配项都标记为 VERY_LIKELY
。这样做会降低扫描结果的置信度,还可能导致对错误信息进行匹配和去标识化。
如需详细了解正则表达式自定义 infoType 检测器及其实际应用,请参阅创建自定义正则表达式检测器。
检查规则
您可以使用检查规则优化现有 infoType 检测器(内置或自定义)返回的结果。如果需要以某种方式(无论是在现有的 infoType 检测器中添加还是从中排除)增强敏感数据保护返回的结果,检查规则非常有用。
检查规则分为两种:
- 排除规则
- 热词规则
如需详细了解检查规则,请参阅修改 InfoType 检测器以优化扫描结果。
排除规则
通过排除规则,您可以通过向内置或自定义 infoType 检测器添加规则来减少返回结果的数量或降低精确率。排除规则可以帮助减少 InfoType 检测器返回的噪声或其他不需要的结果。
例如,如果要扫描数据库中的电子邮件地址,您可以自定义正则表达式的形式添加排除规则,指示敏感数据保护排除以“@example.com”结尾的所有发现结果。
如需详细了解排除规则,请参阅修改 InfoType 检测器以优化扫描结果。
热词规则
通过热词规则,您可以通过向内置或自定义 infoType 检测器添加规则来增加返回结果的数量或提高准确率。热词规则可以有效地帮助您放宽现有的 infoType 检测器规则。
例如,假设您要扫描医疗数据库中的患者姓名。您可以使用敏感数据保护的内置 PERSON_NAME
infoType 检测器,但这会导致敏感数据保护匹配所有人名,而不仅仅是患者姓名。为解决此问题,您可以添加正则表达式自定义 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
的确定性。 - 缺少上下文,这降低了其属于两者的确定性。
后续步骤
敏感数据保护团队会定期发布新的 infoType 检测器和组。如需了解如何获取最新的内置 infoType 列表,请参阅列出内置 infoType 检测器。