사용자 지정 중요한 정보 유형 만들기

Office 365의 데이터 손실 방지(DLP)에는 DLP 정책에 사용할 수 있는 다양한 중요한 정보 유형이 포함되어 있습니다. 기본 제공되는 이러한 유형은 신용 카드 번호, 은행 계좌 번호, 여권 번호 등을 식별하고 보호하는 데 도움이 됩니다.

해당 조직에서만 사용하는 특정 형식의 직원 ID 등 다른 유형의 중요한 정보를 식별하고 보호해야 하는 경우 사용자 지정 중요한 정보 유형을 만들 수 있습니다. 중요한 정보 유형은 규칙 패키지라는 XML 파일에 정의됩니다.

이 항목에서는 사용자 지정 중요한 정보 유형을 정의하는 XML 파일을 만드는 방법을 설명합니다. 먼저 정규식을 만드는 방법을 알아야 합니다. 이 항목에서는 하나의 예로서 직원 ID를 식별하는 중요한 정보 유형을 만들어 봅니다. 자체 XML 파일을 만들기 위한 시작점으로 본 XML 예제를 사용할 수 있습니다.

정상적인 XML 파일을 만들었으면 PowerShell을 사용하여 Office 365에 업로드할 수 있습니다. 이렇게 하면 DLP 정책에서 사용자 지정 중요한 정보 유형을 사용하고, 중요한 정보를 의도한 대로 감지하는지 테스트할 수 있습니다.

내용

규칙 패키지의 예제 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 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>
			<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 스키마 구조를 이해하고, 올바른 콘텐츠를 식별하도록 사용자 지정 중요한 정보 유형을 정의하기 위해 이 구조를 사용하는 방법을 숙지하는 것이 좋습니다.

규칙은 하나 이상의 엔터티(중요한 정보 유형)를 정의하며, 각 엔터티는 하나 이상의 패턴을 정의합니다. 패턴은 DLP에서 전자 메일이나 문서와 같은 콘텐츠를 평가할 때 참고하는 것을 가리킵니다.

(용어 참고: DLP 정책에 대해 잘 알고 있다면 정책에는 조건과 작업으로 구성된 하나 이상의 규칙이 포함된다는 사실을 알고 있을 것입니다. 그러나 이 항목에서는 XML 태그에서 엔터티(중요한 정보 유형)를 정의하는 패턴을 가리키는 데 규칙이라는 용어를 사용합니다. 따라서 이 항목에서는 규칙이라는 용어가 나오면 조건이나 작업이 아닌 엔터티(중요한 정보 유형)를 의미한다는 사실에 유의하세요.)

간단한 시나리오: 한 개의 패턴을 갖는 엔터티

다음은 간단한 시나리오입니다. 9자리 숫자로 구성된 조직의 직원 ID를 포함하는 콘텐츠를 식별하는 DLP 정책을 만들려고 합니다. 따라서 여기서 패턴이란 9자리 숫자를 식별하는 규칙이 포함된 정규식을 의미합니다. 9자리 숫자를 포함하고 있는 어떠한 콘텐츠도 이 패턴을 충족합니다.

한 개의 패턴을 갖는 엔터티 다이어그램

이 패턴은 매우 간단한 반면 직원 ID가 아닌 임의의 9자리 숫자를 포함하는 콘텐츠를 매칭함으로써 많은 오탐을 유발할 수 있습니다.

일반적인 시나리오: 여러 개의 패턴을 갖는 엔터티

따라서 일반적으로 둘 이상의 패턴을 갖는 엔터티를 정의하게 됩니다. 이때 패턴은 엔터티(9자리 숫자)에 더해 증거(키워드나 날짜)를 식별하는 데 사용됩니다.

예를 들어, 직원 ID를 포함하는 콘텐츠를 식별할 확률을 높이려면 9자리 숫자에 더해 채용일을 식별하는 패턴을 정의하고, 여기에 더해 채용일과 키워드(예: “직원 ID”)를 모두 식별하는 또 다른 패턴을 정의할 수 있습니다.

