次の方法で共有


Exchange 2013 での機密情報ルール パッケージの開発

製品: Exchange Server 2013

このトピックの XML スキーマとガイダンスは、分類ルール パッケージにおいて、機密情報の種類を定義する基礎的なデータ損失防止(DLP) XML ファイルの作成を開始するのに役立ちます。 整形式の XML ファイルを作成したら、Exchange 管理センターまたは Exchange 管理シェルを使用してインポートして、Microsoft Exchange Server 2013 DLP ソリューションを作成できます。 カスタム DLP ポリシー テンプレートである XML ファイルには、分類ルール パッケージである XML を含めることができます。 DLP テンプレートを XML ファイルとして定義する方法の概要については、「独自の DLP テンプレートおよび情報の種類の定義」を参照してください。

ルール オーサリング プロセスの概要

ルール オーサリング プロセスは、次の一般的な手順で構成されます。

  1. ターゲット環境を表す一連のテスト ドキュメントを準備します。 テスト ドキュメントのセットで考慮すべき主な特徴は次のとおりです。ドキュメントのサブセットには、ルールが作成されているエンティティまたはアフィニティが含まれており、ドキュメントのサブセットには、ルールが作成されているエンティティまたはアフィニティが含まれていません。

  2. 受け入れ要件 (精度と再現率) を満たすルールを特定して、対象となるコンテンツを特定します。 この識別作業では、ブールロジックでバインドされたルール内の複数の条件を開発する必要があります。これは、ターゲット ドキュメントを識別するための最小一致要件を一緒に満たします。

  3. 許容要件(適合率と再現率)に基づき、ルールの推奨信頼度を確立します。 推奨信頼要素を、そのルールに対する既定の信頼度と考えることができます。

  4. ポリシーをルールとともに生成し、サンプル テスト コンテンツを監視することによってルールの検証を行います。 その結果に基づいてルールまたは信頼度を調整し、検出されるコンテンツを最大化するとともに、誤検知(ポジティブ、ネガティブとも)を最小化します。 ポジティブ サンプル、ネガティブ サンプルともコンテンツ検出度が適切な水準に達するまで、上記の検証とルール調整を繰り返します。

ポリシー テンプレート ファイルの XML スキーマ定義の詳細については、「DLP ポリシー テンプレート ファイルの作成」を参照してください。

ルールの説明

DLP 機密情報検出エンジンでは、エンティティとアフィニティの 2 種類のメインルールを作成できます。 選択したルールの種類は、前のセクションで説明したように、コンテンツの処理に適用する必要がある処理ロジックの種類に基づいています。 ルール定義は、標準化された Rules XSD で説明されている形式で XML ドキュメントで構成されます。 ルールでは、一致するコンテンツの種類と、説明されている一致がターゲット コンテンツを表す信頼度レベルの両方について説明します。 信頼度レベルは、コンテンツにパターンが見つかった場合はエンティティが存在する確率を指定し、コンテンツに証拠が見つかった場合はアフィニティが存在する確率を指定します。

基本的なルールの構造

ルールの定義は、3 つの主要なコンポーネントから構成されます。

  1. エンティティ は、そのルールに対するマッチングとカウンティングのロジックを定義します。

  2. アフィニティ は、そのルールに対するマッチングのロジックを定義します。

  3. ローカライズ文字列 ルールの名前とその説明のローカライズ

処理の詳細を定義する他の 3 つのサポート要素が使用され、メイン コンポーネント内で参照されます:キーワード、Regex、および Function。 参照を使用すると、社会保障番号などのサポート要素の 1 つの定義を、複数の Entity または Affinity ルールで使用できます。 XML 形式の基本的なルール構造は、次のように表示されます。

