自定义字典提供了匹配字词或短语列表的简单而强大的功能。您可以将自定义字典用作检测器或内置检测器的例外列表。您还可使用自定义字典来强化内置的 infoType 检测器,以匹配其他结果。
本部分介绍如何根据字词列表创建常规自定义字典检测器。
字典自定义 infoType 检测器详解
如 API 概览中所述,如需创建字典自定义 infoType 检测器,需要定义一个包含以下内容的 CustomInfoType
对象:
- 您希望在
InfoType
对象中为自定义 infoType 检测器指定的名称。 - (可选)
Likelihood
值。如果省略此字段,则字典项的匹配项将返回默认可能性VERY_LIKELY
。 - (可选)
DetectionRule
对象或热词规则。这些规则可对在指定热词一定邻近范围内的结果调整可能性。详细了解自定义匹配可能性中的热词规则。 (可选)
SensitivityScore
值。如果省略此字段,则字典项的匹配项将返回默认敏感度级别HIGH
。敏感度得分用于数据分析文件。剖析数据时,敏感数据保护使用 infoType 的敏感度分数计算敏感度级别。
Dictionary
- 可以是包含要扫描的字词列表的WordList
,也可以是要扫描的字词列表(以换行符分隔)所在单个文本文件的CloudStoragePath
。
作为一个 JSON 对象,包含所有可选组件的字典自定义 infoType 检测器如下所示:此 JSON 包含存储在 Cloud Storage 中的字典文本文件的路径。如需查看内嵌字词列表,请参阅本主题后面的示例部分。
{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_INFOTYPE_NAME"
},
"likelihood":"LIKELIHOOD_LEVEL",
"detectionRules":[
{
"hotwordRule":{
HOTWORD_RULE
}
},
...
],
"sensitivityScore":{
"score": "SENSITIVITY_SCORE"
},
"dictionary":
{
"cloudStoragePath":
{
"path": "gs://PATH_TO_TXT_FILE"
}
}
}
],
...
}
字典匹配详情
以下是有关敏感数据保护如何与字典字词和短语匹配的指南。以下要点适用于常规自定义字典和大型自定义字典:
- 字典字词不区分大小写。如果您的字典包含
Abby
,将匹配abby
、ABBY
、Abby
等。 - 扫描匹配项时,字典或要扫描的内容中,除了 Unicode 基本多语言平面中包含的字母和数字外,其他所有字符一律被视为空格。如果您的字典扫描
Abby Abernathy
,将匹配abby abernathy
、Abby, Abernathy
、Abby (ABERNATHY)
等。 - 任何匹配项两侧的字符均必须与字词中相邻字符的类型(字母或数字)不同。如果您的字典扫描
Abi
,将匹配Abi904
的前三个字符,但不匹配Abigail
的前三个字符。 - 如果字典字词包含 Unicode 标准的补充多语言平面中的字符,可能会产生意外结果。此类字符的示例包括中文、日语、韩语和表情符号。
示例
简单字词列表
假设您的数据中包括患者在就诊期间接受治疗的病房。在特定数据集中,这些位置可能被视为敏感数据,但敏感数据保护的内置检测器不会捕获它们。
病房列为:
- "RM-Orange"
- "RM-Yellow"
- "RM-Green"
C#
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
下面的示例 JSON 定义了一个自定义字典,它可用于对自定义房间号去标识化。
JSON 输入:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"Patient was seen in RM-YELLOW then transferred to rm green."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"dictionary":{
"wordList":{
"words":[
"RM-GREEN",
"RM-YELLOW",
"RM-ORANGE"
]
}
}
}
]
}
}
JSON 输出:
当我们使用 POST 将 JSON 输入发布到 content:deidentify
时,将返回以下 JSON 响应:
{
"item":{
"value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"2",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
敏感数据保护已正确标识自定义字典的 WordList
消息中指定的房间号。请注意,项目即使缺少大写和连字符 (-
)(如第二个示例“rm green”所示),也会被匹配出来。
例外列表
假设您的日志数据中包含电子邮件地址等客户标识符,且您想要遮盖此信息。但是,这些日志还包括内部开发者的电子邮件地址,而您不想隐去这些信息。
C#
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
下面的 JSON 示例创建了一个自定义字典,其中列出 WordList
消息中的部分电子邮件地址(jack@example.org 和 jill@example.org),并向其分配自定义 infoType 名称 DEVELOPER_EMAIL
。以下 JSON 指示敏感数据保护忽略指定的电子邮件地址,同时将其检测到的任何其他电子邮件地址替换为与其 infoType 对应的字符串(在本例中为 EMAIL_ADDRESS
):
JSON 输入:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"jack@example.org accessed customer record of user5@example.com"
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
},
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"DEVELOPER_EMAIL"
},
"dictionary":{
"wordList":{
"words":[
"jack@example.org",
"jill@example.org"
]
}
}
}
],
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
"ruleSet": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"rules": [
{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [
{
"name": "DEVELOPER_EMAIL"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
}
JSON 输出:
当我们使用 POST 将此 JSON 发布到 content:deidentify
时,将返回以下 JSON 响应:
{
"item":{
"value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
输出结果正确识别出了 user1@example.com 与 infoType 检测器 EMAIL_ADDRESS
匹配,jack@example.org 与自定义 infoType 检测器 DEVELOPER_EMAIL
匹配。请注意,由于我们选择仅转换 EMAIL_ADDRESS
,因此 jack@example.org 保持不变。
强化内置的 infoType 检测器
请设想一下内置的 infoType 检测器未返回正确值的情景。例如,您希望返回人名匹配项,但敏感数据保护的内置 PERSON_NAME
检测器无法返回数据集中某些常见人名的匹配项。
通过敏感数据保护,您可以在自定义 infoType 检测器的声明中包含内置检测器,从而增强内置 infoType 检测器,如以下示例所示。以下代码段说明了如何配置敏感数据保护,使 PERSON_NAME
内置的 infoType 检测器额外与姓名“Quasimodo”进行匹配:
C#
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用用于敏感数据保护的客户端库,请参阅敏感数据保护客户端库。
如需向敏感数据保护服务进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
... "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"PERSON_NAME" }, "dictionary":{ "wordList":{ "words":[ "quasimodo" ] } } } ] } ...
后续步骤
了解大型自定义字典。