여러 개의 패턴을 갖는 엔터티 다이어그램

이러한 구조에서 몇 가지 유의할 사항이 있습니다.

  • 더 많은 증거가 필요한 패턴은 더 높은 신뢰도 수준을 갖습니다. 이것은 나중에 DLP 정책에서 이 중요한 정보를 사용할 때 높은 신뢰도 일치만 사용하여 더 제한적인 작업(콘텐츠 차단 등)을 사용할 수 있고 낮은 신뢰도 일치를 사용하여 덜 제한적인 작업(예: 알림 보내기)을 사용할 수 있으므로 매우 유용합니다.

  • IdMatch 및 Match와 같은 지원 요소는 Pattern이 아닌 Rule 요소의 하위 요소인 regex와 키워드를 참조합니다. 이러한 지원 요소는 Pattern에 의해 참조되나 Rule에 포함됩니다. 즉, 여러 개의 엔터티와 패턴에서 정규식이나 키워드 목록 등 지원 요소에 대한 정의를 참조할 수 있습니다.

식별해야 하는 엔터티는 무엇인가? [Entity 요소, id 속성]

엔터티는 정상적인 패턴을 갖는 중요한 정보 유형(예: 신용 카드 번호)입니다. 각 엔터티는 ID로서 고유한 GUID를 갖습니다.

엔터티에 이름을 지정하고 GUID 생성

Rules 및 Entity 요소를 추가합니다. 그런 다음 사용자 지정 엔터티의 이름(여기서는 직원 ID)이 포함된 설명을 추가합니다. 나중에 현지화된 문자열 섹션에 엔터티 이름을 추가하게 되며, 이때 이름은 DLP 정책을 만들 때 UI에 표시되는 이름을 가리킵니다.

이번에는 엔터티의 GUID를 생성합니다. GUID를 생성하는 방법에는 여러 가지가 있지만, PowerShell에서 [guid]::NewGuid()를 입력하면 간단하게 생성할 수 있습니다. 뒤에서 현지화된 문자열 섹션에도 엔터티 GUID를 추가하게 됩니다.

Rules 및 Entity 요소를 보여 주는 XML 태그

일치해야 하는 패턴은 무엇인가? [Pattern 요소, IdMatch 요소, Regex 요소]

패턴에는 중요한 정보 유형에서 무엇을 조회하는지가 목록으로 포함됩니다. regex, 키워드, 기본 제공 함수(날짜나 주소를 찾기 위해 regex를 실행하는 등의 작업을 수행) 등이 여기에 포함됩니다. 중요한 정보 유형에는 고유한 신뢰도를 갖는 여러 개의 패턴이 있을 수 있습니다.

아래의 패턴은 모두 공백(\s) … (\s)으로 묶인 9자리 숫자(\d{9})를 찾는 하나의 정규식을 참조합니다. 이 정규식은 IdMatch 요소에 의해 참조되는 동시에 직원 ID 엔터티를 찾는 모든 패턴의 공통된 요구 사항이기도 합니다. IdMatch는 직원 ID, 신용 카드 번호, 사회보장번호 등 패턴이 매칭을 시도하는 식별자입니다. 패턴 요소는 정확히 한 개의 IdMatch 요소를 가져야 합니다.

하나의 Regex 요소를 참조하는 여러 개의 Pattern 요소를 보여 주는 XML 태그

결과가 충족되면 패턴은 개수와 신뢰도 수준을 반환합니다. 반환된 값은 DLP 정책의 조건에서 사용할 수 있습니다. DLP 정책에 중요한 정보 유형을 감지하는 조건을 추가할 때 여기에 표시된 것처럼 개수와 신뢰도 수준을 편집할 수 있습니다. 신뢰도 수준(일치 정확도)은 이 항목의 뒷부분에서 설명합니다.

