Sensitive Data Protection 的内置 infoType 检测器可有效查找常见类型的敏感数据。借助自定义 infoType 检测器,您可以全面定制自己的敏感数据检测器。检查规则通过修改给定 infoType 检测器的检测机制,帮助优化 Sensitive Data Protection 返回的扫描结果。
如果您想从内置 infoType 检测器返回的结果中排除或包含更多值,可以从头开始创建新的自定义 infoType,并定义 Sensitive Data Protection 应查找的所有条件。或者,您也可以根据指定的条件,对 Sensitive Data Protection 的内置或自定义检测器返回的发现结果进行优化。您可添加检查规则来实现此目的,它们有助于减少噪声、提高精确率和召回率,或者调整扫描结果的确定性。
本主题讨论如何使用两种类型的检查规则来排除某些结果或添加额外结果,所有操作均根据您指定的自定义条件执行。本主题还将介绍几种您可能需要更改现有 infoType 检测器的场景。
可用的检查规则类型如下:
目标和上下文 infoType
本文档使用以下术语来指代规则集中的 infoType。
- 目标 infoType:满足规则集中定义的条件时,Sensitive Data Protection 会排除或调整的 infoType。
- 上下文 infoType:一种 infoType,如果检测到,则提供有关目标 infoType 的上下文。Sensitive Data Protection 使用上下文 infoType 来确定是否必须排除或调整目标 infoType。
规则排序和链接
Sensitive Data Protection 会按照您在规则集中指定的顺序应用规则。因此,规则的顺序可能会影响 Sensitive Data Protection 操作的结果。如需查看示例,请参阅本文档中的提高健康文档中人名的可能性并排除健康文档。
排除规则
排除规则对以下情况非常有用:
- 您希望排除结果中因 infoType 检测器重叠而导致的重复的扫描匹配项。例如,您要扫描电子邮件地址和电话号码,但却获得两个带电话号码的电子邮件地址匹配项,例如“206-555-0764@example.org”。
- 扫描结果中存在干扰。例如,您发现在扫描合法电子邮件地址时,同一虚拟电子邮件地址(例如“example@example.com”)或网域(例如“example.com”)返回的次数过多。
- 您有一系列要从结果中排除的字词、短语或字符组合。
- 您希望从结果中排除整列数据。
- 您希望排除与正则表达式匹配的字符串附近的发现结果。
- 您希望根据图片中的发现结果与其他检测到的发现结果之间的空间关系,排除图片中的发现结果。
排除规则 API 概览
Sensitive Data Protection 在 ExclusionRule 对象中定义排除规则。在 ExclusionRule 中,您可以指定以下其中一项:
Dictionary对象,其中包含要从结果中排除的字符串列表。Regex对象,用于定义正则表达式模式。与该模式匹配的字符串会从结果中排除。ExcludeInfoTypes对象,包含一个 infoType 检测器数组。如果发现结果与此处列出的任何 infoType 检测器匹配,则该发现结果会从结果中排除。ExcludeByHotword对象,其中包含以下内容:- 用于定义启动指令的正则表达式。
- proximity 值,用于定义热词与发现结果之间的距离。
如果发现结果在设定的邻近范围内,则该发现结果会从结果中排除。对于表,此排除规则类型可让您从结果中排除整列数据。
一个
ExcludeByImageFindings对象,其中包含以下内容:上下文 infoType 的列表,用于确定是否排除目标 infoType 发现结果。
一个
ImageContainmentType对象,用于指定目标发现结果和上下文发现结果的边界框之间所需的空间关系。如果不满足此要求,Sensitive Data Protection 不会排除目标 infoType 发现结果。
如果上下文 infoType 的边界框与目标 infoType 发现结果具有指定关系,则 Sensitive Data Protection 会排除目标 infoType 发现结果。使用
ExcludeByImageFindings时,您必须将matchingType字段设置为MATCHING_TYPE_RULE_SPECIFIC。TIFF 图片不支持
ExcludeByImageFindings。包含此规则的 TIFF 图片content.inspect请求会失败。
排除规则示例场景
以下每个 JSON 代码段都说明了如何针对给定场景配置 Sensitive Data Protection。
在 EMAIL_ADDRESS 检测器扫描中忽略特定电子邮件地址
以下 JSON 代码段和多种语言的代码说明了如何使用 InspectConfig 向 Sensitive Data Protection 指示,在使用 infoType 检测器 EMAIL_ADDRESS 的扫描中,应避免匹配“example@example.com”:
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"rules":[
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"example@example.com"
]
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
...
在 EMAIL_ADDRESS 检测器扫描中忽略以特定网域结尾的电子邮件地址
以下 JSON 代码段和多种语言的代码说明了如何使用 InspectConfig 向 Sensitive Data Protection 指示,在使用 infoType 检测器 EMAIL_ADDRESS 的扫描中,应避免匹配任何以“@example.com”结尾的电子邮件地址:
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"rules":[
{
"exclusionRule":{
"regex":{
"pattern":".+@example.com"
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
...
忽略包含子字符串“TEST”的扫描匹配项
以下 JSON 代码段和多种语言的代码说明了如何使用 InspectConfig 向 Sensitive Data Protection 指示应从指定的 infoType 列表中排除包含令牌“TEST”的所有发现结果。
请注意,这相当于将“TEST”作为令牌(而非子字符串)匹配,因此,虽然“TEST@email.com”之类的内容会匹配,但“TESTER@email.com”则不会。如果需要匹配子字符串,请在排除规则中使用正则表达式,而不是字典。
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"DOMAIN_NAME"
},
{
"name":"PHONE_NUMBER"
},
{
"name":"PERSON_NAME"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"DOMAIN_NAME"
},
{
"name":"PHONE_NUMBER"
},
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"TEST"
]
}
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
在自定义 infoType 检测器扫描中忽略包含子字符串“Jimmy”的扫描匹配项
以下 JSON 代码段和多种语言的代码说明了如何使用 InspectConfig 向 Sensitive Data Protection 指示,在使用指定的自定义正则表达式检测器进行的扫描中,应避免匹配名称“Jimmy”:
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_NAME_DETECTOR"
},
"regex":{
"pattern":"[A-Z][a-z]{1,15}, [A-Z][a-z]{1,15}"
}
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"CUSTOM_NAME_DETECTOR"
}
],
"rules":[
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"Jimmy"
]
}
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
在与自定义检测器重叠的 PERSON_NAME 检测器扫描中忽略扫描匹配项
在此场景中,如果使用代码段第一部分中定义的自定义正则表达式检测器进行扫描时也会匹配,则用户不希望返回使用 PERSON_NAME 内置检测器进行 Sensitive Data Protection 扫描时匹配的结果。
以下采用多种语言的 JSON 代码段和代码在 InspectConfig 中同时指定了自定义正则表达式检测器和排除规则。自定义正则表达式检测器用于指定要从结果中排除的姓名。排除规则指定如果针对 PERSON_NAME 的扫描返回的任何结果也被自定义正则表达式检测器匹配到,则忽略这些结果。请注意,VIP_DETECTOR 在此情况下标记为 EXCLUSION_TYPE_EXCLUDE,因此它本身不产生结果。它只会影响 PERSON_NAME 检测器生成的结果。
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"customInfoTypes":[
{
"infoType":{
"name":"VIP_DETECTOR"
},
"regex":{
"pattern":"Dana Williams|Quinn Garcia"
},
"exclusionType":"EXCLUSION_TYPE_EXCLUDE"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"exclusionRule":{
"excludeInfoTypes":{
"infoTypes":[
{
"name":"VIP_DETECTOR"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
...
忽略同时被 EMAIL_ADDRESS 检测器匹配到的 PERSON_NAME 检测器匹配项
以下 JSON 代码段和多种语言的代码说明了如何使用 InspectConfig 向 Sensitive Data Protection 指示,在 PERSON_NAME 检测器的匹配项与 EMAIL_ADDRESS 检测器的匹配项重叠的情况下,它应仅返回一个匹配项。这样是为了避免出现电子邮件地址(如“james@example.com”)在 PERSON_NAME 和 EMAIL_ADDRESS 检测器上都显示为匹配项的情况。
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
},
{
"name":"EMAIL_ADDRESS"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"exclusionRule":{
"excludeInfoTypes":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
在 DOMAIN_NAME 检测器扫描中忽略电子邮件地址域名匹配项
以下 JSON 代码段和多种语言的代码说明了如何使用 InspectConfig 向 Sensitive Data Protection 指示,仅当 DOMAIN_NAME 检测器扫描的匹配项与 EMAIL_ADDRESS 检测器扫描的匹配项不重叠时,才应返回该匹配项。在此场景中,主扫描是 DOMAIN_NAME 检测器扫描。用户不希望在结果中返回属于电子邮件地址一部分的域名匹配项:
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"DOMAIN_NAME"
},
{
"name":"EMAIL_ADDRESS"
}
],
"customInfoTypes":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"exclusionType":"EXCLUSION_TYPE_EXCLUDE"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"DOMAIN_NAME"
}
],
"rules":[
{
"exclusionRule":{
"excludeInfoTypes":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
如果匹配项位于字符串附近,则忽略
以下示例说明了如果“SKU”一词在发现结果之前或之后的 10 个字符内,如何排除 US_SOCIAL_SECURITY_NUMBER infoType 检测器上的匹配项。
由于排除规则,此示例不会将 222-22-2222 分类为可能的美国社会保障号。
{
"item": {
"value": "The customer sent the product SKU 222-22-2222"
},
"inspectConfig": {
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"rules": [
{
"exclusionRule": {
"excludeByHotword": {
"hotwordRegex": {
"pattern": "(SKU)"
},
"proximity": {
"windowBefore": 10,
"windowAfter": 10
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
],
"includeQuote": true
}
}
忽略整列数据中的发现结果
以下示例说明了如果表格数据中某一列的名称与正则表达式匹配,如何排除该列中的发现结果。在这里,如果与 US_SOCIAL_SECURITY_NUMBER infoType 检测器匹配的任何发现结果位于虚假社会保障号列中,则会从结果中排除。
此示例仅返回 222-22-2222,因为 111-11-1111 位于 Fake 社会保障号 列中。
{
"item": {
"table": {
"headers": [
{
"name": "Fake Social Security Number"
},
{
"name": "Real Social Security Number"
}
],
"rows": [
{
"values": [
{
"stringValue": "111-11-1111"
},
{
"stringValue": "222-22-2222"
}
]
}
]
}
},
"inspectConfig": {
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"includeQuote": true,
"ruleSet": [
{
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"rules": [
{
"exclusionRule": {
"excludeByHotword": {
"hotwordRegex": {
"pattern": "(Fake Social Security Number)"
},
"proximity": {
"windowBefore": 1
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
],
"minLikelihood": "POSSIBLE"
}
}
根据空间关系忽略图片中的发现结果
以下 JSON 代码段展示了如何配置 Sensitive Data Protection,以根据图片中检测到的对象与其他对象的空间关系排除这些对象。
如果发现结果是护照的一部分,则排除人员
此规则会排除护照发现结果 (OBJECT_TYPE/PERSON/PASSPORT) 中包含的人员发现结果 (OBJECT_TYPE/PERSON)。
{
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
},
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
}
],
"rules": [
{
"exclusionRule": {
"excludeByImageFindings": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
}
],
"imageContainmentType": {
"encloses": {}
}
},
"matchingType": "MATCHING_TYPE_RULE_SPECIFIC"
}
}
]
}
]
}
}
如果车牌号发现结果包含车辆识别码,则排除该发现结果
如果 VEHICLE_IDENTIFICATION_NUMBER 发现结果完全位于车牌 (OBJECT_TYPE/LICENSE_PLATE) 发现结果内,则此规则会排除该车牌发现结果。
{
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/LICENSE_PLATE"
},
{
"name": "VEHICLE_IDENTIFICATION_NUMBER"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/LICENSE_PLATE"
}
],
"rules": [
{
"exclusionRule": {
"excludeByImageFindings": {
"infoTypes": [
{
"name": "VEHICLE_IDENTIFICATION_NUMBER"
}
],
"imageContainmentType": {
"fullyInside": {}
}
},
"matchingType": "MATCHING_TYPE_RULE_SPECIFIC"
}
}
]
}
]
}
}
热词规则
热词规则在以下情况下非常有用:
- 您想要根据匹配项与热词的邻近度来更改分配给扫描匹配项的可能性值。例如,您希望根据患者姓名与“患者”一词的邻近度,为患者姓名匹配项设置更高的可能性值。
- 检查结构化的表格数据时,您想要根据列标题名称来更改分配给匹配项的可能性值。例如,您希望为标题为
ACCOUNT_ID的列中的US_SOCIAL_SECURITY_NUMBER设置更高的可能性值。
热词规则 API 概览
在 Sensitive Data Protection 的 InspectionRule 对象中,您可以指定 HotwordRule 对象,该对象会调整在热词附近发现结果的可能性。
InspectionRule 对象在 InspectionRuleSet 对象中分组为“规则集”,组中还有规则集所适用的 infoType 检测器列表。规则集中的规则按指定顺序进行应用。
热词规则示例场景
以下代码段说明了如何配置热词规则。
提高旁边有热词“患者”的 PERSON_NAME 匹配项的可能性
以下采用多种语言的 JSON 代码段和代码说明了如何使用 InspectConfig 属性来扫描医疗数据库中的患者姓名。您可以使用 Sensitive Data Protection 的内置 PERSON_NAME infoType 检测器,但这会导致 Sensitive Data Protection 匹配所有人的姓名,而不仅仅是患者的姓名。为解决此问题,您可以添加一条热词规则,用于在潜在匹配项第一个字符的一定邻近字符范围内查找“患者”一词。然后,您可以向匹配该模式的结果分配“可能性极大”(very likely) 这一可能性,因为这些结果符合您的特殊条件。通过在 InspectConfig 中将 Likelihood 的最小值设为 VERY_LIKELY,可确保结果中仅返回符合此配置的匹配项。
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"patient"
},
"proximity":{
"windowBefore":50
},
"likelihoodAdjustment":{
"fixedLikelihood":"VERY_LIKELY"
}
}
}
]
}
],
"minLikelihood":"VERY_LIKELY"
}
...
如需详细了解热词,请参阅自定义匹配可能性。
调整规则
调整规则可以根据发现结果出现的上下文提高(也称为提升)或降低发现结果的可能性值,从而帮助您提高检测准确率。
调整规则在以下情况下非常有用:
如果目标 infoType 发现结果与上下文 infoType 发现结果重叠,您希望更改目标 infoType 发现结果的可能性值。例如,提高在与
DOCUMENT_TYPE/CONTEXT/HEALTH匹配的文档中检测到的PERSON_NAME发现结果的可能性值。您希望根据目标 infoType 发现结果与图片中检测到的其他发现结果的空间关系,更改目标 infoType 发现结果的可能性值。例如,提高在与
OBJECT_TYPE/PERSON/PHOTO_ID_CARD匹配的图片中检测到的GENERIC_ID发现结果的可能性值。
调整规则 API 概览
Sensitive Data Protection 在 AdjustmentRule 对象中定义调整规则。在 AdjustmentRule 中,您需要指定以下内容:
以下项之一:
一个
AdjustByMatchingInfoTypes对象,用于在目标 infoType 发现结果与上下文 infoType 发现结果重叠时,调整目标 infoType 发现结果的可能性值。此对象包含以下内容:- 上下文 infoType 的列表,用于确定是否调整目标 infoType 发现结果。
- 上下文 infoType 的
min_likelihood值。如果任何检测到的上下文发现结果的可能性值低于此值,Sensitive Data Protection 不会调整目标发现结果的可能性。 matching_type值,必须设置为MATCHING_TYPE_PARTIAL_MATCH。
AdjustByImageFindings对象,如果上下文 infoType 的边界框与目标 infoType 发现结果具有指定关系,则该对象会调整目标 infoType 发现结果的可能性值。此对象包含以下内容:上下文 infoType 的列表,用于确定是否调整目标 infoType 发现结果。
ImageContainmentType对象,用于指定目标发现结果和上下文发现结果的边界框之间所需的空间关系。如果不满足此要求,Sensitive Data Protection 不会调整目标 infoType 发现结果的可能性。上下文 infoType 的
min_likelihood值。如果任何检测到的上下文发现结果的可能性值低于此值,Sensitive Data Protection 不会调整目标发现结果的可能性。
TIFF 图片不支持
AdjustByImageFindings。包含此规则的 TIFF 图片content.inspect请求会失败。
likelihood_adjustment对象,用于将新的可能性指定为固定值或相对调整值。
调整规则示例场景
以下 JSON 代码段说明了如何针对各种场景配置调整规则。
提高在健康文档中使用人名的可能性
以下示例将 PERSON_NAME 发现结果的似然值提升到 VERY_LIKELY(如果该发现结果与 DOCUMENT_TYPE/CONTEXT/HEALTH 发现结果重叠)。
{
"parent": "projects/PROJECT_ID",
"inspectConfig": {
"infoTypes": [
{
"name": "PERSON_NAME"
},
{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "PERSON_NAME"
}
],
"rules": [
{
"adjustmentRule": {
"adjustByMatchingInfoTypes": {
"infoTypes": [
{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}
],
"minLikelihood": "POSSIBLE",
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}
]
}
]
},
"item": {
"value": "My name is John and my arm is broken."
}
}
将 PROJECT_ID 替换为与您的请求关联的项目 ID。
提高健康文档中人名的可能性,并排除健康文档
以下示例展示了如果 发现结果与 DOCUMENT_TYPE/CONTEXT/HEALTH
发现结果重叠,则将 PERSON_NAME 发现结果的可能性值提升到
VERY_LIKELY。为了减少干扰,此示例指定了第二条规则,该规则会从检查结果中排除 DOCUMENT_TYPE/CONTEXT/HEALTH 发现结果。
规则集中规则的指定顺序非常重要。在此示例中,调整规则在排除规则之前指定,以便 DOCUMENT_TYPE/CONTEXT/HEALTH 发现结果可用于为调整规则提供上下文。如果您先指定排除规则,则 DOCUMENT_TYPE/CONTEXT/HEALTH 发现结果会先从结果集中排除,然后才能用于为调整规则提供上下文。
{
"parent": "projects/PROJECT_ID",
"inspectConfig": {
"infoTypes": [{
"name": "PERSON_NAME"
}, {
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}],
"minLikelihood": "VERY_UNLIKELY",
"ruleSet": [{
"infoTypes": [{
"name": "PERSON_NAME"
}],
"rules": [{
"adjustmentRule": {
"adjustByMatchingInfoTypes": {
"infoTypes": [{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}],
"minLikelihood": "VERY_UNLIKELY",
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}]
}, {
"infoTypes": [{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}],
"rules": [{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}]
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}]
}]
},
"item": {
"value": "My name is John and my arm is broken."
}
}
将 PROJECT_ID 替换为与您的请求关联的项目 ID。
提高带照片身份证件上出现人物的可能性
以下示例会将 OBJECT_TYPE/PERSON 发现结果(如果它出现在 OBJECT_TYPE/PERSON/PHOTO_ID_CARD 发现结果的边界框内)的可能性值提升到 VERY_LIKELY。
...
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
},
{
"name": "OBJECT_TYPE/PERSON/PHOTO_ID_CARD"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
}
],
"rules": [
{
"adjustmentRule": {
"adjustByImageFindings": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PHOTO_ID_CARD"
}
],
"imageContainmentType": {
"encloses": {}
},
"minLikelihood": "POSSIBLE"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}
]
}
]
}
...
提高包含个人标识符的护照的识别概率
以下示例将 OBJECT_TYPE/PERSON/PASSPORT 发现结果的可能性值提升到 VERY_LIKELY(如果 PERSON_NAME 或 DATE_OF_BIRTH 发现结果完全位于其中)。
...
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
},
{
"name": "PERSON_NAME"
},
{
"name": "DATE_OF_BIRTH"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
}
],
"rules": [
{
"adjustmentRule": {
"adjustByImageFindings": {
"infoTypes": [
{
"name": "PERSON_NAME"
},
{
"name": "DATE_OF_BIRTH"
}
],
"imageContainmentType": {
"fullyInside": {}
},
"minLikelihood": "POSSIBLE"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}
]
}
]
}
...
多种检查规则场景
以下采用多种语言的 InspectConfig JSON 代码段和代码说明了如何同时应用排除规则和热词规则。此代码段的规则集同时包含热词规则以及字典和正则表达式排除规则。请注意,这四条规则在 rules 元素的数组中指定。
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"patient"
},
"proximity":{
"windowBefore":10
},
"likelihoodAdjustment":{
"fixedLikelihood":"VERY_LIKELY"
}
}
},
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"doctor"
},
"proximity":{
"windowBefore":10
},
"likelihoodAdjustment":{
"fixedLikelihood":"UNLIKELY"
}
}
},
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"Quasimodo"
]
}
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
},
{
"exclusionRule":{
"regex":{
"pattern":"REDACTED"
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
重叠的 infoType 检测器
可以定义与内置 infoType 检测器同名的自定义 infoType 检测器。如热词规则示例场景部分中的示例所示,如果您创建与内置 infoType 同名的自定义 infoType 检测器,则新 infoType 检测器检测到的任何结果都会添加到内置检测器检测到的结果中。仅当 InspectConfig 对象的 infoType 列表中指定了内置 infoType 时,才会出现此情况。
创建新的自定义 infoType 检测器时,请对示例内容进行充分测试,确保其按预期工作。