Создание пользовательского типа конфиденциальной информации

Защита от потери данных в Office 365 распространяется на целый ряд типов конфиденциальной информации, которые вы можете использовать в своих политиках защиты от потери данных. Эти встроенные типы помогают выявлять и защищать номера кредитных карт, банковских счетов и паспортов, а также многое другое.

Если у вас есть другая конфиденциальная информация, подлежащая выявлению и защите — например, коды сотрудников в собственном формате вашей организации — вы можете определить соответствующий пользовательский тип конфиденциальной информации. Тип конфиденциальной информации определяется в XML-файле, который называется пакетом правил.

В этой статье показано, как создать XML-файл с определением пользовательского типа конфиденциальной информации. Для этого вам нужно уметь составлять регулярные выражения. В качестве примера в этой статье определяется пользовательский тип конфиденциальной информации, соответствующий коду сотрудника. XML из этого примера можно взять за исходный образец для собственного XML-файла.

Создав XML-файл правильного формата, вы можете добавить его в Office 365 с помощью PowerShell. После этого вы можете задействовать вновь созданный пользовательский тип конфиденциальной информации в своих политиках защиты от потери данных и проверить, что соответствующая конфиденциальная информация обнаруживается правильно.

Содержание

Пример 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="70">
		<Pattern confidenceLevel="60">
			<IdMatch idRef="Regex_employee_id"/>
		</Pattern>
		<Pattern confidenceLevel="70">
			<IdMatch idRef="Regex_employee_id"/>
			<Match idRef="Func_us_date"/>
		</Pattern>
		<Pattern confidenceLevel="80">
			<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 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>
			<Name default="true" langcode="de-de">Name for German locale</Name>
			<Description default="true" langcode="de-de">
			Description for German locale.
			</Description>
		</Resource>
	</LocalizedStrings>
</Rules>
</RulePackage>

Каковы ваши основные требования? [Элементы Rule, Entity, Pattern]

Для начала стоит уяснить базовую структуру схемы XML правила и понять, как с ее помощью можно определить пользовательский тип конфиденциальной информации, позволяющий выявлять то или иное содержимое.

Правило определяет одну или несколько сущностей (типов конфиденциальной информации), а каждая сущность — один или несколько шаблонов. Шаблоном называется описание информации, которую подсистема защиты от потери данных ищет в содержимом (например, в электронной почте и документах).

(Замечание по терминологии: если вы знакомы с политиками защиты от потери данных, то знаете, что политика содержит одно или несколько правил, включающих в себя условия и действия. Однако в этой статье при обсуждении XML-разметки под правилом подразумеваются шаблоны, которые определяют ту или иную сущность, т. е. тип конфиденциальной информации. Таким образом, встретив в этой статье слово "правило", знайте, что речь идет о сущности или типе конфиденциальной информации, а не об условиях или действиях.)

Простейший сценарий: сущность с одним шаблоном

Рассмотрим простейший сценарий. Пускай вам требуется с помощью политики защиты от потери данных выявлять содержимое, в котором фигурирует код сотрудника вашей организации в формате девятизначного числа. Таким образом, под шаблоном понимается содержащееся в правиле регулярное выражение, которое позволяет выявлять девятизначные числа. Любой содержимое, в котором есть девятизначное число, удовлетворяет шаблону.

Схема сущности с одним шаблоном

Этот шаблон прост, но чреват большим количеством ложных срабатываний, так как ему соответствует содержимое с любым вообще девятизначным числом внутри, а не только с кодом сотрудника.

Более распространенный сценарий: сущность с несколькими шаблонами

По указанной причине чаще принято определять сущности с использованием нескольких шаблонов, которые помимо самой сущности (в данном случае — девятизначного числа) обеспечивают выявление дополнительных признаков, таких как ключевое слово или дата.

Например, чтобы с более высокой вероятностью выявлять содержимое, включающее код сотрудника, вы можете определить второй шаблон, с помощью которого дополнительно ищется дата приема на работу, и третий шаблон для поиска даты приема на работу и некоторого ключевого слова (например, "код сотрудника") в дополнение к девятизначному числу.

Схема сущности с несколькими шаблонами