인스턴스 수 및 일치 정확도 옵션

정규식을 작성할 때는 알고 있어야 할 잠재적인 문제가 있다는 사실에 유의해야 합니다. 예를 들어, 지나치게 많은 콘텐츠를 식별하는 regex를 작성하고 업로드하는 경우 성능에 영향을 줄 수 있습니다. 이러한 잠재적인 문제는 알고 있어야 하는 잠재적인 유효성 검사 문제를 참조하세요.

추가 서비스를 요구해야 하는가? [Match 요소, minCount 속성]

패턴은 IdMatch에 더해 Match 요소를 사용하여 키워드, regex, 날짜, 주소 등 추가적인 증빙을 요구할 수 있습니다.

Pattern은 여러 개의 Match 요소를 포함할 수 있으며, 여러 개의 Match 요소는 Pattern 요소에 직접 포함하거나 Any 요소를 사용하여 조합할 수 있습니다. Match 요소는 암시적 AND 연산자로 연결합니다. 패턴이 일치하기 위해서는 모든 Match 요소가 충족되어야 합니다. Any 요소를 사용하여 AND 또는 OR 연산자를 사용할 수 있습니다(다른 섹션에서 상술).

선택적으로 minCount 속성을 사용하여 각 Match 요소에 대해 몇 개의 매치 인스턴스를 찾아야 하는지 지정할 수 있습니다. 예를 들어, 키워드 목록에 포함된 키워드 중 두 개 이상을 찾는 경우에만 패턴이 충족되도록 지정할 수 있습니다.

minOccurs 속성을 갖는 Match 요소를 보여 주는 XML 태그

키워드 [Keyword, Group 및 Term 요소, matchStyle 및 caseSensitive 속성]

직원 ID와 같은 중요한 정보를 식별한 다음에는 증빙으로서 키워드를 사용하는 경우가 많습니다. 예를 들어, 9자리 숫자임을 확인하는 것에 더해 “카드", “배지", “ID”와 같은 단어가 있는지 확인할 수 있습니다. 이때 Keyword 요소를 사용합니다. Keyword 요소에는 여러 개의 패턴 또는 엔터티에 포함된 여러 개의 Match 요소에 의해 참조될 수 있는 id 속성이 있습니다.

키워드는 Group 요소에 Term 요소 목록으로서 포함됩니다. Group 요소에는 다음과 같은 두 개의 양의 값을 갖는 matchStyle 속성이 있습니다.

  • matchStyle=”word” Word 매칭은 공백 또는 다른 구분 기호로 묶인 단어 단위를 식별합니다. 단어의 일부를 매칭하거나 아시아 언어의 단어 매칭을 수행하려는 경우가 아니면 항상 word를 사용해야 합니다.

  • matchStyle=”string” String 매칭은 구분 기호를 불문하고 문자열 매칭을 수행합니다. 예를 들어, “id”는 “bid”, “idea” 등도 매치한다고 간주합니다. string은 아시아 언어의 단어 매칭을 수행해야 하거나 키워드가 다른 문자열의 일부로 포함된 경우에만 사용해야 합니다.

마지막으로, Term 요소의 caseSensitive 속성을 사용하여 콘텐츠가 대소문자를 구분하여 키워드와 정확히 일치해야 함을 지정할 수 있습니다.

Match 요소 참조 키워드를 보여 주는 XML 태그

정규식 [Regex 요소]

이 예제에서는 직원 ID 엔터티가 패턴(공백으로 묶인 9자리 숫자)의 regex를 참조하기 위해 IdMatch 요소를 사용합니다. 패턴은 또한 Match 요소를 사용하여 미국 우편 번호 형식의 5자리 또는 9자리 숫자 등과 같은 증빙을 식별하는 데 추가적인 Regex 요소를 참조할 수 있습니다.

