使用 PowerShell 建立自訂機密資訊類型

本文說明如何建立定義自定義敏感性資訊類型的 XML 規則套件檔案。 本文說明可識別員工標識碼的自定義敏感性信息類型。 您可以使用本文中的範例 XML 作為您自己 XML 檔案的起點。

如需敏感性資訊類型的詳細資訊,請 參閱瞭解敏感性信息類型

建立格式正確的 XML 檔案之後,您可以使用 PowerShell 將它上傳至 Microsoft 365。 然後,您就可以在原則中使用自定義敏感性信息類型。 您可以依預期測試其偵測敏感性資訊的有效性。

注意事項

如果您不需要PowerShell提供的細部控制件,您可以在 Microsoft Purview 合規性入口網站 中建立自定義敏感性資訊類型。 若要進一步了解,請參閱建立自訂機密資訊類型

提示

如果您不是 E5 客戶,請使用 90 天的 Microsoft Purview 解決方案試用版來探索其他 Purview 功能如何協助貴組織管理數據安全性與合規性需求。 立即從 Microsoft Purview 合規性入口網站 試用中樞開始。 瞭解 有關註冊和試用版條款的詳細數據

重要免責聲明

Microsoft 支援服務 無法協助您建立內容比對定義。

若要進行自定義內容比對開發、測試和偵錯,您必須使用自己的內部 IT 資源,或使用諮詢服務,例如 Microsoft 諮詢服務 (MCS) 。 Microsoft 支援服務 工程師可以針對這項功能提供有限的支援,但無法保證自定義內容比對建議會完全符合您的需求。

MCS 可以提供正則表示式以供測試之用。 他們也可以提供協助,以針對未如預期般運作的現有 RegEx 模式,透過單一特定內容範例進行疑難解答。

請參閱本文中 要注意的潛在驗證問題

如需用於處理文字之 Boost.RegEx (先前稱為 RegEx++) 引擎的詳細資訊,請參閱 Boost.Regex 5.1.3.。

注意事項

如果您在自定義敏感性資訊類型中使用連字元 (&) 做為關鍵詞的一部分,則必須新增額外的字詞,並在字元周圍加上空格。 例如,請不要L&P使用 L & P

規則套件的範例 XML

以下是我們在本文中建立之規則套件的範例 XML。 下列各節會說明元素和屬性。

<?xml version="1.0" encoding="UTF-16"?>
<RulePackage xmlns="http://schemas.microsoft.com/office/2011/mce">
<RulePack id="DAD86A92-AB18-43BB-AB35-96F7C594ADAA">
  <Version build="0" major="1" minor="0" revision="0"/>
  <Publisher id="619DD8C3-7B80-4998-A312-4DF0402BAC04"/>
  <Details defaultLangCode="en-us">
    <LocalizedDetails langcode="en-us">
      <PublisherName>Contoso</PublisherName>
      <Name>Employee ID Custom Rule Pack</Name>
      <Description>
      This rule package contains the custom Employee ID entity.
      </Description>
    </LocalizedDetails>
  </Details>
</RulePack>
<Rules>
<!-- Employee ID -->
  <Entity id="E1CC861E-3FE9-4A58-82DF-4BD259EAB378" patternsProximity="300" recommendedConfidence="75">
    <Pattern confidenceLevel="65">
      <IdMatch idRef="Regex_employee_id"/>
    </Pattern>
    <Pattern confidenceLevel="75">
      <IdMatch idRef="Regex_employee_id"/>
      <Match idRef="Func_us_date"/>
    </Pattern>
    <Pattern confidenceLevel="85">
      <IdMatch idRef="Regex_employee_id"/>
      <Match idRef="Func_us_date"/>
      <Any minMatches="1">
        <Match idRef="Keyword_badge" minCount="2"/>
        <Match idRef="Keyword_employee"/>
      </Any>
      <Any minMatches="0" maxMatches="0">
        <Match idRef="Keyword_false_positives_local"/>
        <Match idRef="Keyword_false_positives_intl"/>
      </Any>
    </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>
  <Keyword id="Keyword_badge">
    <Group matchStyle="string">
      <Term>card</Term>
      <Term>badge</Term>
      <Term caseSensitive="true">ID</Term>
    </Group>
  </Keyword>
  <Keyword id="Keyword_false_positives_local">
    <Group matchStyle="word">
      <Term>credit card</Term>
      <Term>national ID</Term>
    </Group>
  </Keyword>
  <Keyword id="Keyword_false_positives_intl">
    <Group matchStyle="word">
      <Term>identity card</Term>
      <Term>national ID</Term>
      <Term>EU debit card</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 IDs.
      </Description>
      <Description default="false" langcode="de-de">
      Description for German locale.
      </Description>
    </Resource>
  </LocalizedStrings>