Обратите внимание на некоторые важные аспекты этой структуры:

  • Шаблоны, требующие наличия дополнительных признаков, имеют более высокий уровень доверия. Полезно это тем, что позволяет при использовании этого типа конфиденциальной информации в политике защиты от потери данных предусматривать более жесткие ограничительные действия (например, блокирование содержимого) только для совпадений с высоким уровнем доверия и менее строгие (например, отправка уведомления) — для совпадений с низким уровнем доверия.

  • Вспомогательные элементы IdMatch и Match ссылаются на регулярные выражения и ключевые слова, которые в действительности являются дочерними для элемента Rule, а не Pattern. На эти вспомогательные элементы ссылается элемент Pattern, но они не входят в элемент Rule. Это означает, что на одно определение вспомогательного элемента, например регулярное выражение или список ключевых слов, могут ссылаться несколько объектов и шаблонов.

Какую сущность требуется выявлять? [Элемент Entity, атрибут id]

Сущность — это тип конфиденциальной информации (например, номер кредитной карты), соответствующий четко определенному шаблону. Каждая сущность имеет свой уникальный идентификатор (GUID).

Присваивание сущности имени и GUID

Добавьте элементы Rules и Entity. Добавьте примечание, содержащее имя созданной вами пользовательской сущности — в нашем примере это будет Employee ID (код сотрудника). Позже вы добавите имя сущности в раздел локализованных строк, и именно оно будет отображаться в пользовательском интерфейсе, когда вы создадите политику защиты от потери данных с этой сущностью.

Затем создайте GUID для новой сущности. Существует несколько способов создания GUID, но вы можете легко это сделать в PowerShell, введя [guid]::NewGuid(). Позже вы добавите GUID своей пользовательской сущности в раздел локализованных строк.

XML-разметка, демонстрирующая элементы Rules и Entity

По какому шаблону вести поиск? [Элементы Pattern, IdMatch, Regex]

Шаблон содержит список искомых элементов, которые отнесены к данному типу конфиденциальной информации. Он может включать в себя регулярные выражения, ключевые слова и встроенные функции (в задачи которых входит, например, поиск дат или адресов по регулярным выражениям). Для одного типа конфиденциальной информации может быть определено несколько шаблонов с разными уровнями доверия.

Все приведенные ниже шаблоны объединяет то, что они ссылаются на одно и то же регулярное выражение, которому соответствует девятизначное число (\d\{9\)}, окруженное пробелами (\s) ... (\s). На это регулярное выражение ссылается элемент IdMatch, и оно служит общим требованием для всех шаблонов, предназначенных для поиска сущности Employee ID. IdMatch — это идентификатор, совпадения с которым ищутся по данному шаблону, например код сотрудника, номер кредитной карты или номер социального страхования. В составе элемента Pattern должен быть ровно один элемент IdMatch.

XML-разметка, демонстрирующая несколько элементов Pattern, которые ссылаются на один элемент Regex

Если найдены совпадения с шаблоном, возвращается количество совпадений и значение уровня доверия, которые вы можете использовать для проверки выполнения условий в политике защиты от потери данных. Добавив в политику защиты от потери данных условие для определения типа конфиденциальной информации, вы можете затем изменить число совпадений и уровень доверия, как показано здесь. Понятие уровня доверия (другое название — точность совпадения) разъясняется далее в этой статье.

Параметры для задания числа и точности совпадений

При составлении регулярного выражения следует учитывать потенциальные проблемы. Например, если по вашему регулярному выражению находится слишком большое количество содержимого, это может сказаться на производительности. Подробнее о потенциальных проблемах см. далее в разделе Проблемы, которые могут быть обнаружены при проверке.

Требовать ли наличия дополнительных признаков? [Элемент Match, атрибут minCount]

Помимо элемента IdMatch, с шаблоном можно использовать элемент Match, который определяет требуемые дополнительные признаки, например ключевое слово, регулярное выражение, дату или адрес.

Элемент Pattern может содержать несколько элементов Match; они могут включаться в его состав непосредственно или объединяться с помощью элемента Any. Элементы Match объединяются неявным логическим оператором AND; для совпадения с шаблоном необходимо совпадение со всеми элементами Match. С помощью элемента Any можно вводить логические операторы AND или OR (подробнее об этом в следующем разделе).