날짜, 주소 등의 추가적인 패턴 [기본 제공 함수]

DLP는 기본 제공되는 중요한 정보 유형에 더해 미국 날짜, 유럽 날짜, 유효 기간, 미국 주소 등의 증빙을 식별하기 위한 기본 제공 함수도 포함합니다. DLP는 사용자 지정 함수 업로드를 지원하지 않지만, 사용자 지정 중요한 정보 유형을 만들 때 엔터티가 기본 제공 함수를 참조할 수 있습니다.

예를 들어, 직원 ID 배지에는 채용일이 기재되어 있습니다. 따라서 사용자 지정 엔터티가 기본 제공 함수 Func_us_date를 사용하여 미국에서 일반적으로 사용되는 형식의 날짜를 식별할 수 있습니다.

자세한 내용은 DLP 함수가 찾는 항목을 참조하세요.

기본 제공 함수를 참조하는 Match 요소를 보여 주는 XML 태그

다양한 증거 조합 [Any 요소, minMatches 및 maxMatches 속성]

Pattern 요소에서 모든 IdMatch 및 Match 요소는 암시적 AND 연산자로 연결됩니다. 패턴이 충족되기 위해서는 모든 매칭이 충족되어야 합니다. Any 요소를 사용하여 Match 요소를 그룹화하면 더욱 유연한 매칭 로직을 만들 수 있습니다. 예를 들어, 하위 Match 요소 중 all, none 또는 exact 하위 집합을 매칭하기 위해 Any 요소를 사용할 수 있습니다.

Any 요소는 패턴 매칭이 수행되기 위해서는 하위 Match 요소 중 몇 개가 충족되어야 하는지 정의하기 위해 선택적으로 사용할 수 있는 minMatches 및 maxMatches 속성을 갖습니다. minMatches 및 maxMatches 속성은 매칭에서 발견된 증거 인스턴스의 개수가 아닌, 충족되어야 하는 Match 요소의 개수를 정의하는 데 사용된다는 사실에 유의해야 합니다. 특정 매치의 최소 인스턴스 개수를 정의하려면(예: 목록에 포함된 키워드 두 개) Match 요소의 minCount 속성을 사용합니다(위 참조).

하나 이상의 하위 Match 요소 매치

Match 요소가 충족해야 하는 최소 개수를 지정할 때 minMatches 속성을 사용합니다. Match 요소는 암시적 OR 연산자로 연결됩니다. 이 Any 요소는 목록에서 미국식 형식의 날짜 또는 키워드가 발견되는 경우 충족됩니다.

minMatches 속성을 갖는 Any 요소를 보여 주는 XML 태그

하위 Match 요소의 정확한 하위 집합 매치

Match 요소가 충족해야 하는 특정 개수를 지정하려면 minMatches와 maxMatches를 같은 값으로 설정합니다. 이 Any 요소는 정확히 한 개의 날짜 또는 키워드가 발견되는 경우 충족되며, 둘 이상이 발견되는 경우 충족되지 않습니다.

minMatches 및 maxMatches 속성을 갖는 Any 요소를 보여 주는 XML 태그

하위 Match 요소 매치 없음

특정 증거가 없는 경우 패턴이 충족되도록 하려면 minMatches와 maxMatches를 둘 다 0으로 설정할 수 있습니다. 이것은 가양성으로 이어지는 키워드 목록 또는 기타 증거가 있을 때 유용할 수 있습니다.

예를 들어, 직원 ID 엔터티는 “ID 카드"의 “카드”라는 키워드를 찾을 수 있습니다. 하지만 “신용 카드"라는 문구에서 “카드”가 나타난다면 이 콘텐츠는 “ID 카드”를 의미하지 않습니다. 이때 패턴 충족 조건으로부터 배제하려는 용어 목록에 “신용 카드"를 키워드로 추가하면 됩니다.

maxMatches 속성 값이 0임을 보여 주는 XML 태그

