自定义匹配可能性

利用热词规则,您可以通过强大的上下文规则进一步扩展内置自定义 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)。同时,您希望 Sensitive Data Protection 提高跟在热词“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) 定义热词。Sensitive Data Protection 会在 proximity 字段定义的字符范围内搜索此热词。
  • 对于在设置的 proximity 内包含热词的每个 C_MRN 发现结果,Sensitive Data Protection 会将可能性级别设置为 VERY_LIKELY

C#

如需了解如何安装和使用 Sensitive Data Protection 客户端库,请参阅 Sensitive Data Protection 客户端库

如需向 Sensitive Data Protection 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证


using System;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using static Google.Cloud.Dlp.V2.CustomInfoType.Types;

public class InspectDataWithHotwordRule
{
    public static InspectContentResponse InspectDataHotwordRule(
        string projectId,
        string text,
        string customRegex,
        string hotwordRegex,
        InfoType infoType = null)
    {
        // Instantiate dlp client.
        var dlp = DlpServiceClient.Create();

        // Construct the content item.
        var contentItem = new ContentItem
        {