敏感信息类型 REGEX 验证程序和其他检查

重要

在创建自定义分类或正则表达式模式时,不可从 Microsoft 客户服务和支持获取帮助。 支持工程师可以为该功能提供有限的支持,例如提供用于测试该功能的示例正则表达式模式,或协助排查未按预期触发的现有正则表达式模式。 但是,支持工程师无法向你保证任何自定义内容匹配开发都能满足你的要求或义务。

提示

如果你不是 E5 客户,请使用 90 天Microsoft Purview 解决方案试用版来探索其他 Purview 功能如何帮助组织管理数据安全性和合规性需求。 立即在 Microsoft Purview 试用中心开始。 了解有关 注册和试用条款的详细信息。

敏感信息类型正则表达式验证程序

校验和验证程序

若要对正则表达式中的数字运行校验和,可以使用 校验和验证器。 例如,如果需要为 8 位数的许可证编号创建 SIT,其中最后一位数字是使用 mod 9 计算验证的校验和数字,请设置校验和算法,如下所示:

Sum = digit 1 * Weight 1 + digit 2 * weight 2 + digit 3 * weight 3 + digit 4 * weight 4 + digit 5 * weight 5 + digit 6 * weight 6 + digit 7 * weight 7 + digit 8 * weight 8
Mod value = Sum % 9
If Mod value == digit 8
    Account number is valid
If Mod value != digit 8
    Account number is invalid
  1. 使用以下正则表达式定义主元素:

    \d{8}
    
  2. 添加校验和验证程序。

  3. 添加用逗号分隔的权重值、检查位数的位置和 mod 值。 有关 Modulo作的详细信息,请参阅 Modulo作

    注意

    如果检查位不是校验和计算的一部分,请使用 0 作为检查位数的权重。 例如,在上一情况下,如果检查位数不用于计算检查位数,则权重 8 等于 0。

    配置的校验和验证器的屏幕截图。

参数

  • 权重: 定义从正则表达式位置 1 开始到最后一个位置的每个数字需要乘以的数字系列。 这将计算总和乘积。 权重位置仅指数字的顺序,不考虑任何非数字字符(如短划线)。
  • 国防部: 对上一个作的结果执行 Modulo作。
  • ModCoefficient: 对模数结果执行加法或减法。
  • CheckDigit:定义计算数字将与之进行比较的检查位的位置。

高级校验和验证器

通过使用 PositionBasedUpdate、UseAscii、MultiDigitResult、CheckDigitValue 等参数,无需编写脚本即可使用高级校验和。

  • 计算前的数字替换: 定义规则以在校验和计算之前基于位置或值替换数字。

  • 字母到 ASCII 的转换: 非数字字符现在可以转换为其 ASCII 值,而不是被忽略,从而为字母数字输入启用校验和支持。

  • 多位数结果的个位数缩减: 现在,通过将中间结果 (数字求和 12 → 1+2 = 3) ,可将中间结果减少为个位数,从而允许输出更加紧凑和一致。

  • Two-Digit 结果的后处理: 将除法或模数等数学运算应用于两位数的结果,以派生最终值。

  • 排除特定检查数字值:定义不允许检查位数值的列表。 如果计算结果与结果匹配,系统将修改输入并重新运行校验和逻辑。

  • 最终检查数字替换:计算后,特定检查位数值可以替换为替代项。

高级校验和验证程序参数

  • UseAscii: 将字母替换为其 ascii 值
  • PositionBasedUpdate: 假设校验和计算。 我们基于属性 match-position-replacewith 更新数字。
  • CheckDigitValue: 校验和计算后。 如果计算的校验和是重复列表的一部分,请对其执行定义的作。
  • ltiDigitResult:** Post/Intermediate 校验和计算。 如果 Post/中间计算结果为多个数字,请对其执行定义的作,直到它为个位数。

例如,在下面的 XML 中,我们传递了以下参数:weights、mod、checkdigit 和 ascii。

<Validators id="Validator_test_id_card_number">
<Validator type="Checksum">
<Param name="Weights">1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1</Param>
<Param name="Mod">9</Param>
<Param name="CheckDigit">7</Param>
<Param name="UseAscii">1</Param>
</Validator>
</Validators>
限制
  • 没有 UI 支持通过 UX 创建或编辑具有高级校验和逻辑的 SCT。
  • 在字母数字 SIT 中,如果未为字母定义权重,则会跳过字母。

日期验证程序

如果正则表达式中嵌入的日期值是要创建的新模式的一部分,则可以使用 日期验证程序 来测试该日期值是否符合条件。 例如,你想要为 9 位员工标识号创建 SIT。 前六位数字是 DDMMYY 格式的受雇日期,最后三位数字是随机生成的数字。 使用以下步骤验证前六位数字的格式是否正确:

  1. 使用以下正则表达式定义主元素:

    \d{9}
    
  2. 添加日期验证程序。

  3. 选择日期格式和开始偏移量。 由于日期字符串是前六位数字,因此偏移量为 0

    配置的日期验证器的屏幕截图。

将功能处理器作为验证程序

可以将函数处理器用于某些最常用的 SCT 作为验证程序。 使用函数处理器可以定义自己的正则表达式,同时确保它们通过 SIT 所需的其他检查。 例如,Func_India_Aadhar可确保定义的自定义正则表达式通过印度 Aadhar 卡所需的验证逻辑。 有关可以用作验证器的 DLP 函数的详细信息,请参阅 敏感信息类型函数

Luhn 检查 验证程序

如果有包含正则表达式的自定义敏感信息类型(应通过 Luhn 算法),则可以使用 Luhn 检查验证程序。

敏感信息类型附加检查

以下是可用的其他检查的定义和一些示例。

排除特定匹配项:此检查允许在检测正在编辑的模式的匹配项时定义要排除的关键字。 例如,你可能排除测试信用卡号(如 4111111111111111),以便其不会作为有效号码进行匹配。

以或不以字符开头:此检查允许定义字符,匹配项必须或禁止以其开头。 例如,如果希望模式仅检测以 41、42 或 43 开头的信用卡号码,请选择“开头为”,然后向列表中添加 41、42 和 43,并以逗号分隔。

以或不以字符结尾:此检查允许定义字符,匹配项必须或禁止以其结尾。 例如,如果员工 ID 号不能以 0 或 1 结尾,请选择“ 不以结尾 ”,并将 0 和 1 添加到列表中,用逗号分隔。

排除重复字符:此检查允许忽略所有数字都相同的匹配项。 例如,如果六位员工 ID 号不能包含所有数字都相同,则可以从员工 ID 的有效匹配项列表中选择“ 排除重复字符 ”,以排除111111、222222、333333、444444、555555、666666、777777、888888、999999和 000000。

包括或排除前缀:此检查可定义在匹配实体之前必须或不得立即找到的关键字。 根据所选内容,如果实体前面有此处包含的前缀,则实体将匹配或不匹配。 例如,如果 排除 前缀 GUID,则任何前面带有 GUID: 的实体都不匹配。

包括或排除后缀 此检查可定义在匹配实体之后必须或不得立即找到的关键字。 根据所选内容,如果实体后面跟你在此处包含的后缀,则它们匹配或不匹配。 例如,如果 排除 后缀 GUID,则后跟 :GUID 的任何文本都不匹配。