엔터티가 다른 증거와 얼마나 가까이 있어야 하는가? [patternsProximity 속성]

이 예제에서는 중요한 정보 유형이 직원 ID를 나타나는 패턴을 찾고 있습니다. 또한 패턴의 일부로서 “ID”와 같은 키워드를 비롯한 증빙도 찾고 있습니다. 따라서 여러 증거가 더 가까울수록 패턴이 실제로 직원 ID일 확률이 더 높다고 말할 수 있습니다. Entity 요소의 필수 속성인 patternsProximity 속성을 사용하여 패턴에서 여러 증거가 얼마나 가까이에 있는지를 판단할 수 있습니다.

patternsProximity 속성을 보여 주는 XML 태그

patternsProximity 속성 값은 엔터티에 포함된 각 패턴에 대해 해당 Pattern에 지정된 다른 모든 Match에 대해 IdMatch의 위치로부터의 거리(유니코드 문자)를 정의합니다. 근접 범위의 기준은 IdMatch의 위치로, IdMatch의 왼쪽과 오른쪽으로 범위가 확장해 나갑니다.

근접 범위 다이어그램

아래 예제에서는 사용자 지정 엔터티인 직원 ID의 IdMatch 요소에 하나 이상의 키워드 또는 날짜 일치가 필요한 경우 근접 범위가 패턴 매칭에 어떤 영향을 주는지 보여 줍니다. ID2 및 ID3의 경우 근접 범위 내에 증빙이 없거나 부분적으로만 존재하기 때문에 ID1만 일치하게 됩니다.

증빙 및 근접 범위 다이어그램

전자 메일의 경우 본문과 각 첨부 파일이 별도의 항목으로 취급됩니다. 즉, 근접 범위가 해당 항목의 끝을 넘어 확장되지 않습니다. 각 항목(첨부 파일 또는 본문)에 대해 idMatch 및 증빙이 모두 해당 항목 안에 존재해야 합니다.

각 패턴의 적정 신뢰 수준은 무엇인가? [confidenceLevel 속성, recommendedConfidence 속성]

패턴에 더 많은 증거가 필요할수록 패턴이 일치되었을 때 실제 엔터티(직원 ID 등)가 식별되었다고 판단할 수 있는 신뢰도가 올라갑니다. 예를 들어, 9자리 ID 숫자만 요구되는 패턴보다 9자리 ID 숫자, 채용일, 키워드가 요구되는 패턴의 신뢰도가 더 높습니다.

Pattern 요소는 confidenceLevel이라는 필수 속성을 갖습니다. confidenceLevel의 값(1에서 100까지의 정수)은 엔터티에 포함된 각 패턴의 고유 ID라고 생각하면 됩니다. 엔터티에 포함된 여러 패턴에는 서로 다른 신뢰도 수준을 할당해야 합니다. 구체적인 정수 값은 중요하지 않습니다. 규정준수 팀에서 합리적이라 생각하는 아무 숫자나 선택하면 됩니다. 사용자 지정 중요한 정보 유형을 업로드하고 DLP 정책을 만들었으면 이후 생성하는 규칙의 조건에서 신뢰도 수준을 참조할 수 있습니다.

confidenceLevel 속성의 값이 여러 개인 Pattern 요소를 보여 주는 XML 태그

Entity는 각 Pattern에 대핸 confidenceLevel 외에도 recommendedConfidence 속성을 갖습니다. 권장 신뢰도 속성은 규칙의 신뢰도 수준 기본값이라고 생각하면 됩니다. DLP 정책에서 규칙을 만들 때 규칙에서 사용할 신뢰도 수준을 지정하지 않은 경우에는 규칙이 해당 엔터티의 권장 신뢰도 수준을 사용하여 매치를 수행합니다.

보안 및 규정 센터 UI에서 다른 언어를 지원하고자 하는가? [LocalizedStrings 요소]

