Создание пользовательского типа конфиденциальной информации с помощью PowerShell
В этой статье показано, как создать файл пакета правил XML, который определяет настраиваемые типы конфиденциальной информации. В этой статье описывается настраиваемый тип конфиденциальной информации, который идентифицирует идентификатор сотрудника. Вы можете использовать пример XML, приведенный в этой статье, в качестве отправной точки для собственного XML-файла.
Дополнительные сведения о типах конфиденциальной информации см. в статье Сведения о типах конфиденциальной информации.
После создания ПРАВИЛЬНО сформированного XML-файла его можно отправить в Microsoft 365 с помощью PowerShell. Затем вы можете использовать настраиваемый тип конфиденциальной информации в политиках. Вы можете проверить его эффективность в обнаружении конфиденциальной информации, как вы планировали.
Примечание.
Если вам не требуется детальное управление, которое предоставляет PowerShell, вы можете создать настраиваемые типы конфиденциальной информации на портале соответствия требованиям Microsoft Purview. Дополнительные сведения см. в статье Создание пользовательского типа конфиденциальной информации.
Совет
Если вы не являетесь клиентом E5, используйте 90-дневную пробную версию решений Microsoft Purview, чтобы узнать, как дополнительные возможности Purview могут помочь вашей организации управлять безопасностью данных и соответствием требованиям. Начните сейчас, перейдя в центр пробных версий на портале соответствия требованиям Microsoft Purview. Сведения о регистрации и условиях пробной версии.
Отказ от ответственности
Служба поддержки Майкрософт не может помочь в создании определений, соответствующих содержимому.
Для разработки, тестирования и отладки с сопоставлением пользовательского содержимого необходимо использовать собственные внутренние ИТ-ресурсы или консультационные услуги, такие как Консультационные службы Майкрософт (MCS). Инженеры службы поддержки Майкрософт могут предоставлять ограниченную поддержку этой функции, но они не могут гарантировать, что пользовательские предложения по соответствоватию содержимого полностью соответствуют вашим потребностям.
MCS может предоставлять регулярные выражения для тестирования. Они также могут помочь в устранении неполадок существующего шаблона regEx, который не работает должным образом с одним конкретным примером содержимого.
Сведения о потенциальных проблемах с проверкой см . в этой статье.
Дополнительные сведения о модуле Boost.RegEx (прежнее название — RegEx++), который используется для обработки текста, см. на странице Boost.Regex 5.1.3.
Примечание.
Если вы используете символ амперсанда (&) в качестве части ключевого слова в пользовательском типе конфиденциальной информации, необходимо добавить дополнительный термин с пробелами вокруг символа. Например, используйте notL&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>
Каковы ваши основные требования? [Элементы Rule, Entity, Pattern]
Важно понимать базовую структуру XML-схемы для правила. Ваше понимание структуры помогает пользовательскому типу конфиденциальной информации определить правильное содержимое.
Правило определяет одну или несколько сущностей (также известных как типы конфиденциальной информации). Каждая сущность определяет один или несколько шаблонов. Шаблон — это то, что ищет политика при оценке содержимого (например, электронной почты и документов).
В разметке XML "правила" означают шаблоны, определяющие тип конфиденциальной информации. Не связывайте ссылки на правила в этой статье с "условиями" или "действиями", которые являются общими в других функциях Майкрософт.
Простейший сценарий: объект с одним шаблоном
Вот простой сценарий. Вы хотите, чтобы политика определила содержимое, содержащее девятизначные идентификаторы сотрудников, которые используются в вашей организации. Шаблон ссылается на регулярное выражение в правиле, которое идентифицирует девятизначные числа. Любое содержимое, содержащее девятизначное число, удовлетворяет шаблону.
Но этот шаблон может идентифицировать любое девятизначное число, включая более длинные или другие типы девятизначных чисел, которые не являются идентификаторами сотрудников. Этот тип нежелательного совпадения называется ложноположительным результатом.
Более распространенный сценарий: объект с несколькими шаблонами
Из-за возможности ложноположительных результатов обычно используется несколько шаблонов для определения сущности. Несколько шаблонов предоставляют подтверждающие доказательства для целевой сущности. Например, дополнительные ключевые слова, даты или другой текст могут помочь определить исходную сущность (например, девятизначный номер сотрудника).
Например, чтобы повысить вероятность идентификации содержимого, содержащего идентификатор сотрудника, можно определить другие шаблоны для поиска:
- Шаблон, определяющий дату найма.
- Шаблон, определяющий дату найма и ключевое слово "идентификатор сотрудника".
Для совпадений с несколькими шаблонами следует учитывать важные моменты.
Шаблоны, требующие наличия дополнительных признаков, имеют более высокий уровень доверия. В зависимости от уровня достоверности можно выполнить следующие действия:
- Используйте более строгие действия (например, блокировать содержимое) с более высоким уровнем достоверности.
- Используйте менее строгие действия (например, отправку уведомлений) с более низким уровнем достоверности.
Вспомогательные
IdMatch
элементы иMatch
ссылаются на regExes и ключевые слова, которые фактически являются дочерними элементамиRule
элемента, а не .Pattern
СсылкиPattern
на вспомогательные элементы, но они включены в .Rule
Это означает, что на одно определение вспомогательного элемента, например регулярное выражение или список ключевых слов, можно ссылаться с помощью нескольких сущностей и шаблонов.
Какую сущность необходимо идентифицировать? [Элемент Entity, атрибут ID]
Сущность — это тип конфиденциальной информации, например номер кредитной карты, который имеет четко определенный шаблон. У каждой сущности есть уникальный идентификатор GUID.
Присваивание объекту имени и создание GUID для него
- В выбранном редакторе
Rules
XML добавьте элементы иEntity
. - Добавьте комментарий, содержащий имя пользовательской сущности, например идентификатор сотрудника. Позже вы добавите имя сущности в раздел локализованных строк, и это имя появится в Центре администрирования при создании политики.
- Создайте уникальный GUID для сущности. Например, в Windows PowerShell можно выполнить команду
[guid]::NewGuid()
. Позже вы также добавите GUID в раздел локализованных строк сущности.
Какой шаблон вы хотите сопоставить? [Элемент Pattern, Элемент IdMatch, Элемент Regex]
Шаблон содержит список того, что ищет тип конфиденциальной информации. Шаблон может включать RegExes, ключевые слова и встроенные функции. Функции выполняют такие задачи, как выполнение регулярных выражений для поиска дат или адресов. Типы конфиденциальных данных могут использовать несколько шаблонов с уникальными уровнями вероятности.
На следующей схеме все шаблоны ссылались на одно регулярное выражение. Этот regEx ищет девятизначное число (\d{9})
, окруженное пробелом (\s) ... (\s)
. Элемент IdMatch
ссылается на это регулярное выражение и является общим требованием для всех шаблонов, которые ищут сущность Employee ID.
IdMatch
— это идентификатор, который шаблон пытается сопоставить. Элемент Pattern
должен содержать только один IdMatch
элемент.
Совпадение шаблона возвращает количество и уровень достоверности, которые можно использовать в условиях в политике. При добавлении условия для обнаружения типа конфиденциальной информации в политику можно изменить количество и уровень достоверности, как показано на следующей схеме. Уровень достоверности (также называемый точностью соответствия) объясняется далее в этой статье.
Регулярные выражения являются мощными, поэтому существуют проблемы, о которых необходимо знать. Например, регулярные выражения, определяющие слишком много содержимого, могут повлиять на производительность. Дополнительные сведения об этих проблемах см. в разделе Потенциальные проблемы проверки , о которых следует знать далее в этой статье.
Требовать дополнительных доказательств? [Элемент Match, атрибут minCount]
Кроме того IdMatch
, шаблон может использовать Match
элемент , чтобы требовать дополнительных подтверждающих доказательств, таких как ключевое слово, regEx, date или address.
Может Pattern
включать несколько Match
элементов:
- Непосредственно в элементе
Pattern
. - Объединяется с помощью
Any
элемента .
Match
элементы соединяются с неявным оператором AND. Иными словами, все Match
элементы должны быть удовлетворены для сопоставления шаблона.
Элемент можно использовать для Any
введения операторов AND или OR. Элемент Any
описан далее в этой статье.
Можно использовать необязательный minCount
атрибут, чтобы указать, сколько экземпляров совпадения необходимо найти для каждого Match
элемента. Например, можно указать, что шаблон удовлетворяется только при обнаружении по крайней мере двух ключевых слов из списка ключевых слов.
Ключевые слова [элементы Keyword, Group и Term, атрибуты matchStyle и caseSensitive]
Как упоминалось ранее, для идентификации конфиденциальной информации часто требуются дополнительные ключевые слова в качестве подтверждающих доказательств. Например, помимо сопоставления девятизначного числа, можно искать такие слова, как "карточка", "эмблема" или "идентификатор" с помощью элемента Keyword. Элемент Keyword
имеет ID
атрибут, на который могут ссылаться несколько Match
элементов в нескольких шаблонах или сущностях.
Ключевые слова включаются в список Term
элементов в элементе Group
. Элемент Group
имеет matchStyle
атрибут с двумя возможными значениями:
matchStyle="word": совпадение слов идентифицирует целые слова, окруженные пробелами или другими разделителями. Вы всегда должны использовать слово , если вам не нужно сопоставлять части слов или слов в азиатских языках.
matchStyle="string": сопоставление строк идентифицирует строки независимо от того, что они окружены. Например, "ID" соответствует как "bid", так и "idea". Используйте
string
только в том случае, если вам нужно соответствовать азиатским словам или если ключевое слово может быть включено в другие строки.
Наконец, можно использовать caseSensitive
атрибут Term
элемента, чтобы указать, что содержимое должно точно соответствовать ключевому слову, включая строчные и прописные буквы.
Регулярные выражения [элемент Regex]
В этом примере сущность employee ID
уже использует IdMatch
элемент для ссылки на регулярное выражение для шаблона: девятизначное число, окруженное пробелом. Кроме того, шаблон может использовать Match
элемент для ссылки на дополнительный Regex
элемент для идентификации подтверждающих доказательств, таких как пятизначный или девятизначный номер в формате почтового индекса США.
Дополнительные шаблоны, например даты или адреса [встроенные функции]
Типы конфиденциальной информации также могут использовать встроенные функции для выявления подтверждающих доказательств. Например, дата в США, дата ЕС, дата окончания срока действия или адрес США. Microsoft 365 не поддерживает отправку собственных пользовательских функций. Но при создании пользовательского типа конфиденциальной информации сущность может ссылаться на встроенные функции.
Например, значок идентификатора сотрудника содержит дату найма, поэтому эта пользовательская сущность может использовать встроенную Func_us_date
функцию для идентификации даты в формате, обычно используемом в США.
Дополнительные сведения см. в разделе Функции типов конфиденциальной информации.
Различные сочетания признаков [элемент Any, атрибуты minMatches и maxMatches]
В элементе Pattern
все IdMatch
элементы и Match
соединяются с неявным оператором AND. Другими словами, все совпадения должны быть удовлетворены, прежде чем шаблон может быть удовлетворен.
Вы можете создать более гибкую логику сопоставления, используя элемент для группировки Any
Match
элементов. Например, можно использовать Any
элемент для сопоставления всех, ни одного или точного подмножества его дочерних Match
элементов.
Элемент Any
имеет необязательные minMatches
атрибуты и maxMatches
, которые можно использовать, чтобы определить, сколько дочерних 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
элементов, задайте minMatches
для и одно и maxMatches
то же значение. Этот Any
элемент удовлетворяется только в том случае, если найдено ровно одно ключевое слово или дата. Если есть еще какие-либо совпадения, шаблон не совпадает.
<Any minMatches="1" maxMatches="1" >
<Match idRef="Func_us_date" />
<Match idRef="Keyword_employee" />
<Match idRef="Keyword_badge" />
</Any>
Не соответствует ни одному из дочерних элементов Match
Если вы хотите требовать отсутствию конкретных доказательств для удовлетворения шаблона, можно задать как minMatches, так и maxMatches значение 0. Это может быть полезно, если у вас есть список ключевых слов или другие доказательства, которые, скорее всего, указывают на ложноположительный результат.
Например, сущность идентификатора сотрудника ищет ключевое слово "карточка", так как оно может ссылаться на "id card". Однако если карта отображается только во фразе "кредитная карта", то "карта" в этом содержимом вряд ли будет означать "id 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]
Тип конфиденциальной информации ищет шаблон, представляющий идентификатор сотрудника, и в рамках этого шаблона он также ищет подтверждающие доказательства, такие как ключевое слово, например "ID". Имеет смысл, что чем ближе эти доказательства, тем более вероятно, что шаблон будет фактическим идентификатором сотрудника. Вы можете определить, насколько близко должно быть другое свидетельство в шаблоне к сущности, используя обязательный атрибут patternsProximity элемента Entity.
Для каждого шаблона в сущности значение атрибута patternsProximity определяет расстояние (в символах Юникода) от расположения IdMatch для всех остальных совпадений, указанных для этого шаблона. Окно близости с помощью расположения элемента IdMatch привязывается к окну по левую и правую сторону элемента IdMatch.
В приведенном ниже примере показано, как окно близкого взаимодействия влияет на сопоставление шаблонов, где элементу IdMatch для пользовательской сущности идентификатора сотрудника требуется по крайней мере одно подтверждение соответствия ключевого слова или даты. Совпадает только идентификатор ID1, так как для идентификаторов ID2 и ID3 в окне близкого взаимодействия не найдены либо частичные подтверждающие доказательства.
Для электронной почты текст сообщения и каждое вложение обрабатываются как отдельные элементы. Это означает, что окно близкого взаимодействия не выходит за пределы конца каждого из этих элементов. Для каждого элемента (вложения или текста) в этом элементе должны находиться как свидетельство idMatch, так и подтверждение.
Какие уровни доверия подходят для различных шаблонов? [атрибут confidenceLevel, рекомендуемый атрибутConfidence]
Чем больше доказательств, необходимых шаблону, тем больше уверенности в том, что при сопоставлении шаблона была обнаружена фактическая сущность (например, идентификатор сотрудника). Например, вы больше уверены в шаблоне, который требует девятизначного идентификатора, даты найма и ключевого слова в непосредственной близости, чем в шаблоне, который требует только девятизначного идентификатора.
У элемента Pattern есть обязательный атрибут confidenceLevel. Значение confidenceLevel (значение 65/75/85, указывающее низкий,средний/высокий уровень достоверности) можно представить как уникальный идентификатор для каждого шаблона в сущности. После того как вы добавите свой пользовательский тип конфиденциальной информации и создадите политику, вы сможете ссылаться на эти уровни доверия в условиях создаваемых вами правил.
Помимо атрибута confidenceLevel, у каждого элемента Pattern имеется также атрибут recommendedConfidence. Его можно рассматривать как уровень доверия по умолчанию для данного правила. Если вы создаете правило в политике, если вы не указываете уровень доверия для используемого правила, это правило соответствует рекомендуемму уровню достоверности для сущности. Обратите внимание, что атрибут recommendedConfidence является обязательным для каждого идентификатора сущности в пакете правил. Если он отсутствует, вы не сможете сохранить политики, использующие тип конфиденциальной информации.
Вы хотите поддерживать другие языки в пользовательском интерфейсе портала соответствия требованиям? [Элемент LocalizedStrings]
Если ваша команда соответствия требованиям использует портал соответствия требованиям Microsoft Purview для создания политик в разных языковых стандартах и на разных языках, вы можете предоставить локализованные версии имени и описания пользовательского типа конфиденциальной информации. При работе с Microsoft 365 на поддерживаемом вами языке члены вашей группы соответствия требованиям будут видеть локализованные имена в пользовательском интерфейсе.
Элемент Rules должен содержать элемент LocalizedStrings, который содержит элемент Resource, который ссылается на GUID пользовательской сущности. В свою очередь, каждый элемент Resource содержит один или несколько элементов Name и Description, каждый из которых использует langcode
атрибут для предоставления локализованной строки для определенного языка.
Обратите внимание, что локализованные строки определяют только способ отображения пользовательского типа конфиденциальных данных в пользовательском интерфейсе центра соответствия требованиям. Вам не удастся использовать локализованные строки для предоставления различных локализованных версий списка ключевых слов или регулярного выражения.
Еще одна разметка пакета правил [GUID RulePack]
Наконец, в начале каждого элемента RulePackage содержатся некоторые общие сведения, которые необходимо заполнить. Вы можете использовать следующую разметку в качестве шаблона и заменить ". . Заполнители ." с вашими собственными сведениями.
Самое главное, необходимо создать GUID для RulePack. Ранее вы создали GUID для сущности; это второй ИДЕНТИФИКАТОР GUID для RulePack. Существует несколько способов создания 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 должен выглядеть, как показано ниже.
Проверяющие элементы
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 и используйте Validator
свойство , чтобы добавить обработчик функций по своему выбору. После определения вы можете использовать этот regEx в SIT.
В приведенном ниже примере регулярное выражение — 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 предоставляет два универсальных проверяющих элемента
Проверяющий элемент контрольной суммы
В этом примере определяется проверяющий элемент контрольной суммы для идентификатора сотрудника для проверки regEx для EmployeeID.
<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.
<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 для импорта собственных типов конфиденциальной информации для защиты от потери данных. Теперь пользовательские типы конфиденциальной информации можно использовать как в Центре администрирования Exchange]"https://go.microsoft.com/fwlink/p/?linkid=2059104" ;), так и на портале соответствия требованиям Microsoft Purview. В рамках этого улучшения следует использовать PowerShell для обеспечения соответствия требованиям безопасности & для импорта пользовательских типов конфиденциальной информации. Их больше нельзя импортировать из Exchange Online PowerShell. Пользовательские типы конфиденциальной информации будут работать так же, как раньше, но изменения, внесенные в них в центре соответствия требования, могут быть отражены в центре администрирования Exchange не сразу, а в течение часа.
Обратите внимание, что для отправки пакета правил в центре соответствия требованиям можно использовать командлет New-DlpSensitiveInformationTypeRulePackage. (Ранее в Центре администрирования Exchange использовался командлет ClassificationRuleCollection.)
Отправка пакета правил
Чтобы отправить пакет правил, выполните указанные ниже действия.
Сохраните правило в виде XML-файла с кодировкой Юникод.
Подключение к PowerShell безопасности и соответствия требованиям
Используйте указанный ниже синтаксис.
New-DlpSensitiveInformationTypeRulePackage -FileData ([System.IO.File]::ReadAllBytes('PathToUnicodeXMLFile'))
В этом примере выполняется отправка XML-файла с кодировкой Юникод под названием MyNewRulePack.xml из папки C:\My Documents.
New-DlpSensitiveInformationTypeRulePackage -FileData ([System.IO.File]::ReadAllBytes('C:\My Documents\MyNewRulePack.xml'))
Дополнительные сведения о синтаксисе и параметрах см. в статье New-DlpSensitiveInformationTypeRulePackage.
Примечание.
Максимальное количество поддерживаемых пакетов правил — 10, но каждый пакет может содержать определение нескольких типов конфиденциальной информации.
Чтобы убедиться, что вы успешно создали новый тип конфиденциальной информации, выполните любое из указанных ниже действий.
Выполните командлет Get-DlpSensitiveInformationTypeRulePackage, чтобы проверить наличие нового пакета правил:
Get-DlpSensitiveInformationTypeRulePackage
Выполните командлет Get-DlpSensitiveInformationType, чтобы проверить наличие типа конфиденциальных данных:
Get-DlpSensitiveInformationType
Для пользовательских типов конфиденциальных данных значение свойства Publisher будет отличаться от "Корпорация Майкрософт".
Замените <Name> значением Name типа конфиденциальных данных (например, Employee ID) и выполните командлет Get-DlpSensitiveInformationType:
Get-DlpSensitiveInformationType -Identity "<Name>"
Проблемы, которые могут возникнуть при проверке
При отправке XML-файла пакета правил система проверяет XML-код и проверяет наличие известных неправильных шаблонов и очевидных проблем с производительностью. Ниже приведены некоторые известные проблемы, на наличие которых проверяет проверка — регулярное выражение:
Утверждения lookbehind в регулярном выражении должны иметь только фиксированную длину. Утверждения переменной длины приведут к ошибкам.
Например,
"(?<=^|\s|_)"
не пройдет проверку. Первый шаблон (^
) имеет нулевую длину, а следующие два шаблона (\s
и_
) имеют длину одного. Альтернативный способ записи этого регулярного выражения —"(?:^|(?<=\s|_))"
.Не может начинаться или заканчиваться с переменным ,
|
который соответствует всем, так как он считается пустым совпадением.Например,
|a
илиb|
не пройдет проверку.Не может начинаться или заканчиваться шаблоном
.{0,m}
, который не имеет функционального назначения и только ухудшает производительность.Например,
.{0,50}ASDF
илиASDF.{0,50}
не пройдет проверку.Не может иметь
.{0,m}
или.{1,m}
в группах и не может иметь.\*
или.+
в группах.Например,
(.{0,50000})
не пройдет проверку.Не может содержать символы с повторителями
{0,m}
или{1,m}
в группах.Например,
(a\*)
не пройдет проверку.Не может начинаться или заканчиваться на
.{1,m}
; вместо этого используйте.
.Например,
.{1,m}asdf
не пройдет проверку. Вместо этого используйте.asdf
.Не может иметь неограниченный ретранслятор (например,
*
или+
) в группе.Например,
(xx)\*
и(xx)+
не пройдет проверку.Длина ключевых слов не должна превышать 50 символов. Если в группе есть ключевое слово, которое превышает это значение, рекомендуется создать группу терминов в виде словаря ключевых слов и ссылаться на его GUID в структуре XML в рамках объекта для поиска совпадения Match или idMatch в файле.
Каждый настраиваемый тип конфиденциальной информации не должен превышать 2048 ключевых слов.
Максимальный размер словарей ключевых слов в одном клиенте составляет 480 КБ в соответствии с ограничениями схемы AD. При создании настраиваемых типов конфиденциальной информации ссылайтесь на один и тот же словарь столько раз, сколько необходимо. Начните с создания настраиваемых списков ключевых слов в типе конфиденциальной информации и используйте словари ключевых слов, если в списке ключевых слов их больше чем 2048 или если длина ключевого слова превышает 50 символов.
В клиенте разрешено использовать не более 50 типов конфиденциальной информации на основе словаря ключевых слов.
Убедитесь, что каждая сущность элемента содержит атрибут recommendedConfidence.
При использовании командлета PowerShell максимальный возвращаемый размер десериализованных данных составляет около 1 мегабайта. Это влияет на размер XML-файла пакета правил. Не следует превышать рекомендуемый лимит максимального размера загруженного файла (770 мегабайт) для получения стабильных результатов без ошибок при обработке.
Для структуры 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>