</Rules>
</RulePackage>

您的主要需求為何? [規則、實體、模式元素]

請務必了解規則之 XML 架構的基本結構。 您對 結構的瞭解可協助您的自定義敏感性資訊類型識別正確的內容。

規則會定義一或多個實體, (也稱為敏感性資訊類型) 。 每個實體都會定義一或多個模式。 模式是原則在評估內容 (時所尋找的內容,例如電子郵件和檔) 。

在 XML 標記中,“rules” 表示定義敏感性資訊類型的模式。 請勿將本文中規則的參考與其他 Microsoft 功能中常見的「條件」或「動作」產生關聯。

最簡單的案例:具有一種模式的實體

以下是簡單的案例:您想要讓原則識別包含組織中所使用之九位數員工標識碼的內容。 模式是指規則中識別九位數數位的正則表達式。 包含九位數數位的任何內容都符合模式。

具有一個模式的實體圖表。

但是,此模式可能會識別 任何 九位數的數位,包括較長的數位或其他不是員工標識碼的九位數數字類型。 這種類型的垃圾比對稱為 判。

更常見的案例:具有多種模式的實體

由於可能會有誤判,因此您通常會使用多個模式來定義實體。 多個模式提供目標實體的支持辨識項。 例如,其他關鍵詞、日期或其他文字可協助識別原始實體 (例如,) 九位數的員工編號。

例如,若要提高識別包含員工標識碼之內容的可能性,您可以定義要尋找的其他模式:

  • 識別僱用日期的模式。
  • 識別僱用日期和「員工標識碼」關鍵詞的模式。

具有多個模式的實體圖表。

多重模式相符專案有一些要考慮的重點:

  • 模式所需的辨識項越多,信賴等級就越高。 根據信賴等級,您可以採取下列動作:

    • 使用更嚴格的動作 (例如封鎖具有較高信賴度相符項目的內容) 。
    • 使用較不嚴格的動作 (例如傳送信賴度較低的) 通知。
  • 支援 IdMatchMatch 項目參考實際為專案子系的 Rule RegExes 和關鍵字,而非 Pattern。 參考Pattern 支援元素,但它們會包含在 中 Rule。 此行為表示支援專案的單一定義,例如正則表達式或關鍵詞清單,可以由多個實體和模式參考。

您需要識別哪些實體? [Entity 元素,ID 屬性]

實體是敏感性資訊類型,例如信用卡號碼,具有妥善定義的模式。 每個實體都有唯一的 GUID 作為其標識碼。

為實體命名並產生其 GUID

  1. 在您選擇的 XML 編輯器中 Rules ,新增 和 Entity 元素。
  2. 新增包含自定義實體名稱的批註,例如員工標識符。 稍後,您會將實體名稱新增至本地化字串區段,而該名稱會在您建立原則時出現在系統管理中心。
  3. 為您的實體產生唯一的 GUID。 例如,在 Windows PowerShell 中,您可以執行 命令 [guid]::NewGuid()。 稍後,您也會將 GUID 新增至實體的當地語系化字串區段。

顯示規則和實體元素的 XML 標記。

您想要比對哪種模式? [Pattern 元素、IdMatch 元素、Regex 元素]

模式包含敏感性資訊類型所要尋找的清單。 此模式可以包含 RegExes、關鍵詞和內建函式。 函式會執行像是執行 RegExes 以尋找日期或位址等工作。 敏感性資訊類型可能會有多個模式,而每個模式的可信度都不同。

