自定义内置敏感信息类型

在内容中查找敏感信息时,需要在所谓的“规则”中描述该信息。 Microsoft Purview 数据丢失防护 (DLP) 包括最常见敏感信息类型的规则。 可以立即使用这些规则。 若要使用它们,必须在策略中包含它们。 可以调整这些内置规则以满足组织的特定需求。 可以通过创建自定义敏感信息类型来执行此操作。 本主题说明如何自定义包含现有规则集合的 XML 文件,以便检测更广泛的潜在信用卡信息。

您可以此为例,并将其应用于其他内置敏感信息类型。 有关默认敏感信息类型和 XML 定义的列表,请参阅 敏感信息类型实体定义

提示

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

导出当前规则的 XML 文件

若要导出 XML,需要 连接到安全性和符合性 PowerShell

  1. 在 PowerShell 中,键入以下内容以在屏幕上显示组织的规则。 如果您还没有创建您自己的规则,您将仅看到默认的内置规则"Microsoft 规则包"。

    Get-DlpSensitiveInformationTypeRulePackage
    
  2. 键入以下内容,将组织的规则存储在变量中。 将规则存储在变量中,可使其稍后以适用于 PowerShell 命令的格式快速提供。

    $ruleCollections = Get-DlpSensitiveInformationTypeRulePackage
    
  3. 键入以下内容,创建包含所有这些数据的格式化 XML 文件。

    [System.IO.File]::WriteAllBytes('C:\custompath\exportedRules.xml', $ruleCollections.SerializedClassificationRuleCollection)
    

    重要

    确保使用规则包实际存储的文件位置。 C:\custompath\ 是一个占位符。

在 XML 中查找要修改的规则

上述 cmdlet 导出了整个 规则集合,其中包括Microsoft提供的默认规则。 接下来,需要专门查找要修改的“信用卡号”规则。

  1. 使用文本编辑器打开在上一部分中导出的 XML 文件。

  2. 向下滚动到 <Rules> 标记,该标记是包含 DLP 规则的部分的开头。 由于此 XML 文件包含整个规则集合的信息,因此它包含顶部的其他信息,需要滚动过去才能访问规则。

  3. 查找 Func_credit_card ,以查找信用卡号规则定义。 在 XML 中,规则名称不能包含空格,因此通常用下划线替换空格,有时会缩写规则名称。 例如,美国社会安全号码规则(缩写为 SSN)。 信用卡号规则的 XML 应类似于以下代码示例:

    <Entity id="50842eb7-edc8-4019-85dd-5a5c1f2bb085"
           patternsProximity="300" recommendedConfidence="85">
          <Pattern confidenceLevel="85">
           <IdMatch idRef="Func_credit_card" />
            <Any minMatches="1">
              <Match idRef="Keyword_cc_verification" />
              <Match idRef="Keyword_cc_name" />
              <Match idRef="Func_expiration_date" />
            </Any>
          </Pattern>
        </Entity>
    

在 XML 中已找到信用卡号规则定义后,可以根据需要自定义规则的 XML。 有关 XML 定义的复习,请参阅本主题末尾的 术语术语表

修改 XML 并新建敏感信息类型

首先,您需要创建新的敏感信息类型,因为您无法直接修改默认规则。 可以使用自定义敏感信息类型执行各种操作,这些类型在 安全性和符合性 PowerShell 中创建自定义敏感信息类型中 进行了概述。 在此示例中,我们使其尽量简单,仅删除确定证据,并将关键字添加到信用卡号规则。

所有 XML 规则定义都基于以下常规模板构建。 需要复制并粘贴模板中的信用卡号定义 XML,修改一些值 (注意“..”。以下示例中的占位符) ,然后将修改后的 XML 作为可在策略中使用的新规则上传。

