在 Exchange 2013 中自定义内置 DLP 敏感信息类型

适用于:Exchange Server 2013

在电子邮件中查找敏感信息时,您需要使用所谓的规则来描述此信息。 数据丢失预防 (DLP) 包括针对您可能会立即用到的最常见敏感信息类型的 51 个规则。 要使用这些规则,您必须将其包含在策略中。 您可能会发现需要调整这些内置规则以满足组织的特定需求,您可以通过创建自定义敏感信息类型来实现这一点。 本主题介绍如何自定义包含现有规则集的 XML 文件,以检测更广泛的潜在信用卡信息。

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

本主题将指导您完成 XML 规则自定义的下列过程:

要了解有哪些不同的规则部分以及它们的功能,请参阅本主题结尾的Term glossary

导出当前规则的 XML 文件

若要导出 XML,需要使用 Exchange 命令行管理程序。 有关详细信息,请参阅 Exchange 命令行管理程序

  1. 在 Exchange 命令行管理程序中,运行以下命令以显示组织的规则。

    Get-ClassificationRuleCollection
    

    如果尚未创建自己的任何规则,则只会看到标记为“Microsoft规则包”的默认内置敏感信息类型集合。

  2. 运行以下命令,将组织的规则存储在变量中:

    $ruleCollections = Get-ClassificationRuleCollection
    

    将规则存储在变量中,可使其稍后以适用于远程 PowerShell 命令的格式快速提供。

  3. 通过将 替换为 "C:\custompath\ 真实文件路径并运行以下命令,创建包含所有数据的格式化 XML 文件:

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

    注意

    如果命令 Get-ClassificationRuleCollection | Format-List Name,SerializedClassificationRuleCollection 的输出显示 SerializedClassificationRuleCollection 属性为空,则会收到以下错误,并且本主题中的其余过程将不起作用:

    调用具有“2”参数的“WriteAllBytes”的异常 () :“值不能为 null。 参数名称:bytes”

在 XML 中查找要修改的规则

上述 cmdlet 导出整个规则集,其中包含我们提供的 51 个默认规则。 接下来您将需要专门查找您想要修改的"信用卡号"规则。

  1. 使用文本编辑器打开您在前一节中导出的 XML 文件。

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

  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 并新建敏感信息类型

首先,您需要创建新的敏感信息类型,因为您无法直接修改默认规则。 您可以使用自定义敏感信息类型执行多种操作,如开发敏感信息规则包中所述。 在此示例中,我们使其尽量简单,仅删除确定证据,并将关键字添加到信用卡号规则。

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

<?xml version="1.0" encoding="utf-8"?>
<RulePackage xmlns="http://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,需要将其替换为新的 one。) 有多种生成 GUID 的方法,但可以通过键入 [guid]::NewGuid()在 PowerShell 中轻松完成此作。

<?xml version="1.0" encoding="utf-8"?>
<RulePackage xmlns="http://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>

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

现在您具有可上载到 Exchange 环境的新敏感信息类型,下一步是将规则设置得更加具体。 对规则进行修改,使其仅查找通过校验和但不需要额外的(确定)证据(例如关键字)的 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 位数字的确定证据的窗口。 要添加您自己的关键字,您需要定义关键字列表并在您的规则中进行引用。 以下 XML 添加关键字“company card”和“Contoso card”,以便在信用卡号的 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. 连接到 Exchange 命令行管理程序

  3. 将 替换为 \C:\custompath\ 实际文件路径,并运行以下命令:

    New-ClassificationRuleCollection -FileData ([System.IO.File]::ReadAllBytes('C:\custompath\MyNewRulePack.xml'))
    
  4. To confirm, type Y, and then press Enter.

  5. 键入 Get-DataClassification,确认您的新规则已上载,现在它将显示您的规则的名称。

要开始使用新规则检测敏感信息,您需将规则添加到 DLP 策略。 要了解如何将规则添加到策略,请参阅管理 DLP 策略

术语表

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

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

详细信息