<?xml version="1.0" encoding="utf-8"?>
<RulePackage xmlns="http://schemas.microsoft.com/office/2011/mce">
  <RulePack id="DAD86A92-AB18-43BB-AB35-96F7C594ADAA">
    <Version major="1" minor="0" build="0" revision="0"/>
    <Publisher id="619DD8C3-7B80-4998-A312-4DF0402BAC04"/>
    <Details defaultLangCode="en-us">
      <LocalizedDetails langcode="en-us">
        <PublisherName>DLP by EPG</PublisherName>
        <Name>CSO Custom Rule Pack</Name>
        <Description>This is a rule package for a EPG demo.</Description>
      </LocalizedDetails>
    </Details>
  </RulePack>
  <Rules>
    <!-- Employee ID -->
    <Entity id="E1CC861E-3FE9-4A58-82DF-4BD259EAB378" patternsProximity="300" recommendedConfidence="75">
      <Pattern confidenceLevel="75">
        <IdMatch idRef="Regex_employee_id" />
        <Match idRef="Keyword_employee" />
      </Pattern>
    </Entity>
    <Regex id="Regex_employee_id">(\s)(\d{9})(\s)</Regex>
    <Keyword id="Keyword_employee">
      <Group matchStyle="word">
        <Term>Identification</Term>
        <Term>Contoso Employee</Term>
      </Group>
    </Keyword>
    <LocalizedStrings>
      <Resource idRef="E1CC861E-3FE9-4A58-82DF-4BD259EAB378">
        <Name default="true" langcode="en-us">
          Employee ID
        </Name>
        <Description default="true" langcode="en-us">
          A custom classification for detecting Employee ID's
        </Description>
      </Resource>
    </LocalizedStrings>
  </Rules>
</RulePackage>

エンティティ ルール

エンティティ ルールは、社会保障番号などの適切に定義された識別子を対象としており、カウント可能なパターンのコレクションによって表されます。 エンティティ ルールは、一致のカウントと信頼レベルを返します。Count は見つかったエンティティのインスタンスの合計数であり、信頼レベルは、指定されたドキュメントに特定のエンティティが存在する確率です。 エンティティには、一意の識別子として "Id" 属性が含まれています。 識別子は、ローカライズ、バージョン管理、およびクエリに使用されます。 エンティティ ID は GUID である必要があります。 エンティティ ID は、他のエンティティまたはアフィニティで重複してはなりません。 これは、ローカライズされた文字列セクションで参照されます。

エンティティ ルールにはオプションの patternsProximity 属性 (既定値 = 300) が含まれています。これは、ブールロジックを適用して、一致条件を満たすために必要な複数のパターンの隣接性を指定するときに使用されます。 Entity 要素には、1 つ以上の子 Pattern 要素が含まれています。各パターンは、クレジット カード エンティティや運転免許証エンティティなどのエンティティの個別の表現です。 Pattern 要素には、サンプル データセットに基づいてパターンの精度を表す confidenceLevel の必須属性があります。 Pattern 要素には、次の 3 つの子要素を含めることができます。

  1. IdMatch - この要素は必須です。

  2. Match

  3. Any

パターン要素のいずれかが "true" を返すと、パターンが満たされたことになります。 エンティティ要素のカウントは、すべての検出されたパターンの合計カウントと等しくなります。

エンティティ数の数式。

ここで k はエンティティのパターン要素の数です。

1 つのパターン要素には、正確に 1 つの IdMatch 要素が必要です。 IdMatch は、パターンがマッチする識別子を表します(たとえば、クレジットカード番号や ITIN 番号)。 パターンのカウントとは、パターン要素とマッチする IdMatch の数です。 IdMatch 要素は、マッチ要素に対する近接ウィンドウをアンカーします。

Pattern 要素のもう 1 つの省略可能なサブ要素は、IdMatch 要素の検索をサポートするために照合する必要がある裏付け証拠を表す Match 要素です。 たとえば、信頼度が高いルールでは、クレジット カード番号を見つけるだけでなく、住所や名前など、クレジット カードの近接ウィンドウ内に追加の成果物がドキュメントに存在することが必要になる場合があります。 これらの余分な成果物は、Match 要素または Any 要素 (「Matching Methods and Techniques」セクションで詳しく説明) を使用して表されます。 複数の Match 要素を Pattern 定義に含めることができます。これは Pattern 要素に直接含めたり、Any 要素を使用して組み合わせて照合セマンティクスを定義したりできます。 IdMatch コンテンツの周囲に固定された近接ウィンドウで一致するものが見つかった場合は、true を返します。