在下圖中,所有模式都會參考相同的正則表示式。 此 RegEx 會尋找以空格(\s) ... (\s)符 括住的九位數數位(\d{9})。 元素 IdMatch 會參考這個正則表達式,這是尋找員工標識符實體之所有模式的常見需求。 IdMatch 是模式嘗試比對的標識碼。 元素 Pattern 必須只有一個 IdMatch 元素。

XML 標記,顯示參考單一 Regex 元素的多個 Pattern 元素。

滿足的模式比對會傳回計數和信賴等級,您可以在原則的條件中使用。 當您將偵測敏感性資訊類型的條件新增至原則時,您可以編輯計數和信賴等級,如下圖所示。 本文稍後會說明信賴等級 (也稱為比對精確度) 。

實例計數和比對精確度選項。

正則表達式功能強大,因此您必須知道一些問題。 例如,識別太多內容的 RegEx 可能會影響效能。 若要深入瞭解這些問題,請參閱本文稍後 要注意的潛在驗證問題 一節。

您要要求其他辨識項嗎? [Match 元素,minCount 屬性]

除了 IdMatch之外,模式還可以使用 Match 專案來要求額外的支持辨識項,例如關鍵詞、RegEx、日期或位址。

Pattern可能包含多個Match元素:

  • 直接在專案中 Pattern
  • 使用 Any 項目來合併。

Match 元素會與隱含 AND 運算符聯結。 換句話說,必須滿足所有 Match 元素,才能比對模式。

您可以使用 元素 Any 來引進 AND 或 OR 運算子。 Any本文稍後會說明 元素。

您可以使用選擇性 minCount 屬性來指定需要為每個 Match 元素找到相符項目的實例數目。 例如,您可以指定只有在至少找到關鍵詞清單中的兩個關鍵詞時,才會滿足模式。

XML 標記,顯示具有minOccurs屬性的 Match 元素。

關鍵字 [Keyword、Group 及 Term 元素、matchStyle 和 caseSensitive 屬性]

如先前所述,識別敏感性資訊通常需要額外的關鍵詞做為確認辨識項。 例如,除了比對九位數的數位之外,您還可以使用 關鍵詞元素來尋找像是 「card」、“badge” 或 “ID” 等字組。 元素 Keyword 具有可 ID 由多個模式或實體中的多個 Match 元素參考的屬性。

關鍵詞會包含為專案中的Group項目清單Term。 元素 Group 具有具有兩個 matchStyle 可能值的屬性:

  • matchStyle=“word”:字組比對會識別以空格符或其他分隔符括住的整字。 除非您需要比對亞洲語言中的單字或單字部分,否則您應該一律使用 單字

  • matchStyle=“string”:字串比對會識別字串,無論它們所圍繞的專案。 例如,“ID” 同時符合 “bid” 和 “idea”。 string只有在您需要比對亞洲文字,或關鍵字可能包含在其他字串中時,才使用 。

最後,您可以使用 caseSensitive 項目的 屬性 Term 來指定內容必須完全符合 關鍵詞,包括小寫和大寫字母。

顯示參照關鍵詞之 Match 元素的 XML 標記。

規則運算式 [Regex 元素]

在此範例中,員工 ID 實體已經使用 IdMatch 項目來參考模式的正則表達式:以空格符括住的九位數數位。 此外,模式可以使用 Match 元素來參考其他 Regex 元素,以識別相互關聯的辨識項,例如五位數或九位數的數位,格式為美國郵遞編碼。

其他模式,例如日期或地址 [內建函式]

敏感性資訊類型也可以使用內建函數來識別相互關聯的辨識項。 例如,美國日期、歐盟日期、到期日或美國位址。 Microsoft 365 不支援上傳您自己的自定義函式。 但是,當您建立自定義敏感性資訊類型時,您的實體可以參考內建函式。

例如,員工標識符徽章上有僱用日期,因此這個自定義實體可以使用內建函式 Func_us_date 來識別美國常用格式的日期。

如需詳細資訊,請參閱 敏感性資訊類型函式

顯示參照內建函數之 Match 元素的 XML 標記。

不同的辨識項組合 [Any 元素、minMatches 和 maxMatches 屬性]

在專案中 Pattern ,所有 IdMatchMatch 元素都會與隱含 AND 運算符聯結。 換句話說,必須先滿足所有相符專案,才能滿足模式。

