利用热词规则,您可以通过强大的上下文规则进一步扩展内置和自定义 infoType 检测器。热词规则会指示 Sensitive Data Protection 根据发现结果附近是否出现热词来调整发现结果的可能性。热词规则是一种在规则集中指定的检查规则。每个规则都会应用于一组内置或自定义 infoType。
热词规则详解
infoType 检测器可以具有零项或多项热词规则。在检查配置中,您可以在 rules
数组内定义每个 HotwordRule
对象,如下所示:
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"REGEX_PATTERN"
},
"proximity":{
"windowAfter":"NUM_CHARS_TO_CONSIDER_AFTER_FINDING",
"windowBefore":"NUM_CHARS_TO_CONSIDER_BEFORE_FINDING"
}
"likelihoodAdjustment":{
"fixedLikelihood":"LIKELIHOOD_VALUE"
-- OR --
"relativeLikelihood":"LIKELIHOOD_ADJUSTMENT"
},
}
},
...
]
替换以下内容:
- REGEX_PATTERN:定义热词条件的正则表达式(
Regex
对象)。 - NUM_CHARS_TO_CONSIDER_AFTER_FINDING:发现结果后面的字符范围。Sensitive Data Protection 会分析此范围,以确定发现结果附近是否存在热词。
NUM_CHARS_TO_CONSIDER_BEFORE_FINDING:发现结果前面的字符范围。Sensitive Data Protection 会分析此范围,以确定发现结果附近是否存在热词。
LIKELIHOOD_VALUE:要将发现结果设为的固定
Likelihood
级别。LIKELIHOOD_ADJUSTMENT:一个数字,表示 Sensitive Data Protection 必须提高或降低发现结果可能性的程度。正整数提高可能性级别,负整数降低可能性级别。例如,如果在未应用检测规则时发现结果是
POSSIBLE
,且relativeLikelihood
为 1,则发现结果将升级为LIKELY
。如果relativeLikelihood
为 -1,则发现结果将降级为UNLIKELY
。可能性永远不会低于VERY_UNLIKELY
或超过VERY_LIKELY
。在这些情况下,可能性级别保持不变。例如,如果基础可能性为VERY_LIKELY
并且relativeLikelihood
为 1,则最终可能性仍然为VERY_LIKELY
。
热词示例:匹配医疗记录编号
假设您想要检测一个自定义 infoType,例如格式为“###-#-#####”的医疗记录编号 (MRN)。同时,您希望敏感数据保护功能提高跟在热词“MRN”之后的每个发现结果的匹配可能性。
示例值:
- 123-4-56789 将匹配为
POSSIBLE
。 - MRN 123-4-56789 将匹配为
VERY_LIKELY
。
以下 JSON 示例和代码段展示了如何配置热词规则。此示例使用自定义正则表达式检测器。
在此示例中,请注意以下事项:
- 请求定义了
C_MRN
自定义 infoType,这是与正则表达式[0-9]{3}-[0-9]{1}-[0-9]{5}
匹配的任何字符串的检测器。 - 正则表达式
(?i)(mrn|medical)(?-i)
定义热词。敏感数据保护功能会在proximity
字段定义的字符范围内搜索此热词。 - 对于在设置的
proximity
内包含热词的每个C_MRN
发现结果,敏感数据保护会将可能性级别设置为VERY_LIKELY
。
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
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
HTTP 方法和网址:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
将 PROJECT_ID
替换为项目 ID。
JSON 输入:
{
"item":{
"value":"Patient's MRN 444-5-22222 and just a number 333-2-33333"
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"C_MRN"
},
"regex":{
"pattern":"[0-9]{3}-[0-9]{1}-[0-9]{5}"
},
"likelihood":"POSSIBLE",
}
],
"ruleSet":[
{
"infoTypes": [{"name" : "C_MRN"}],
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"(?i)(mrn|medical)(?-i)"
},
"likelihoodAdjustment":{
"fixedLikelihood":"VERY_LIKELY"
},
"proximity":{
"windowBefore":10
}
}
}
]
}
]
}
}
JSON 输出(简化版本):
{ "result": { "findings": [ { "infoType": { "name": "C_MRN" }, "likelihood": "VERY_LIKELY", "location": { "byteRange": { "start": "14", "end": "25" }, "codepointRange": { ... } } }, { "infoType": { "name": "C_MRN" }, "likelihood": "POSSIBLE", "byteRange": { "start": "44", "end": "55" }, "codepointRange": { ... } } } ] } }
输出显示,敏感数据保护功能使用 C_MRN
自定义 infoType 检测器正确识别了医疗记录编号。此外,由于热词规则中的上下文匹配,敏感数据保护功能根据配置为第一个结果(在设置的 proximity
内包含 MRN)分配了可能性 VERY_LIKELY
。第二个发现结果缺少上下文,因此 likelihood
为 POSSIBLE
。
热词示例:设置表列的匹配可能性
此示例演示了如何设置整个数据列的匹配可能性。例如,如果您想要从检查结果中排除一列数据,此方法非常有用。
请参考下表: 一列包含占位符社会保障号 (SSN),另一列包含真实的社会保障号。
虚构的社会保障号 | 真实的社会保障号 |
---|---|
111-11-1111 | 222-22-2222 |
为了最大限度地减少检查结果中的噪声,您可以排除 Fake Social Security Number
列中的任何发现结果。为此列分配较低的可能性级别。然后,配置请求,以便从结果中排除该可能性级别的匹配项。
在此示例中,请注意以下事项:
- 热词规则应用于
US_SOCIAL_SECURITY_NUMBER
infoType。 - 热词正则表达式
(Fake Social Security Number)
包含具有占位符值的列名称。 windowBefore
属性设置为 1,表示热词位于列标题中,并且发现结果必须位于该列中。- 对于此列中的每个
US_SOCIAL_SECURITY_NUMBER
发现结果,敏感数据保护将可能性级别设置为VERY_UNLIKELY
。 minLikelihood
属性设置为POSSIBLE
,这意味着可能性级别低于POSSIBLE
的任何发现结果都会从检查结果中排除。
要详细了解如何将 DLP API 与 JSON 结合使用,请参阅 JSON 快速入门。
HTTP 方法和网址:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
将 PROJECT_ID
替换为项目 ID。
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 输入:{
"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": [
{
"hotwordRule": {
"hotwordRegex": {
"pattern": "(Fake Social Security Number)"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_UNLIKELY"
},
"proximity": {
"windowBefore": 1
}
}
}
]
}
],
"minLikelihood": "POSSIBLE"
}
}
JSON 输出:
{ "result": { "findings": [ { "quote": "222-22-2222", "infoType": { "name": "US_SOCIAL_SECURITY_NUMBER" }, "likelihood": "VERY_LIKELY", "location": { "byteRange": { "end": "11" }, "codepointRange": { "end": "11" }, "contentLocations": [ { "recordLocation": { "fieldId": { "name": "Real Social Security Number" }, "tableLocation": {} } } ] }, "createTime": "TIMESTAMP", "findingId": "TIMESTAMP" } ] } }
Fake Social Security Number
列中的值 111-11-1111 匹配热词规则,因此敏感数据保护为其分配 VERY_UNLIKELY
可能性级别。此级别低于检查配置中设置的最低可能性级别 (POSSIBLE
),因此该发现结果从检查结果中排除。
您可以通过移除设置的规则来对此示例进行实验。请注意,敏感数据保护在结果中包含 111-11-1111。