IdMatch 要素と Match 要素はどちらも、一致する必要があるコンテンツの詳細を定義するのではなく、idRef 属性を使用して参照します。 この参照により、複数の Pattern コンストラクトでの定義の再利用が促進されます。

<Entity id="..." patternsProximity="300" >
    <Pattern confidenceLevel="85">
        <IdMatch idRef="FormattedSSN" />
        <Any minMatches="1">
            <Match idRef="SSNKeyword" />
            <Match idRef="USDate" />
            <Match idRef="USAddress" />
            <Match idRef="Name" />
        </Any>
    </Pattern>
    <Pattern confidenceLevel="65">
        <IdMatch idRef="UnformattedSSN" />
        <Match idRef="SSNKeyword" />
        <Any minMatches="1">
            <Match idRef="USDate" />
            <Match idRef="USAddress" />
            <Match idRef="Name" />
        </Any>
    </Pattern>
</Entity>

以前の XML で "... によって表される Entity Id 要素。は GUID である必要があり、ローカライズされた文字列セクションで参照されます。

エンティティ パターン近接ウィンドウ

エンティティは、パターン検出に使用される任意の "patternsProximity" 属性値(整数、既定では 300)を保持しています。 各パターンについて、属性値は、そのパターンに指定されている他のすべての一致の IdMatch 位置からの距離 (Unicode 文字) を定義します。 近接ウィンドウは、IdMatch の場所によってアンカーされ、IdMatch の左側と右側にウィンドウが展開されます。

一致する要素が呼び出されたテキスト パターン。

次の例は、近接ウィンドウが、SSN IdMatch 要素に少なくとも 1 つのアドレス、名前、または日付の照合が必要な照合アルゴリズムにどのように影響するかを示しています。 SSN2 と SSN3 は、近接ウィンドウ内に補強エビデンスがない、または部分的でしかないため、マッチが成立するのは SSN1 と SSN4 のみです。

近接ルールの一致と一致しない例。

メッセージ本文と各添付ファイルは、独立した項目として扱われます。 この条件は、近接ウィンドウがこれらの各項目の末尾を超えていないことを意味します。 各アイテム (添付ファイルまたは本文) には、それぞれの範囲内に idMatch と補強エビデンスの両方が存在している必要があります。

エンティティの信頼度

エンティティ要素の信頼度は、満たされるパターンの信頼度をすべて結合したものです。 これらは、次の式を使用して結合されます。

エンティティ信頼度の数式。

ここで、k はエンティティの Pattern 要素の数であり、一致しないパターンは信頼度 0 を返します。

例に示したエンティティ要素構造コードのサンプルを参照すると、両方のパターンがマッチした場合、次の計算によりエンティティの信頼度は 94.75% となります。

CLEntity= 1-[(1-CLPattern1) x (1-CLPattern1)]

= 1-[(1-0.85) x (1-0.65)]

= 1-(0.15 x 0.35)

= 94.75%

同様に、2 つめのパターンのみがマッチする場合、次の計算によりエンティティの信頼度は 65% となります。

CLEntity= 1-[(1-CLPattern1) X (1-CLPattern1)]

= 1-[(1-0) X (1-0.65)]

= 1-(1 X 0.35)

= 65%

これらの信頼度の値は、ルール オーサリング プロセスの一環として検証されるテスト ドキュメントのセットに基づき、個々のパターンのルールに割り当てられます。

アフィニティ ルール