您可以使用 元素來群組Match元素,以建立更有彈性的Any比對邏輯。 例如,您可以使用 Any 專案來比對其子 Match 元素的所有、無或確切子集。

元素 Any 具有選擇性的 minMatchesmaxMatches 屬性,您可以用來定義在比對模式之前必須滿足多少子 Match 專案。 這些屬性會定義項目Match目,而不是為相符專案找到的辨識項實例數目。 若要定義特定相符項目的實例數目下限,例如清單中的兩個關鍵詞,請使用 minCount 元素的 屬性 Match (如上) 所示。

與至少一個子 Match 元素相符

若只要要求元素數 Match 目下限,您可以使用 minMatches 屬性。 實際上,這些 Match 元素會與隱含 OR 運算符聯結。 Any如果找到美國格式的日期或任一列表中的關鍵詞,就會滿足此元素。

<Any minMatches="1" >
     <Match idRef="Func_us_date" />
     <Match idRef="Keyword_employee" />
     <Match idRef="Keyword_badge" />
</Any>

比對任一子 Match 元素的精確子集

若要要求確切的項目Match數目,請將 和 maxMatches 設定minMatches為相同的值。 只有在找到一個日期或關鍵詞時,才會滿足這個專案 Any 。 如果有其他相符專案,則模式不會相符。

<Any minMatches="1" maxMatches="1" >
     <Match idRef="Func_us_date" />
     <Match idRef="Keyword_employee" />
     <Match idRef="Keyword_badge" />
</Any>

不比對任何子系 「Match」 元素

如果您想要要求滿足模式的特定辨識項,您可以將minMatches和 maxMatches 設定為0。 如果您有關鍵詞清單或其他可能表示誤判的辨識項,這會很有用。

例如,員工標識符實體會尋找關鍵詞 「card」,因為它可能參考「標識符卡」。 不過,如果卡片只出現在片語 「credit card」 中,則此內容中的「card」 不太可能表示「標識符卡」。 因此,您可以將「信用卡」新增為您想要排除而無法滿足模式之詞彙清單的關鍵詞。

<Any minMatches="0" maxMatches="0" >
    <Match idRef="Keyword_false_positives_local" />
    <Match idRef="Keyword_false_positives_intl" />
</Any>

比對數個唯一字詞

如果您想要比對數個唯一字詞,請使用 uniqueResults 參數,設定為 true,如下列範例所示:

<Pattern confidenceLevel="75">
    <IdMatch idRef="Salary_Revision_terms" />
    <Match idRef=" Salary_Revision_ID " minCount="3" uniqueResults="true" />
</Pattern>

在此範例中,使用至少三個唯一相符項目定義薪資修訂的模式。

其他辨識項必須有多接近實體? [patternsProximity 屬性]

您的敏感性資訊類型正在尋找代表員工標識碼的模式,而作為該模式的一部分,它也會尋找類似關鍵詞的關鍵詞,例如「標識符」等可確認的辨識項。 這種辨識項越接近,模式就越有可能是實際的員工標識符。 您可以使用 Entity 元素的必要 patternsProximity 屬性,判斷模式中其他辨識項與實體的接近程度。

顯示模式的 XML 標記Proximity 屬性。

針對實體中的每個模式,patternsProximity 屬性值會定義 Unicode 字元中 (的距離,) 與針對該模式指定的所有其他相符專案 IdMatch 位置。 鄰近視窗會以IdMatch位置錨定,而視窗會延伸至IdMatch的左右兩側。

鄰近視窗的圖表。

下列範例說明鄰近性視窗如何影響模式比對,其中員工標識碼自定義實體的IdMatch元素需要至少一個關鍵詞或日期的相符專案。 只有ID1符合,因為針對ID2和ID3,在鄰近性視窗內找不到或只找到部分的相互關聯辨識項。

相互關聯辨識項和鄰近性視窗的圖表。

對於電子郵件,訊息本文和每個附件會被視為個別專案。 這表示鄰近視窗不會延伸到每個項目的結尾。 對於每個 (附件或本文) 的專案,idMatch 和 corroborative 辨識項都必須位於該專案中。