Необязательный атрибут minCount позволяет указать, сколько должно быть совпадений с каждым из элементов Match. Например, вы можете указать, что содержимое считается соответствующим шаблону только в том случае, если найдено не менее двух ключевых слов из списка.

XML-разметка, демонстрирующая элемент Match с атрибутом minOccurs

Ключевые слова [элементы Keyword, Group и Term, атрибуты matchStyle и caseSensitive]

При выявлении конфиденциальной информации, например кода сотрудника, часто требуется искать ключевые слова, служащие дополнительными признаками. Например, помимо девятизначного числа, имеет смысл искать слова наподобие "карта", "бейдж" или "код". Для этого используется элемент Keyword. У элемента Keyword есть атрибут id, на который могут ссылаться несколько элементов Match из различных шаблонов или сущностей.

Ключевые слова добавляются в виде списка элементов Term в элементе Group. Элемент Group имеет атрибут matchStyle с двумя возможными значениями:

  • matchStyle="word" Совпадения слов: выявляются целые слова, окруженные пробелами или другими разделителями. Следует всегда искать совпадения слов, если только не требуется выявлять части слов или слова азиатских языков.

  • matchStyle="string" Совпадения строк: выявляются строки независимо от того, чем они окружены. Например, для строки "код" совпадениями будут считаться слова "человекодень" и "кодеин". Искать совпадения строк следует только в том случае, если требуется выявлять слова азиатских языков или если искомое ключевое слово может быть частью других строк.

Наконец, чтобы указать, что содержимое должно в точности соответствовать ключевому слову, включая нижний и верхний регистр букв, можно использовать атрибут caseSensitive элемента Term.

XML-разметка, демонстрирующая элементы Match со ссылками на ключевые слова

Регулярные выражения [элемент Regex]

В этом примере сущность Employee ID посредством элемента IdMatch ссылается на регулярное выражение для шаблона — девятизначное число, окруженное пробелами. Кроме того, в шаблоне может присутствовать элемент Match, ссылающийся на элемент Regex, который определяет подтверждающие признаки, например пяти- или девятизначное число в американском формате почтового индекса.

Дополнительные шаблоны, например даты или адреса [встроенные функции]

Кроме встроенных типов конфиденциальной информации, в подсистеме защиты от потери данных имеются также встроенные функции, с помощью которых можно выявлять подтверждающие признаки, например дату в американском или европейском форматах, срок действия или адрес в американском формате. Подсистема защиты от потери данных не предусматривает возможности добавлять пользовательские функции, но если вы создадите пользовательский тип конфиденциальной информации, то из соответствующей сущности сможете ссылаться на встроенные функции.

Например, на идентификационном бейдже сотрудника указана дата приема на работу, так что в соответствующей пользовательской сущности можно использовать встроенную функцию Func_us_date для выявления даты в формате, который широко используется в США.

Дополнительные сведения см. в статье Что ищут функции защиты от потери данных.

XML-разметка, демонстрирующая элемент Match, который ссылается на встроенную функцию

Различные сочетания признаков [элемент Any, атрибуты minMatches и maxMatches]

В элементе Pattern все элементы IdMatch и Match объединяются неявным логическим оператором AND: для соответствия шаблону необходимо совпадение со всеми элементами Match. Однако можно реализовать более гибкую логику поиска совпадений, группируя элементы Match с использованием элемента Any. Например, с помощью этого элемента вы можете потребовать совпадения со всеми дочерними элементами Match, ни с одним из них или с заданным их подмножеством.

У элемента Any есть необязательные атрибуты minMatches и maxMatches, с помощью которых вы можете указать, со сколькими дочерними элементами Match должно совпасть содержимое, чтобы оно считалось соответствующим шаблону. Обратите внимание, что эти атрибуты определяют именно число совпадающих элементов Match, а не число совпадений с этими элементами. Чтобы задать минимальное количество совпадений с конкретным элементом Match, например два ключевых слова из списка, используйте атрибут minCount этого элемента (см. выше).