アフィニティ ルールは、適切に定義された識別子を持たないコンテンツ(たとえば SOX 法や企業財務コンテンツ)を対象とします。 このコンテンツでは、一貫性のある識別子は 1 つ見つからず、代わりに分析では証拠のコレクションが存在するかどうかを判断する必要があります。 アフィニティ ルールはカウントを返しません。代わりに、検出された場合と関連付けられている信頼度レベルが返されます。 アフィニティのコンテンツは、独立したエビデンスの集合として表されます。 証拠は、特定の近さになっている、必要な一致物の集計です。 アフィニティ ルールでは、近接度は "evidencesProximity" 属性(既定では600)によって定義され、最低信頼度は "thresholdConfidenceLevel" によって定義されます。

アフィニティ ルールには、ローカライズ、バージョン管理、クエリに使用される一意の識別子の Id 属性が含まれています。 Entity ルールとは異なり、アフィニティ ルールは適切に定義された識別子に依存しないため、IdMatch 要素は含まれません。

各アフィニティ ルールには、検出される証拠とアフィニティ ルールに貢献する信頼度を定義する 1 つ以上の子 Evidence 要素が含まれています。 結果の信頼レベルがしきい値レベルを下回っている場合、アフィニティは見つからないと見なされます。 各証拠は、このドキュメントの "型" の裏付けとなる証拠を論理的に表し、confidenceLevel 属性はテスト データセット上のその Evidence の精度です。

エビデンス要素には、1 つまたは複数のマッチ要素または Any 子要素が含まれます。 すべての子マッチ要素および子 Any 要素がマッチした場合、エビデンスが検出され、信頼度はルールの信頼度計算に使用されます。 エンティティ ルールと同様の説明が、アフィニティ ルールのマッチ要素または Any 要素にも当てはまります。

<Affinity id="..."
          evidencesProximity="1000"
          thresholdConfidenceLevel="65">
    <Evidence confidenceLevel="40">
        <Any>
            <Match idRef="AssetsTerms" />
            <Match idRef="BalanceSheetTerms" />
            <Match idRef="ProfitAndLossTerms" />
        </Any>
    </Evidence>
    <Evidence confidenceLevel="40">
        <Any minMatches="2">
            <Match idRef="TaxTerms" />
            <Match idRef="DollarAmountTerms" />
            <Match idRef="SECTerms" />
            <Match idRef="SECFilingFormTerms" />
            <Match idRef="DollarTotalRegex" />
        </Any>
    </Evidence>
</Affinity>

アフィニティ近接ウィンドウ

アフィニティの近接ウィンドウについては、エンティティ パターンと異なる計算をします。 アフィニティ近接度は、スライディング ウィンドウ モデルに従います。 アフィニティ近接度アルゴリズムは、任意のウィンドウ内でマッチング エビデンスの最大数を検出しようとします。 近接ウィンドウ内のエビデンスには、検出対象のアフィニティ ルールについて定義されているしきい値を超える信頼度が必要です。

アフィニティ ルールの一致に近いテキスト。

アフィニティの信頼度

アフィニティの信頼度は、アフィニティ ルールの近接ウィンドウ内で検出されたエビデンスの合計と等しくなります。 エンティティ ルールの信頼度と似ていますが、主な違いは近接ウィンドウの適用です。 エンティティ ルールと同様、アフィニティ要素の信頼度は、すべての満たされたエビデンスの信頼度を結合したものですが、アフィニティ ルールの場合は近接ウィンドウ内で検出されたエビデンス要素の合計の最高値だけを表します。 エビデンスの信頼度は、次の方程式を使用して結合されます。

アフィニティ ルールの信頼度の数式。

ここで k は、近接ウィンドウ内でマッチしたアフィニティのエビデンス要素の数です。

図 4 アフィニティ ルール構造の例を参照すると、近接スライディング ウィンドウ内で 3 つのエビデンスすべてがマッチした場合、次の計算によりアフィニティの信頼度は 85.6% となります。 この値がアフィニティ ルールのしきい値 65 を超えると、ルールが一致します。

CLAffinity= 1 - [(1 - CLEvidence 1) X (1 - CLEvidence 2) X (1 - CLEvidence 2)]

= 1 - [(1 - 0.6) X (1 - 0.4) X (1 - 0.4)]

= 1 - (0.4 X 0.6 X 0.6)

= 85.6%