不同模式的正確信賴等級為何? [confidenceLevel 屬性,recommendedConfidence 屬性]

模式需要的辨識項越多,您對於實際實體 (如員工標識碼) 在模式相符時識別的信賴度就越高。 例如,相較於您在只需要九位數標識碼的模式中,您對於需要九位數標識碼、僱用日期和關鍵詞的模式更有信心。

Pattern 元素有必要的 confidenceLevel 屬性。 您可以將 confidenceLevel 的值 (65/75/85 之間的值,表示低/中/高信賴等級) 為實體中每個模式的唯一標識符。 當您上傳自訂機密資訊類型,然後建立原則後,您便可以在您建立的規則條件中參照這些信賴等級。

XML 標記顯示具有不同 confidenceLevel 屬性值的 Pattern 元素。

除了每個 Pattern 的 confidenceLevel 以外,Entity 還具有 recommendedConfidence 屬性。 建議的信賴屬性可視為規則的預設信賴等級使用。 當您在原則中建立規則時,如果您未指定要使用之規則的信賴等級,該規則會根據實體的建議信賴等級來比對。 請注意,如果遺漏規則套件中的每個實體標識符,則 recommendedConfidence 屬性是必要的,您將無法儲存使用敏感性資訊類型的原則。

您要在合規性入口網站的UI中支援其他語言嗎? [LocalizedStrings 元素]

如果您的合規性小組使用 Microsoft Purview 合規性入口網站 以不同地區設定和不同語言建立原則,您可以提供自定義敏感性資訊類型的當地語系化名稱和描述版本。 當您的合規性小組以您支援的語言使用 Microsoft 365 時,他們會在 UI 中看到當地語系化名稱。

實例計數和比對精確度設定。

Rules 元素必須包含 LocalizedStrings 元素,其中包含參考自定義實體 GUID 的 Resource 元素。 接著,每個 Resource 元素會包含一或多個 Name 和 Description 元素,每個元素都會使用 langcode 屬性來提供特定語言的當地語系化字串。

顯示 LocalizedStrings 項目內容的 XML 標記。

請注意,您只能在合規性中心的 UI 外觀自訂機密資訊類型時,使用當地語系化字串。 您無法使用當地語系化字串以提供不同當地語系化版本的關鍵字清單或規則運算式。

其他規則套件標記 [RulePack GUID]

最後,每個 RulePackage 的開頭都包含一些您需要填入的一般資訊。 您可以使用下列標記作為樣本,並取代 “ 。 . . 佔位元與您自己的資訊。

最重要的是,您必須產生 RulePack 的 GUID。 稍早,您已為實體產生 GUID;這是 RulePack 的第二個 GUID。 產生 GUID 的方式有數種,但您可以透過在 PowerShell 中輸入 [guid]::NewGuid()便可輕鬆完成。

Version 元素也很重要。 當您第一次上傳規則套件時,Microsoft 365 會記下版本號碼。 稍後,如果您更新規則套件並上傳新版本,請務必更新版本號碼,否則 Microsoft 365 不會部署規則套件。

<?xml version="1.0" encoding="utf-16"?>
<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>
  . . .
 </Rules>
</RulePackage>

完成後,您的 RulePack 元素看起來應該像這樣。

顯示 RulePack 元素的 XML 標記。

驗證

Microsoft 365 會公開常用 SIT 的函式處理器作為驗證程式。 以下是它們的清單。

目前可用的驗證程式清單

  • Func_credit_card
  • Func_ssn
  • Func_unformatted_ssn
  • Func_randomized_formatted_ssn
  • Func_randomized_unformatted_ssn
  • Func_aba_routing
  • Func_south_africa_identification_number
  • Func_brazil_cpf
  • Func_iban
  • Func_brazil_cnpj
  • Func_swedish_national_identifier
  • Func_india_aadhaar
  • Func_uk_nhs_number
  • Func_Turkish_National_Id
  • Func_australian_tax_file_number
  • Func_usa_uk_passport
  • Func_canadian_sin
  • Func_formatted_itin
  • Func_unformatted_itin
  • Func_dea_number_v2
  • Func_dea_number
  • Func_japanese_my_number_personal
  • Func_japanese_my_number_corporate