<?xml version="1.0" encoding="utf-16"?>
<RulePackage xmlns="https://schemas.microsoft.com/office/2011/mce">
  <RulePack id=". . .">
    <Version major="1" minor="0" build="0" revision="0" />
    <Publisher id=". . ." />
    <Details defaultLangCode=". . .">
      <LocalizedDetails langcode=" . . . ">
         <PublisherName>. . .</PublisherName>
         <Name>. . .</Name>
         <Description>. . .</Description>
      </LocalizedDetails>
    </Details>
  </RulePack>

 <Rules>
   <!-- Paste the Credit Card Number rule definition here.-->
      <LocalizedStrings>
         <Resource idRef=". . .">
           <Name default="true" langcode=" . . . ">. . .</Name>
           <Description default="true" langcode=". . ."> . . .</Description>
         </Resource>
      </LocalizedStrings>
   </Rules>
</RulePackage>

现在,您的 XML 应该如下所示。 因为规则包和规则使用它们的唯一 GUID 表示,您需要生成两个 GUID:一个用于规则包,一个用于替换信用卡号规则的 GUID。 以下代码示例中实体 ID 的 GUID 是内置规则定义的 GUID,需要将其替换为新的规则定义。 有几种方法可生成 GUID,可在 PowerShell 中通过键入 [guid]::NewGuid() 轻松生成。

<?xml version="1.0" encoding="utf-16"?>
<RulePackage xmlns="https://schemas.microsoft.com/office/2011/mce">
  <RulePack id="8aac8390-e99f-4487-8d16-7f0cdee8defc">
    <Version major="1" minor="0" build="0" revision="0" />
    <Publisher id="8d34806e-cd65-4178-ba0e-5d7d712e5b66" />
    <Details defaultLangCode="en">
      <LocalizedDetails langcode="en">
        <PublisherName>Contoso Ltd.</PublisherName>
        <Name>Financial Information</Name>
        <Description>Modified versions of the Microsoft rule package</Description>
      </LocalizedDetails>
    </Details>
  </RulePack>

 <Rules>
    <Entity id="db80b3da-0056-436e-b0ca-1f4cf7080d1f"
       patternsProximity="300" recommendedConfidence="85">
      <Pattern confidenceLevel="85">
        <IdMatch idRef="Func_credit_card" />
        <Any minMatches="1">
          <Match idRef="Keyword_cc_verification" />
          <Match idRef="Keyword_cc_name" />
          <Match idRef="Func_expiration_date" />
        </Any>
      </Pattern>
    </Entity>
      <LocalizedStrings>
         <Resource idRef="db80b3da-0056-436e-b0ca-1f4cf7080d1f">
<!-- This is the GUID for the preceding Credit Card Number entity because the following text is for that Entity. -->
           <Name default="true" langcode="en-us">Modified Credit Card Number</Name>
           <Description default="true" langcode="en-us">Credit Card Number that looks for additional keywords, and another version of Credit Card Number that doesn't require keywords (but has a lower confidence level)</Description>
         </Resource>
      </LocalizedStrings>
   </Rules>
</RulePackage>

从敏感信息类型中删除确证性证据要求

现在,你有了可以上传到Microsoft Purview 合规门户的新敏感信息类型。 下一步是使规则更具体。 修改规则,使其仅查找传递校验和但不需要其他 (确凿) 证据(如关键字)的 16 位数字。 为此,你需要删除查找佐证证据的 XML 部分。 佐证证据有助于减少误报。 在这种情况下,信用卡编号附近通常有特定的关键字或到期日期。 如果删除该证据,还应通过降低 confidenceLevel (在此示例中为 85) 来调整对找到信用卡号的信心。

<Entity id="db80b3da-0056-436e-b0ca-1f4cf7080d1f" patternsProximity="300"
      <Pattern confidenceLevel="85">
        <IdMatch idRef="Func_credit_card" />
      </Pattern>
    </Entity>

查找组织专用关键字

您可能需要确定证据,但需要不同或额外的关键字,您可能想要更改在何处查找该证据。 可以调整 以 patternsProximity 展开或缩小 16 位数字周围确凿证据的窗口。 若要添加自己的关键字,必须定义关键字 (keyword) 列表并在规则中引用它。 以下 XML 添加关键字“公司卡”和“Contoso 卡”,以便将信用卡编号的 150 个字符内包含这些短语的任何消息标识为信用卡编号。

