커스텀 사전은 간단하면서도 강력한 단어 또는 구문 목록 대조 기능을 제공합니다. 커스텀 사전을 감지기 또는 기본 제공 감지기의 예외 목록으로 사용할 수 있습니다. 또한 커스텀 사전으로 기본 제공 infoType 감지기를 보강하여 부가적인 발견 항목의 일치를 판단할 수도 있습니다.
이 섹션에서는 단어 목록에서 일반 커스텀 사전 감지기를 만드는 방법을 설명합니다.
사전 커스텀 infoType 감지기 심층 분석
API 개요에 설명된 것처럼 사전 커스텀 infoType 감지기를 만들려면 다음이 포함된 CustomInfoType
객체를 정의합니다.
InfoType
객체 내의 커스텀 infoType 감지기에 부여할 이름Likelihood
값(선택사항). 이 필드를 생략하면 사전 항목에 대한 일치는 기본 가능성인VERY_LIKELY
를 반환합니다.DetectionRule
또는 핫워드 규칙(선택사항). 이러한 규칙은 지정된 핫워드의 주어진 근접도 내에서 발견 가능성을 조정합니다. 핫워드 규칙에 대한 자세한 내용은 일치 가능성 맞춤설정을 참조하세요.SensitivityScore
값(선택사항). 이 필드를 생략하면 사전 항목에 대한 일치는 기본 민감도 수준인HIGH
를 반환합니다.민감도 점수는 데이터 프로필에서 사용됩니다. 데이터를 프로파일링할 때 Sensitive Data Protection은 infoTypes의 민감도 점수를 사용하여 민감도 수준을 계산합니다.
Dictionary
(스캔할 단어 목록이 포함된WordList
또는 스캔할 줄바꿈으로 구분된 단어 목록이 포함된 단일 텍스트 파일에 대한CloudStoragePath
).
모든 선택적 구성요소를 포함하는 사전 커스텀 infoType 감지기는 JSON 객체로서 다음과 같은 형태를 갖게 됩니다. 이 JSON에는 Cloud Storage에 저장된 사전 텍스트 파일 경로가 포함되어 있습니다. 인라인 단어 목록을 보려면 이 주제 뒷부분의 예시 섹션을 참조하세요.
{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_INFOTYPE_NAME"
},
"likelihood":"LIKELIHOOD_LEVEL",
"detectionRules":[
{
"hotwordRule":{
HOTWORD_RULE
}
},
...
],
"sensitivityScore":{
"score": "SENSITIVITY_SCORE"
},
"dictionary":
{
"cloudStoragePath":
{
"path": "gs://PATH_TO_TXT_FILE"
}
}
}
],
...
}
사전 일치 세부 사항
다음은 Sensitive Data Protection에서 사전 단어 및 구문의 일치를 판단하는 방법에 관한 지침입니다. 이러한 항목은 일반 및 대형 커스텀 사전에 모두 적용됩니다.
- 사전 단어는 대소문자를 구분하지 않습니다. 사전에
Abby
가 포함된 경우abby
,ABBY
,Abby
등과 일치합니다. - 유니코드 기본 다국어 평면에 포함된 글자 및 숫자를 제외한 사전 또는 스캔할 콘텐츠의 모든 문자는 일치 항목을 스캔할 때 공백으로 간주됩니다. 사전에서
Abby Abernathy
를 스캔하는 경우abby abernathy
,Abby, Abernathy
,Abby (ABERNATHY)
등과 일치합니다. - 일치 항목의 주변 문자는 단어 내의 인접 문자와 유형(문자 또는 숫자)이 달라야 합니다. 사전에서
Abi
를 스캔하는 경우Abi904
의 처음 3개 문자는 일치하지만Abigail
은 일치하지 않습니다. - 유니코드 표준의 보조 다중 언어 영역에 있는 문자가 포함된 사전 단어는 예상치 않은 발견 항목을 발생시킬 수 있습니다. 이러한 문자의 예시에는 중국어, 일본어, 한국어, 이모지 등이 있습니다.
예시
간단한 단어 목록
병원을 방문한 환자가 진료를 받은 병실이 포함된 데이터가 있다고 가정해 보겠습니다. 이러한 위치는 특정 데이터 세트에서 민감한 정보로 간주될 수 있지만 Sensitive Data Protection의 기본 제공 감지기에서는 이를 인지하지 않습니다.
병실은 다음과 같이 나열되어 있습니다.
- 'RM-Orange'
- 'RM-Yellow'
- "RM-Green"
C#
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
다음 JSON 예에서는 커스텀 객실 번호를 익명화하는 데 사용할 수 있는 커스텀 사전을 정의합니다.
JSON 입력:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"Patient was seen in RM-YELLOW then transferred to rm green."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"dictionary":{
"wordList":{
"words":[
"RM-GREEN",
"RM-YELLOW",
"RM-ORANGE"
]
}
}
}
]
}
}
JSON 출력:
JSON 입력을 content:deidentify
로 POST하면 다음 JSON 응답이 반환됩니다.
{
"item":{
"value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"2",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
Sensitive Data Protection에서 커스텀 사전의 WordList
메시지에 지정된 방 번호가 올바르게 식별되었습니다. 두 번째 예시인 'rm green'과 같이 대문자와 하이픈(-
)이 누락되더라도 항목은 일치됩니다.
예외 목록
이메일 주소와 같은 고객 식별자가 포함된 로그 데이터가 있으며 이 정보를 수정하려는 경우를 가정해 보겠습니다. 그러나 이러한 로그에는 내부 개발자의 이메일 주소도 포함되어 있으며, 이러한 주소는 수정하고 싶지 않습니다.
C#
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
다음 JSON 예시는 WordList
메시지(jack@example.org 및 jill@example.org) 내에서 이메일 주소의 하위 집합이 나열된 커스텀 사전을 만들고 여기에 커스텀 infoType 이름 DEVELOPER_EMAIL
을 지정합니다. 이 JSON은 Sensitive Data Protection이 지정된 이메일 주소를 무시하도록 지시하고, 감지된 다른 이메일 주소를 해당 infoType(이 경우에는 EMAIL_ADDRESS
)과 일치하는 문자열로 바꿉니다.
JSON 입력:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"jack@example.org accessed customer record of user5@example.com"
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
},
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"DEVELOPER_EMAIL"
},
"dictionary":{
"wordList":{
"words":[
"jack@example.org",
"jill@example.org"
]
}
}
}
],
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
"ruleSet": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"rules": [
{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [
{
"name": "DEVELOPER_EMAIL"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
}
JSON 출력:
이 JSON을 content:deidentify
에 POST하면 다음 JSON 응답이 반환됩니다.
{
"item":{
"value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
출력은 user1@example.com을 EMAIL_ADDRESS
infoType 감지기에 의해 일치되는 항목으로, jack@example.org를 DEVELOPER_EMAIL
커스텀 infoType 감지기에 의해 일치되는 항목으로 올바르게 식별했습니다. EMAIL_ADDRESS
만 변환하기로 선택했으므로 jack@example.org는 그대로 유지됩니다.
기본 제공 infotype 감지기 보강
내장 infoType 감지기가 올바른 값을 반환하지 않는 경우를 고려해 보겠습니다. 예를 들어 개발자가 사람 이름과 일치하는 항목이 반환되기를 원하는데 Sensitive Data Protection의 기본 제공 PERSON_NAME
감지기가 데이터세트에서 공통적인 일부 사람 이름에 대한 일치 항목을 반환하지 못할 수 있습니다.
Sensitive Data Protection에서는 다음 예시에 표시된 것처럼 커스텀 infoType 감지기의 선언에 기본 제공 감지기를 포함하여 기본 제공 infoType 감지기를 보강할 수 있습니다. 이 스니펫은 PERSON_NAME
기본 제공 infoType 감지기가 'Quasimodo' 이름의 일치 항목을 추가로 검색할 수 있도록 Sensitive Data Protection을 구성하는 방법을 보여줍니다.
C#
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
... "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"PERSON_NAME" }, "dictionary":{ "wordList":{ "words":[ "quasimodo" ] } } } ] } ...
다음 단계
대형 커스텀 사전 알아보기