규정준수 팀에서 Office 365 보안 및 준수 센터를 통해 여러 위치와 여러 언어에 대한 DLP 정책을 만드는 경우에는 사용자 지정 중요한 정보 유형의 이름과 설명을 현지화된 버전으로 지정할 수 있습니다. 규정준수 팀에서 지원되는 언어로 Office 365를 사용하면 UI에 현지화된 이름이 표시됩니다.

인스턴스 수 및 일치 정확도 옵션

Rules 요소는 사용자 지정 엔터티의 GUID를 참조하는 Resource 요소가 포함된 LocalizedStrings 요소를 가져야 합니다. 각 Resource 요소는 특정 언어에 대한 현지화된 문자열을 제공하는 langcode 속성을 사용하는 하나 이상의 Name 및 Description 요소를 갖습니다.

LocalizedStrings 요소의 내용을 보여 주는 XML 태그

현지화된 문자열은 규정 및 준수 센터 UI에 사용자 지정 중요한 정보 유형이 표시되는 방식만 결정합니다. 현지화된 문자열을 사용하여 키워드 목록이나 정규식의 현지화된 버전을 제공할 수는 없습니다.

다른 규칙 패키지 태그 [RulePack GUID]

마지막으로, 각 RulePackage의 시작 부분에는 반드시 작성해야 하는 일반적인 정보가 포함됩니다. 아래의 태그를 템플릿으로 사용하여 “. . .” 자리 표시자에 구체적인 정보를 입력하면 됩니다.

또한 RulePack의 GUID도 생성해야 합니다. 위에서는 엔터티의 GUID를 생성해 보았습니다. 여기서는 RulePack의 두 번째 GUID를 생성합니다. 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 요소는 다음과 같습니다.

RulePack 요소를 보여 주는 XML 태그

Exchange Online 변경

이전에 DLP에 대한 사용자 지정 중요한 정보 유형을 가져오기 위해 Exchange Online PowerShell을 사용해 보았을 것입니다. 이제 사용자 지정 중요한 정보 유형은 Exchange 관리 센터와 보안 및 준수 센터 모두에서 사용할 수 있습니다. 이 개선의 일부로 사용자 지정 중요한 정보 유형을 가져오기 위해서는 보안 및 준수 센터 PowerShell을 사용해야 하며 Exchange PowerShell에서는 더 이상 정보 유형을 가져올 수 없습니다. 사용자 지정 중요한 정보 유형은 전과 동일하게 계속 사용할 수 있지만 보안 및 준수 센터에서 사용자 지정 중요한 정보 유형에 대한 변경 사항이 Exchange 관리 센터에 표시되려면 최대 1시간이 걸릴 수 있습니다.

보안 및 준수 센터에서는 DlpSensitiveInformationTypeRulePackage cmdlet을 사용하여 규칙 패키지를 업로드합니다. 이전에 Exchange 관리 센터에서는 ClassificationRuleCollection cmdlet을 사용했습니다.

규칙 패키지 업로드

규칙 패키지를 업로드하려면 다음을 수행합니다.

  1. .xml 파일을 유니코드 인코딩으로 저장합니다.

  2. 원격 PowerShell을 사용하여 Office 365 보안 및 규정 준수 센터에 연결

  3. 보안 및 준수 센터 PowerShell에 다음과 같이 입력합니다. New- DlpSensitiveInformationTypeRulePackage -FileData (Get-Content -Path "C:\custompath\MyNewRulePack.xml " -Encoding Byte)

    이때 규칙 팩이 실제로 저장된 파일 위치를 사용해야 합니다. C:\custompath\는 자리 표시자입니다.

  4. Y를 입력하고 ENTER 키를 눌러 확인합니다.

  5. Get- DlpSensitiveInformationType을 입력하고 중요한 유형 목록을 모두 표시하여 새 중요한 정보 유형이 제대로 업로드되었는지 확인합니다. 게시자 열을 보면 기본 제공 중요한 정보 유형과 사용자 지정 중요한 정보 유형을 빠르게 구분할 수 있습니다. Get-DlpSensitiveInformationType -Identity “중요한 정보 유형의 이름”을 실행하여 특정 중요한 정보 유형으로 목록을 필터링할 수 있습니다.