<Rules>
<! -- Modify the patternsProximity to be "150" rather than "300." -->
    <Entity id="db80b3da-0056-436e-b0ca-1f4cf7080d1f" patternsProximity="150" recommendedConfidence="85">
      <Pattern confidenceLevel="85">
        <IdMatch idRef="Func_credit_card" />
        <Any minMatches="1">
          <Match idRef="Keyword_cc_verification" />
          <Match idRef="Keyword_cc_name" />
<!-- Add the following XML, which references the keywords at the end of the XML sample. -->
          <Match idRef="My_Additional_Keywords" />
          <Match idRef="Func_expiration_date" />
        </Any>
      </Pattern>
    </Entity>
<!-- Add the following XML, and update the information inside the <Term> tags with the keywords that you want to detect. -->
    <Keyword id="My_Additional_Keywords">
      <Group matchStyle="word">
        <Term caseSensitive="false">company card</Term>
        <Term caseSensitive="false">Contoso card</Term>
      </Group>
    </Keyword>

上传规则

要上载您的规则,需执行以下操作:

  1. 使用 Unicode 编码将其另存为 .xml 文件。 这一点很重要,因为如果文件使用其他编码保存,将无法正常运行。

  2. 连接到安全与合规 PowerShell

  3. 在 PowerShell 中,键入下面的代码。

    New-DlpSensitiveInformationTypeRulePackage -FileData ([System.IO.File]::ReadAllBytes('C:\custompath\MyNewRulePack.xml'))
    

    重要

    确保使用规则包实际存储的文件位置。 C:\custompath\ 是一个占位符。

  4. 若要确认,请先键入“Y”,再按 Enter

  5. 通过输入以下项验证新规则的显示名称及其是否已上传:

    Get-DlpSensitiveInformationType
    

要开始使用新规则检测敏感信息,您需将规则添加到 DLP 策略。 若要了解如何将规则添加到策略,请参阅 创建和部署数据丢失防护策略

术语表

下面您在此过程中遇到的术语的定义。



Term 定义
实体 实体是我们称之为敏感信息类型,例如信用卡数字。 每个实体都有一个唯一的 GUID 作为其 ID。 如果您复制 GUID 并在 XML 中搜索它,您将找到 XML 规则定义以及该 XML 规则的所有本地化翻译。 您也可以通过查找翻译的 GUID 并搜索该 GUID 来查找此定义。
函数 XML 文件引用 Func_credit_card,它是编译代码中的函数。 函数用于运行复杂的正则表达式,并验证校验和是否与内置规则匹配。 由于这种情况发生在代码中,因此某些变量不会显示在 XML 文件中。
IdMatch 这是尝试匹配的模式的标识符,例如信用卡号。
关键字列表 XML 文件还引用 keyword_cc_verificationkeyword_cc_name,它们是我们要在 实体内 patternsProximity 匹配的关键字列表。 这些匹配当前不会显示在 XML 中。
模式 模式包含敏感类型要查找的内容的列表。 这包括关键字、正则表达式和内部函数,它们用于执行验证校验和等任务。 敏感信息类型可以具有多个具有唯一置信度级别的模式。 这在创建敏感信息类型时非常有用:当它找到确定证据时,返回高可信度;当未找到确定证据时,则返回较低的可信度。
模式可信度 这是指 DLP 引擎找到匹配的可信度。 如果满足模式的要求,则可信度与模式匹配有关。 这是使用 Exchange 邮件流规则 (也称为传输规则) 时应考虑的置信度度量值。
patternsProximity 当我们找到类似于信用卡数字模式时,patternsProximity是与该数字之间的距离,我们将查找确凿证据。
recommendedConfidence 这是我们为此规则推荐的可信度。 建议的置信度级别适用于实体和相关性。 对于实体,永远不会针对 confidenceLevel 模式的 计算此数字。 它只是在您需要时帮助您选择可信度的一个建议。 对于相关性, confidenceLevel 模式的 必须大于 recommendedConfidence 要调用的邮件流规则操作的数字。 recommendedConfidence是调用操作的邮件流规则中使用的默认置信度级别。 如果需要,可以基于模式的置信度手动更改要调用的邮件流规则。

详细信息