這可讓您定義自己的 RegEx 並加以驗證。 若要使用驗證程式,請定義您自己的 RegEx,並使用 Validator 屬性來新增您選擇的函式處理器。 定義之後,您可以在 SIT 中使用此 RegEx。

在下列範例中,會針對信用卡定義正則表示式 - Regex_credit_card_AdditionalDelimiters,然後使用 Func_credit_card 做為驗證程式,使用信用卡的總和檢查碼函式進行驗證。

<Regex id="Regex_credit_card_AdditionalDelimiters" validators="Func_credit_card"> (?:^|[\s,;\:\(\)\[\]"'])([0-9]{4}[ -_][0-9]{4}[ -_][0-9]{4}[ -_][0-9]{4})(?:$|[\s,;\:\(\)\[\]"'])</Regex>
<Entity id="675634eb7-edc8-4019-85dd-5a5c1f2bb085" patternsProximity="300" recommendedConfidence="85">
<Pattern confidenceLevel="85">
<IdMatch idRef="Regex_credit_card_AdditionalDelimiters" />
<Any minMatches="1">
<Match idRef="Keyword_cc_verification" />
<Match idRef="Keyword_cc_name" />
<Match idRef="Func_expiration_date" />
</Any>
</Pattern>
</Entity>

Microsoft 365 提供兩個泛型驗證程式

總和檢查碼驗證程式

在此範例中,已定義員工標識碼的總和檢查碼驗證程序來驗證 EmployeeID 的 RegEx。

<Validators id="EmployeeIDChecksumValidator">
<Validator type="Checksum">
<Param name="Weights">2, 2, 2, 2, 2, 1</Param>
<Param name="Mod">28</Param>
<Param name="CheckDigit">2</Param> <!-- Check 2nd digit -->
<Param name="AllowAlphabets">1</Param> <!— 0 if no Alphabets -->
</Validator>
</Validators>
<Regex id="Regex_EmployeeID" validators="ChecksumValidator">(\d{5}[A-Z])</Regex>
<Entity id="675634eb7-edc8-4019-85dd-5a5c1f2bb085" patternsProximity="300" recommendedConfidence="85">
<Pattern confidenceLevel="85">
<IdMatch idRef="Regex_EmployeeID"/>
</Pattern>
</Entity>

日期驗證程式

在此範例中,會針對其為 date 的 RegEx 部分定義日期驗證程式。

<Validators id="date_validator_1"> <Validator type="DateSimple"> <Param name="Pattern">DDMMYYYY</Param> <!—supported patterns DDMMYYYY, MMDDYYYY, YYYYDDMM, YYYYMMDD, DDMMYYYY, DDMMYY, MMDDYY, YYDDMM, YYMMDD --> </Validator> </Validators>
<Regex id="date_regex_1" validators="date_validator_1">\d{8}</Regex>

針對 Exchange Online 變更

以前您可能使用 Exchange Online PowerShell 以匯入 DLP 的自訂機密資訊類型。 現在,您的自定義敏感性資訊類型可以在 Exchange 系統管理中心]“https://go.microsoft.com/fwlink/p/?linkid=2059104") 和 Microsoft Purview 合規性入口網站 中使用。 在此改進過程中,您應該使用安全性 & 合規性 PowerShell 來匯入自定義敏感性資訊類型,您無法再從 Exchange Online PowerShell 匯入它們。 自訂機密資訊類型將繼續以與過去相同的方式運作,不過,要讓合規性中心的自訂機密資訊類型的變更顯示在 Exchange 系統管理中心,可能需要一個小時 (最多)。

請注意,在合規性中心中,您使用的是New-DlpSensitiveInformationTypeRulePackage Cmdlet 上傳規則套件。 (之前,在 Exchange 系統管理中心,您使用了 ClassificationRuleCollection 的 Cmdlet.)

上傳您的規則套件

若要上傳您的規則套件,請執行下列步驟:

  1. 使用 Unicode 編碼方式將它儲存為 .xml 檔。

  2. 連線到安全性與合規性 PowerShell

  3. 使用下列語法:

    New-DlpSensitiveInformationTypeRulePackage -FileData ([System.IO.File]::ReadAllBytes('PathToUnicodeXMLFile'))
    

    此範例會從 C:\My Documents 上傳名為 MyNewRulePack.xml 的 Unicode XML 檔。

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

    如需詳細的語法和參數資訊,請參閱 New-DlpSensitiveInformationTypeRulePackage

    注意事項

    套件支援的規則數量上限為 10 個,但每個套件可以包含多個敏感性資訊類型的定義。

  4. 若要確認您已成功建立新的機密資訊類型,請執行下列任一步驟:

    • 執行 Get-DlpSensitiveInformationTypeRulePackage Cmdlet 來驗證新的規則套件,列於:

      Get-DlpSensitiveInformationTypeRulePackage
      
    • 執行 Get-DlpSensitiveInformationType Cmdlet 來驗證機密資訊類型,列於:

      Get-DlpSensitiveInformationType
      

      針對自訂機密資訊類型,Publisher 屬性值將為 Microsoft Corporation 以外的值。

    • 將 <Name> 取代為機密資訊類型的名稱值 (例如,員工識別碼),然後執行 Get-DlpSensitiveInformationType Cmdlet:

      Get-DlpSensitiveInformationType -Identity "<Name>"
      

要注意的潛在驗證問題

當您上傳規則套件 XML 檔案時,系統會驗證 XML,並檢查已知的不良模式和明顯的效能問題。 以下是驗證檢查的一些已知問題 — 正則表示式:

  • 正則表達式中的外觀判斷提示應該只有固定長度。 可變長度判斷提示會導致錯誤。

    例如, "(?<=^|\s|_)" 將不會通過驗證。 第一個模式 () ^ 為零長度,而接下來的兩個模式 (\s_) 的長度為 1。 撰寫這個正規表示式的替代方式是 "(?:^|(?<=\s|_))"

  • 無法以alternator |開頭或結尾,這會比對所有項目,因為它被視為空的相符專案。

    例如, |ab| 將不會通過驗證。

  • 無法以模式開頭或結尾 .{0,m} ,此模式沒有功能用途,而且只會降低效能。

    例如, .{0,50}ASDFASDF.{0,50} 將不會通過驗證。

  • 群組中不能有 .{0,m}.{1,m} ,而且不能有 .\*.+ 在群組中。

    例如, (.{0,50000}) 將不會通過驗證。

  • 群組中不能有任何具有 或 {1,m} 中繼器的字元{0,m}

    例如, (a\*) 將不會通過驗證。

  • 無法以 開頭或結尾 .{1,m};請改用 .

    例如, .{1,m}asdf 將不會通過驗證。 請改用 .asdf

  • 群組上不能有未系結的重複 (,例如 *+) 。

    例如, (xx)\*(xx)+ 不會通過驗證。

  • 關鍵字長度最多為 50 個字元。 如果您的群組內有關鍵字超出此限制,建議的解決方案是建立一組字詞,做為關鍵字字典,並在檔案中用於比對的實體或 idMatch 部分的 XML 結構內參考關鍵字字典的 GUID。

  • 每個自訂敏感性資訊類型總計最多可以有 2048 個關鍵字。

  • 單一租用戶中關鍵詞字典的大小上限為 480 KB,壓縮為符合 AD 架構限制。 在建立自訂敏感性資訊類型時,請視需要盡情參照同一字典。 請先在敏感性資訊類型中建立自訂關鍵字清單,並使用關鍵字字典(如果關鍵字清單中有超過 2048 個關鍵字,或關鍵字長度超過 50 個字元)。

  • 租用戶中最多允許 50 個以關鍵字字典為基礎的敏感性資訊類型。

  • 請確定每個 Entity 元素都包含 recommendedConfidence 屬性。

  • 使用 PowerShell Cmdlet 時,還原串行化數據的傳回大小上限約為 1 MB。 這會影響您的規則套件 XML 檔案的大小。 在處理時,請將上傳的檔案限制在 770 KB 的上限,作為要獲得一致結果且不會發生錯誤的建議限制。

  • XML 結構不需要格式化字元,例如空格、索引標籤或歸位字元/換行字元專案。 針對上傳將空格最佳化時,請注意這一點。 Microsoft Visual Code 等工具提供連接線功能,可壓縮 XML 檔案。

如果自訂機密資訊類型包含可能會影響效能的問題,則無法上傳,您可能會看到下列其中一個錯誤訊息:

  • Generic quantifiers which match more content than expected (e.g., '+', '*')

  • Lookaround assertions

  • Complex grouping in conjunction with general quantifiers

重新編目內容以識別機密資訊

Microsoft 365 會使用搜尋檢索器識別及分類網站內容中的機密資訊。 每次上傳 SharePoint Online 和商務用 OneDrive 網站中的內容時,系統即會重新進行編目。 但是,若要在所有現有內容中識別您的新自訂機密資訊類型,該內容必須重新進行編目。

在 Microsoft 365 中,您無法手動要求重新編目整個組織,但您可以手動要求重新編目網站集合、清單或文檔庫。 如需詳細資訊,請 參閱手動要求網站、文檔庫或清單的編目和重新編製

參考:規則套件 XML 結構描述定義

您可以複製此標記、將它儲存為 XSD 檔,然後用它來驗證規則套件 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="https://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified"
           id="RulePackageSchema">
  <!-- Use include if this schema has the same target namespace as the schema being referenced, otherwise use import -->
  <xs:element name="RulePackage" type="mce:RulePackageType"/>
  <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|mce:Version/mce:Entity|mce:Version/mce:Affinity"/>
          <xs:field xpath="@id"/>
        </xs:key>
        <xs:key name="UniqueProcessorId">
          <xs:selector xpath="mce:Regex|mce:Keyword|mce:Fingerprint"></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|mce:Version/mce:Entity|mce:Version/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="100"/>
    </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:element name="Version" type="mce:VersionedRuleType"/>
      </xs:choice>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Regex" type="mce:RegexType"/>
        <xs:element name="Keyword" type="mce:KeywordType"/>
        <xs:element name="Fingerprint" type="mce:FingerprintType"/>
        <xs:element name="ExtendedKeyword" type="mce:ExtendedKeywordType"/>
      </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:element name="Version" type="mce:VersionedPatternType" minOccurs="0" 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:element name="Version" type="mce:VersionedEvidenceType" minOccurs="0" 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:attribute name="minCount" type="xs:positiveInteger" use="optional"/>
    <xs:attribute name="uniqueResults" type="xs:boolean" use="optional"/>
  </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:union>
      <xs:simpleType>
        <xs:restriction base='xs:string'>
          <xs:enumeration value="unlimited"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:positiveInteger">
          <xs:minInclusive value="1"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </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:simpleType name="EngineVersionType">
    <xs:restriction base="xs:token">
      <xs:pattern value="^\d{2}\.01?\.\d{3,4}\.\d{1,3}$"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="VersionedRuleType">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="Entity" type="mce:EntityType"/>
      <xs:element name="Affinity" type="mce:AffinityType"/>
    </xs:choice>
    <xs:attribute name="minEngineVersion" type="mce:EngineVersionType" use="required" />
  </xs:complexType>
  <xs:complexType name="VersionedPatternType">
    <xs:sequence>
      <xs:element name="Pattern" type="mce:PatternType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="minEngineVersion" type="mce:EngineVersionType" use="required" />
  </xs:complexType>
  <xs:complexType name="VersionedEvidenceType">
    <xs:sequence>
      <xs:element name="Evidence" type="mce:EvidenceType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="minEngineVersion" type="mce:EngineVersionType" use="required" />
  </xs:complexType>
  <xs:simpleType name="FingerprintValueType">
    <xs:restriction base="xs:string">
      <xs:minLength value="2732"/>
      <xs:maxLength value="2732"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="FingerprintType">
    <xs:simpleContent>
      <xs:extension base="mce:FingerprintValueType">
        <xs:attribute name="id" type="xs:token" use="required"/>
        <xs:attribute name="threshold" type="mce:ProbabilityType" use="required"/>
        <xs:attribute name="shingleCount" type="xs:positiveInteger" use="required"/>
        <xs:attribute name="description" type="xs:string" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <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="ExtendedKeywordType">
    <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="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>

詳細資訊