自定义字典提供了匹配字词或短语列表的简单而强大的功能。您可以将自定义字典用作检测器,也可以将其用作内置检测器的例外列表。您还可使用自定义字典来强化内置的 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 标准补充多语言平面中的字符,则可能会产生意外结果。此类字符的示例包括表情符号、科学符号和历史文字。
字母、数字和其他字母字符的定义如下:
- 字母:Unicode 规范中常规类别为
Lu
、Ll
、Lt
、Lm
或Lo
的字符 - 数字:Unicode 规范中属于一般类别
Nd
的字符 - 其他字母字符:Unicode 规范中属于一般类别
Nl
或具有 Unicode 标准中定义的贡献属性Other_Alphabetic
的字符
示例
简单字词列表
假设您的数据中包括患者在就诊期间接受治疗的病房。在特定数据集中,这些位置可能被视为敏感数据,但是敏感数据保护的内置检测器不会捕捉它们。
病房列为:
- "RM-Orange"
- "RM-Yellow"
- "RM-Green"
C#
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
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#
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
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 检测器,如下例所示。下面的代码段展示了如何配置敏感数据保护来使内置 infoType 检测器 PERSON_NAME
额外匹配出姓名“Quasimodo”:
C#
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用敏感数据保护客户端库,请参阅 敏感数据保护客户端库。
如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST
... "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"PERSON_NAME" }, "dictionary":{ "wordList":{ "words":[ "quasimodo" ] } } } ] } ...
后续步骤
了解大型自定义字典。