信頼度の高いアフィニティ ルールの一致の例。

同じルール定義の例を使用して、2 番目の証拠が近接ウィンドウの外側にあるため、最初の証拠のみが一致する場合、次の計算に基づいて最も高いアフィニティ信頼度レベルが 60% になり、しきい値 65 が満たされていないため、アフィニティ ルールは一致しません。

CLAffinity= 1 - [(1 - CLEvidence 1) X (1 - CLEvidence 2) X (1 - CLEvidence 2)]

= 1 - [(1 - 0.6) X (1 - 0) X (1 - 0)]

= 1 - (0.4 X 1 X 1)

= 60%

信頼度が低いアフィニティ ルールの一致の例。

信頼度の調整

ルール オーサリング プロセスの重要な側面の 1 つは、エンティティ ルールとアフィニティ ルール両方の信頼度を調整することです。 ルール定義を作成した後、代表的なコンテンツを使わずにルールを実行し、正確性のデータを集めます。 各パターンまたはエビデンスについて返ってきた結果を、テスト ドキュメントに期待される結果と比較します。

ルール一致証拠の比較を含むテーブル。

ルールが受け入れ要件を満たしている場合、つまり、パターンまたは証拠の信頼率が、確立されたしきい値 (たとえば 75%) を超えている場合、一致式は完了し、次の手順に移動できます。

パターンまたは証拠が信頼レベルを満たしていない場合は、それを再認証し (たとえば、裏付けとなる証拠を追加する、追加のパターン/証拠を削除または追加するなど)、この手順を繰り返します。

次に、上記のステップの結果に基づき、ルール内の各パターンまたはエビデンスの信頼度を調整します。 パターンまたは証拠ごとに、True Positives (TP) の数、ルールが作成されているエンティティまたはアフィニティを含むドキュメントのサブセット、および一致した結果として一致した False Positives (FP) の数を集計します。これは、ルールが作成されているエンティティまたはアフィニティを含まないドキュメントのサブセットであり、一致も返されます。 各パターン/エビデンスの信頼度を、次の計算式を使用して設定します。

信頼度 = 真陽性 / (真陽性 + 偽陽性)

パターンまたはエビデンス 真陽性 偽陽性 信頼度
P1または E1 4 1 80%
P2または E2 2 2 50%
Pnまたは En 9 10 47%

XML ファイルでのローカル言語の使用

ルール スキーマは、各エンティティ要素およびアフィニティ要素について、ローカライズされた名前と説明の格納をサポートします。 各エンティティ要素およびアフィニティ要素は、対応する要素が LocalizedStrings セクションに含まれている必要があります。 各要素をローカライズするには、リソース要素を LocalizedStrings 要素の子要素として組み入れ、各要素について複数のロケールに名前と説明を格納します。 Resource 要素には、ローカライズされる各要素の対応する idRef 属性と一致する必要な idRef 属性が含まれています。 Resource 要素の Locale 子要素には、指定されたロケールごとにローカライズされた名前と説明が含まれています。

<LocalizedStrings>
    <Resource idRef="guid">
        <Locale langcode="en-US" default="true">
            <Name>affinity name en-us</Name>
            <Description>
                affinity description en-us
            </Description>
        </Locale>
        <Locale langcode="de">
            <Name>affinity name de</Name>
            <Description>
                affinity description de
            </Description>
        </Locale>
    </Resource>
</LocalizedStrings>