알고 있어야 하는 잠재적인 유효성 검사 문제

규칙 패키지 XML 파일을 업로드하면 시스템에서 XML의 유효성 검사를 수행하고 악성 패턴과 알려진 성능 문제를 확인합니다. 다음은 정규식에 대해 수행되는 알려진 문제에 대한 유효성 검사입니다.

  • “|” 기호는 공백 매치로 간주되어 모든 것을 일치한다고 판단하기 때문에 시작 부분에 사용할 수 없음.

    예: “|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)+”는 유효성 검사를 통과하지 못합니다.

사용자 지정 중요한 정보 유형에 성능에 영향을 줄 수 있는 문제가 있는 경우, 업로드가 수행되지 않고, 다음 오류 메시지 중 하나가 표시될 수 있습니다.

  • Generic quantifiers which match more content than expected (e.g., ‘+’, ‘*’)(예상보다 많은 콘텐츠와 매칭되는 일반 수량자(예: ‘+’, ‘*’))

  • Lookaround assertions(둘러보기 어설션)

  • Complex grouping in conjunction with general quantifiers(일반 수량자와 함께 사용된 복잡한 그룹화)

콘텐츠를 다시 크롤링하여 중요한 정보 식별

DLP는 사이트 콘텐츠에서 중요한 정보를 식별하고 분류하기 위해 검색 크롤러를 사용합니다. SharePoint Online 및 비즈니스용 OneDrive의 콘텐츠는 업데이트될 때마다 자동으로 크롤링이 다시 수행됩니다. 그러나 기존의 모든 콘텐츠에서 새로운 사용자 지정 중요한 정보 유형을 식별하려면 해당 콘텐츠에 대한 크롤링을 다시 수행해야 합니다.

Office 365에서는 전체 테넌트에 대한 다시 크롤링을 수동으로 요청할 수는 없으나 사이트 모음, 목록 또는 라이브러리에 대한 다시 크롤링을 요청하는 것은 가능합니다. 사이트, 라이브러리 또는 목록에 대한 크롤링 및 재인덱싱을 수동으로 요청을 참조하세요.

사용자 지정 중요한 정보 유형 제거

  1. 원격 PowerShell을 사용하여 Office 365 보안 및 규정 준수 센터에 연결

  2. 보안 및 준수 센터 PowerShell에서 다음 중 하나를 수행합니다.

    • 전체 규칙 패키지와 거기에 포함된 모든 엔터티를 제거하려면:

      Remove-DlpSensitiveInformationTypeRulePackage "NameOfYourRulePack"을 입력합니다. 위의 예제 XML의 경우 Remove-DlpSensitiveInformationTypeRulePackage "Employee ID Custom Rule Pack"을 입력합니다.

      규칙 패키지를 식별하려면 <Rule Pack> 요소의 <Name> 요소(모든 언어)를 사용하거나 RulePack 요소의 id 속성의 GUID를 사용할 수 있습니다.

    • 규칙 패키지에서 엔터티 한 개를 제거하려면

      Set-DlpSensitiveInformationTypeRulePackage를 사용하여 특정 엔터티가 제거된 새로운 버전의 규칙 패키지를 업로드해야 합니다. 제거할 중요한 정보 유형을 참조하는 DLP 정책이나 Exchange 전송 규칙이 없는지 확인해야 합니다.

  3. Y를 입력하고 ENTER 키를 눌러 확인합니다.

  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 Insider 참여

이 정보가 유용한가요?

의견 주셔서 감사합니다!

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×