Совпадение хотя бы с одним дочерним элементом Match

Если вы хотите потребовать совпадения только с некоторым минимальным числом элементов Match, можно использовать атрибут minMatches. По сути, эти элементы будут соединены неявным логическим оператором OR. Для этого элемента Any соответствие имеет место, если будет найдена дата в американском формате или ключевое слово из любого списка.

XML-разметка, демонстрирующая элемент Any с атрибутом minMatches

Совпадение с заданным подмножеством дочерних элементов Match

Если вы хотите потребовать совпадения с некоторым точно заданным количеством элементов Match, можно присвоить атрибутам minMatches и maxMatches одинаковое значение. Для этого элемента Any соответствие имеет место только в том случае, если найдена ровно одна дата или одно ключевое слово; если совпадений больше, содержимое считается не соответствующим шаблону.

XML-разметка, демонстрирующая элемент Any с атрибутами minMatches и maxMatches

Отсутствие совпадений с каким-либо из дочерних элементов Match

Если вы хотите, чтобы содержимое считалось соответствующим шаблону только при отсутствии некоторых признаков, можно присвоить атрибуту maxMatches значение 0. Это может быть полезно, если у вас есть список ключевых слов или других признаков, которые с высокой вероятностью указывают на ложное срабатывание.

Например, шаблон для сущности Employee ID включает ключевое слово "карта", так как может иметься в виду "идентификационная карта". Но если слово "карта" встречается только в словосочетании "кредитная карта", то крайне маловероятно, что речь в этом случае идет об идентификационной карте. Поэтому можно добавить словосочетание "кредитная карта" в список исключаемых ключевых слов, при совпадении с которыми содержимое считается не соответствующим шаблону.

XML-разметка, демонстрирующая атрибут MaxMatches с нулевым значением

Насколько близко от искомой сущности должны находиться другие признаки? [Атрибут patternsProximity]

Ваш пользовательский тип конфиденциальной информации предназначен для поиска совпадений с шаблоном, представляющим код сотрудника, и в рамках этого же шаблона ищутся подтверждающие признаки, например ключевое слово "код". Логично предположить, что чем ближе находится этот признак, тем вероятнее, что шаблонная строка — это действительно код сотрудника. Вы можете указать, как близко должны находиться другие признаки в шаблоне к искомой сущности, используя обязательный атрибут patternsProximity элемента Entity.

XML-разметка, демонстрирующая атрибут patternsProximity

Для каждого шаблона в определяемой сущности значение атрибута patternsProximity задает расстояние в символах Юникода от местоположения элемента IdMatch для всех прочих элементов Match, относящихся к этому элементу Pattern. Окно близости привязано к местоположению элемента IdMatch, простираясь от него влево и вправо.

Схема окна близости

Приведенный ниже пример показывает, как окно близости влияет на поиск совпадений с шаблоном, когда элемент IdMatch пользовательской сущности Employee ID требует как минимум одного подтверждающего совпадения по ключевому слову или дате. Совпадением считается только ID1, поскольку для ID2 и ID3 подтверждающие признаки либо вовсе отсутствуют в окне близости, либо присутствуют лишь частично.

Схема расположения подтверждающих признаков относительно окна близости

Обратите внимание, что в случае сообщения электронной почты текст сообщения и каждое вложение считаются независимыми элементами. Это означает, что окно близости не выходит за их границы. Элемент idMatch и подтверждающие признаки для каждого элемента (вложения или основного текста) должны оставаться внутри них.

Какие уровни доверия подходят для тех или иных шаблонов? [Атрибуты confidenceLevel и recommendedConfidence]

Чем больше подтверждающих признаков требует шаблон, тем больше уверенность в том, что найденное формальное совпадение с шаблоном — это действительно искомая сущность (например, код сотрудника). Например, больше доверия будет к шаблону, который требует нахождения девятизначного числа, даты приема на работу и ключевого слова в непосредственной близости друг от друга, чем к шаблону, который требует нахождения одного только девятизначного числа.