分類ルール パック XML スキーマ定義

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:mce="http://schemas.microsoft.com/office/2011/mce"
           targetNamespace="http://schemas.microsoft.com/office/2011/mce"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified"
           id="RulePackageSchema">
  <xs:simpleType name="LangType">
    <xs:union memberTypes="xs:language">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value=""/>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="GuidType" final="#all">
    <xs:restriction base="xs:token">
      <xs:pattern value="[0-9a-fA-F]{8}\-([0-9a-fA-F]{4}\-){3}[0-9a-fA-F]{12}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="RulePackageType">
    <xs:sequence>
      <xs:element name="RulePack" type="mce:RulePackType"/>
      <xs:element name="Rules" type="mce:RulesType">
        <xs:key name="UniqueRuleId">
          <xs:selector xpath="mce:Entity|mce:Affinity"/>
          <xs:field xpath="@id"/>
        </xs:key>
        <xs:key name="UniqueProcessorId">
          <xs:selector xpath="mce:Regex|mce:Keyword"></xs:selector>
          <xs:field xpath="@id"/>
        </xs:key>
        <xs:key name="UniqueResourceIdRef">
          <xs:selector xpath="mce:LocalizedStrings/mce:Resource"/>
          <xs:field xpath="@idRef"/>
        </xs:key>
        <xs:keyref name="ReferencedRuleMustExist" refer="mce:UniqueRuleId">
          <xs:selector xpath="mce:LocalizedStrings/mce:Resource"/>
          <xs:field xpath="@idRef"/>
        </xs:keyref>
        <xs:keyref name="RuleMustHaveResource" refer="mce:UniqueResourceIdRef">
          <xs:selector xpath="mce:Entity|mce:Affinity"/>
          <xs:field xpath="@id"/>
        </xs:keyref>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="RulePackType">
    <xs:sequence>
      <xs:element name="Version" type="mce:VersionType"/>
      <xs:element name="Publisher" type="mce:PublisherType"/>
      <xs:element name="Details" type="mce:DetailsType">
        <xs:key name="UniqueLangCodeInLocalizedDetails">
          <xs:selector xpath="mce:LocalizedDetails"/>
          <xs:field xpath="@langcode"/>
        </xs:key>
        <xs:keyref name="DefaultLangCodeMustExist" refer="mce:UniqueLangCodeInLocalizedDetails">
          <xs:selector xpath="."/>
          <xs:field xpath="@defaultLangCode"/>
        </xs:keyref>
      </xs:element>
      <xs:element name="Encryption" type="mce:EncryptionType" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute name="id" type="mce:GuidType" use="required"/>
  </xs:complexType>
  <xs:complexType name="VersionType">
    <xs:attribute name="major" type="xs:unsignedShort" use="required"/>
    <xs:attribute name="minor" type="xs:unsignedShort" use="required"/>
    <xs:attribute name="build" type="xs:unsignedShort" use="required"/>
    <xs:attribute name="revision" type="xs:unsignedShort" use="required"/>
  </xs:complexType>
  <xs:complexType name="PublisherType">
    <xs:attribute name="id" type="mce:GuidType" use="required"/>
  </xs:complexType>
  <xs:complexType name="LocalizedDetailsType">
    <xs:sequence>
      <xs:element name="PublisherName" type="mce:NameType"/>
      <xs:element name="Name" type="mce:RulePackNameType"/>
      <xs:element name="Description" type="mce:OptionalNameType"/>
    </xs:sequence>
    <xs:attribute name="langcode" type="mce:LangType" use="required"/>
  </xs:complexType>
  <xs:complexType name="DetailsType">
    <xs:sequence>
      <xs:element name="LocalizedDetails" type="mce:LocalizedDetailsType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="defaultLangCode" type="mce:LangType" use="required"/>
  </xs:complexType>
  <xs:complexType name="EncryptionType">
    <xs:sequence>
      <xs:element name="Key" type="xs:normalizedString"/>
      <xs:element name="IV" type="xs:normalizedString"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="RulePackNameType">
    <xs:restriction base="xs:token">
      <xs:minLength value="1"/>
      <xs:maxLength value="64"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="NameType">
    <xs:restriction base="xs:normalizedString">
      <xs:minLength value="1"/>
      <xs:maxLength value="256"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="OptionalNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:minLength value="0"/>
      <xs:maxLength value="256"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="RestrictedTermType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="512"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="RulesType">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Entity" type="mce:EntityType"/>
        <xs:element name="Affinity" type="mce:AffinityType"/>
      </xs:choice>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Regex" type="mce:RegexType"/>
        <xs:element name="Keyword" type="mce:KeywordType"/>
      </xs:choice>
      <xs:element name="LocalizedStrings" type="mce:LocalizedStringsType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EntityType">
    <xs:sequence>
      <xs:element name="Pattern" type="mce:PatternType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="id" type="mce:GuidType" use="required"/>
    <xs:attribute name="patternsProximity" type="mce:ProximityType" use="required"/>
    <xs:attribute name="recommendedConfidence" type="mce:ProbabilityType"/>
    <xs:attribute name="workload" type="mce:WorkloadType"/>
  </xs:complexType>
  <xs:complexType name="PatternType">
    <xs:sequence>
      <xs:element name="IdMatch" type="mce:IdMatchType"/>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Match" type="mce:MatchType"/>
        <xs:element name="Any" type="mce:AnyType"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="confidenceLevel" type="mce:ProbabilityType" use="required"/>
  </xs:complexType>
  <xs:complexType name="AffinityType">
    <xs:sequence>
      <xs:element name="Evidence" type="mce:EvidenceType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="id" type="mce:GuidType" use="required"/>
    <xs:attribute name="evidencesProximity" type="mce:ProximityType" use="required"/>
    <xs:attribute name="thresholdConfidenceLevel" type="mce:ProbabilityType" use="required"/>
    <xs:attribute name="workload" type="mce:WorkloadType"/>
  </xs:complexType>
  <xs:complexType name="EvidenceType">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Match" type="mce:MatchType"/>
        <xs:element name="Any" type="mce:AnyType"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="confidenceLevel" type="mce:ProbabilityType" use="required"/>
  </xs:complexType>
  <xs:complexType name="IdMatchType">
    <xs:attribute name="idRef" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:complexType name="MatchType">
    <xs:attribute name="idRef" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:complexType name="AnyType">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Match" type="mce:MatchType"/>
        <xs:element name="Any" type="mce:AnyType"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="minMatches" type="xs:nonNegativeInteger" default="1"/>
    <xs:attribute name="maxMatches" type="xs:nonNegativeInteger" use="optional"/>
  </xs:complexType>
  <xs:simpleType name="ProximityType">
    <xs:restriction base="xs:positiveInteger">
      <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ProbabilityType">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="100"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="WorkloadType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Exchange"/>
      <xs:enumeration value="Outlook"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="RegexType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="id" type="xs:token" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="KeywordType">
    <xs:sequence>
      <xs:element name="Group" type="mce:GroupType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="id" type="xs:token" use="required"/>
  </xs:complexType>
  <xs:complexType name="GroupType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="Term" type="mce:TermType" maxOccurs="unbounded"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="matchStyle" default="word">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="word"/>
          <xs:enumeration value="string"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="TermType">
    <xs:simpleContent>
      <xs:extension base="mce:RestrictedTermType">
        <xs:attribute name="caseSensitive" type="xs:boolean" default="false"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="LocalizedStringsType">
    <xs:sequence>
      <xs:element name="Resource" type="mce:ResourceType" maxOccurs="unbounded">
        <xs:key name="UniqueLangCodeUsedInNamePerResource">
          <xs:selector xpath="mce:Name"/>
          <xs:field xpath="@langcode"/>
        </xs:key>
        <xs:key name="UniqueLangCodeUsedInDescriptionPerResource">
          <xs:selector xpath="mce:Description"/>
          <xs:field xpath="@langcode"/>
        </xs:key>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ResourceType">
    <xs:sequence>
      <xs:element name="Name" type="mce:ResourceNameType" maxOccurs="unbounded"/>
      <xs:element name="Description" type="mce:DescriptionType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="idRef" type="mce:GuidType" use="required"/>
  </xs:complexType>
  <xs:complexType name="ResourceNameType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="default" type="xs:boolean" default="false"/>
        <xs:attribute name="langcode" type="mce:LangType" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="DescriptionType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="default" type="xs:boolean" default="false"/>
        <xs:attribute name="langcode" type="mce:LangType" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:schema>

関連情報

データ損失防止

独自の DLP テンプレートおよび情報の種類の定義