У элемента Pattern есть обязательный атрибут confidenceLevel. Его значение (целое число от 1 до 100) можно рассматривать как уникальный идентификатор отдельного шаблона в составе сущности: каждому из шаблонов должен быть присвоен свой уровень доверия, уникальный в пределах сущности. Точное значение не играет роли; просто выберите такие числа, которые имеют смысл для вашей группы проверки соблюдения требований. После того как вы добавите свой пользовательский тип конфиденциальной информации и создадите политику защиты от потери данных, вы сможете ссылаться на эти уровни доверия в условиях создаваемых вами правил.

XML-разметка, демонстрирующая элементы Pattern с различными значениями атрибута confidenceLevel

Помимо атрибута confidenceLevel, у каждого элемента Pattern имеется также атрибут recommendedConfidence. Его можно рассматривать как уровень доверия по умолчанию для данного правила. Когда вы создаете правило политики защиты от потери данных и при этом не указываете для него уровень доверия явным образом, к совпадениям по этому правилу будет применяться рекомендуемый для данной сущности уровень доверия.

Хотите ли вы обеспечить поддержку других языков в пользовательском интерфейсе Центра безопасности и соответствия требованиям? [Элемент LocalizedStrings]

Если ваша группа проверки соответствия требованиям использует Центр безопасности и соответствия требованиям Office 365 для создания политик защиты от потери данных в различных регионах и на разных языках, вы можете предоставлять локализованные версии имени и описания своего пользовательского типа конфиденциальной информации. При работе с Office 365 на поддерживаемом вами языке участники вашей группы соответствия требованиям будут видеть локализованные имена в пользовательском интерфейсе.

Параметры для задания числа и точности совпадений

Элемент Rules должен иметь в своем составе элемент LocalizedStrings, содержащий элемент Resource, который ссылается на GUID вашей пользовательской сущности. В свою очередь, в каждом элементе Resource имеется один или несколько элементов Name и Description, содержащих локализованные строки для конкретного языка (обозначенного атрибутом langcode).

XML-разметка, демонстрирующая содержимое элемента LocalizedStrings

Обратите внимание, что локализованные строки служат только для отображения вашего пользовательского типа конфиденциальной информации в пользовательском интерфейсе Центра безопасности и соответствия требованиям. С их помощью нельзя создать локализованные версии списка ключевых слов или регулярного выражения.

Прочая разметка в пакете правил [GUID RulePack]

В начале каждого элемента RulePack содержатся некоторые общие сведения, которые необходимо указать. Приведенную ниже разметку можно использовать в качестве образца и подставить вместо заполнителей "..." собственные данные.

Важнее всего создать GUID для элемента RulePack. Ранее вы уже создали GUID для сущности; здесь создается второй GUID — для элемента RulePack. Существует несколько способов создания GUID, но вы можете легко это сделать в PowerShell, введя [guid]::NewGuid().

Элемент Version также играет важную роль. Когда вы впервые добавляете пакет правил, Office 365 регистрирует номер версии пакета. Позже, если вы обновите пакет правил и добавите новую его версию, не забудьте обновить номер версии, иначе Office 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 должен выглядеть следующим образом.

XML-разметка, демонстрирующая элемент RulePack

Изменения, касающиеся Exchange Online

Ранее вы могли использовать Exchange Online PowerShell для импорта собственных типов конфиденциальной информации для защиты от потери данных. Теперь такие типы можно использовать в Центре администрирования Exchange и Центре безопасности и соответствия требованиям. При этом для импорта собственных типов конфиденциальной информации требуется использовать оболочку PowerShell Центра безопасности и соответствия требованиям: оболочка PowerShell Exchange больше не поддерживается. Пользовательские типы конфиденциальной информации будут работать так же, как раньше, но изменения, внесенные в них в Центре безопасности и соответствия требования, могут быть отражены в Центре администрирования Exchange не сразу, а в течение часа.

Обратите внимание на то, что в Центре безопасности и соответствия требованиям для передачи пакета правил используется командлет DlpSensitiveInformationTypeRulePackage. В Центре администрирования Exchange для этого применялся командлет ClassificationRuleCollection.

Добавление пакета правил

Чтобы добавить свой пакет правил, сделайте следующее.

  1. Сохраните пакет как XML-файл в кодировке Юникод.

  2. Подключиться к Центру безопасности и соответствия требованиям Office 365 с помощью удаленной командной оболочки PowerShell.

  3. В оболочке PowerShell Центра безопасности и соответствия требованиям введите New- DlpSensitiveInformationTypeRulePackage -FileData (Get-Content -Path "C:\путь\ИмяПакетаПравил.xml" -Encoding Byte).

    При этом необходимо указать фактический путь к вашему пакету правил; C:\путь\ — это просто заполнитель.

  4. Для подтверждения введите Y и нажмите клавишу ВВОД.

  5. Убедитесь, что ваш новый тип конфиденциальной информации добавлен, введя Get-DlpSensitiveInformationType для просмотра списка всех типов конфиденциальной информации. Быстро отличить пользовательские типы конфиденциальной информации от встроенных можно по столбцу Publisher ("Издатель"). Список можно отфильтровать по конкретному типу конфиденциальной информации, выполнив команду Get-DlpSensitiveInformationType-Identity "имя типа конфиденциальной информации".

Проблемы, которые могут быть обнаружены при проверке

Когда вы добавляете XML-файл пакета правил, система проверяет XML на предмет известных неудачных практик и очевидных проблем с производительностью. Ниже перечислены некоторые проблемы, которые призвана выявлять такая проверка. В частности, регулярное выражение:

  • Не может начинаться или заканчиваться конструкцией изменения "|", которая совпадает с любым содержимым, так как она считается пустым совпадением.

    Например, "|" или "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)+" не пройдет проверку.

Если при проверке пользовательского типа конфиденциальной информации обнаружены проблемы, чреватые снижением производительности, этот тип не будет добавлен. При этом может быть отображено одно из следующих сообщений об ошибке:

  • Общие кванторы, порождающие больше совпадений, чем ожидается (например, "+", "*")

  • Окрестные привязки

  • Сочетание сложной группировки с общими кванторами

Повторный обход контента для выявления конфиденциальной информации

В подсистеме защиты от потери данных используется поисковая программа — обходчик для выявления и классификации конфиденциальной информации в контенте сайта. Повторный обход контента на сайтах SharePoint Online и OneDrive для бизнеса выполняется автоматически при каждом обновлении содержимого. Но для выявления во всем имеющемся контенте элементов, относящихся к новому пользовательскому типу конфиденциальной информации, необходимо заново выполнить его обход.

В Office 365 не предусмотрена возможность вручную запросить повторный обход всего контента, принадлежащего клиенту, но это можно сделать для семейства веб-сайтов, списка или библиотеки – см. статью Ручной запрос обхода контента и переиндексации сайта.

Удаление пользовательского типа конфиденциальной информации

  1. Подключиться к Центру безопасности и соответствия требованиям Office 365 с помощью удаленной командной оболочки PowerShell.

  2. В оболочке PowerShell Центра безопасности и соответствия требованиям выполните одно из указанных ниже действий.

    • Чтобы удалить пакет правил целиком со всеми содержащимися в нем сущностями:

      Введите Remove-DlpSensitiveInformationTypeRulePackage "ИмяПакетаПравил" (в приведенном выше примере XML нужно было бы, соответственно, ввести Remove-DlpSensitiveInformationTypeRulePackage "Employee ID Custom Rule Pack").

      Обратите внимание, что опознать свой пакет правил можно по элементу <Name> (для любого языка), содержащемуся в элементе <Rule Pack>, или по GUID атрибута id элемента RulePack.

    • Удаление отдельной сущности из пакета правил

      Необходимо добавить новую версию своего пакета правил, не содержащую удаляемой сущности, с помощью командлета Set-DlpSensitiveInformationTypeRulePackage. Прежде чем удалять тип конфиденциальной информации, необходимо исключить все ссылки на него из политик защиты от потери данных и правил транспорта Exchange.

  3. Для подтверждения введите Y и нажмите клавишу ВВОД.

  4. Убедитесь, что ваше правило удалено, введя Get-DlpSensitiveInformationType: возвращаемый список не должен содержать имени вашего пользовательского типа конфиденциальной информации.

Справка: определение схемы 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="http://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>

Дополнительные сведения

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×