Sensitive Data Protection은 테이블과 같은 컨테이너 구조에 저장된 텍스트를 포함한 텍스트 콘텐츠의 민감한 정보를 익명화할 수 있습니다. 익명화는 데이터에서 식별 정보를 삭제하는 프로세스입니다. API는 개인 식별 정보(PII)와 같은 민감한 정보를 감지한 다음 익명화 변환을 사용하여 데이터를 마스킹, 삭제하거나 다른 방법으로 알아보기 어렵게 만듭니다. 예를 들어 익명화 기술에는 다음이 포함될 수 있습니다.
- 전체 또는 일부 문자를 별표(*) 또는 해시(#)와 같은 기호로 바꿔 민감한 정보 마스킹
- 각 민감한 정보 인스턴스를 토큰 또는 서로게이트 문자열로 바꿉니다.
- 무작위로 생성되거나 사전 결정된 키를 사용하여 민감한 정보를 암호화 및 대체
HTTPS 기반 JSON, CLI 및 Sensitive Data Protection 클라이언트 라이브러리를 사용하는 여러 프로그래밍 언어를 통해 API에 정보를 제공할 수 있습니다. CLI를 설정하려면 빠른 시작을 참조하세요. JSON 형식의 정보 제출에 대한 자세한 내용은 JSON 빠른 시작을 참조하세요.
API 개요
민감한 정보를 익명화하려면 민감한 정보 보호의 content.deidentify 메서드를 사용합니다.
익명화 API 호출에는 세 부분이 있습니다.
- 검사할 데이터: 검사할 API에 대한 문자열 또는 테이블 구조(
ContentItem객체). 검사할 대상: 찾을 데이터의 유형(즉, infoType), 특정 가능성 기준을 초과한 결과를 필터링할지 여부, 특정 수 이하의 결과만 반환할지 여부와 같은 감지 구성 정보 (
InspectConfig)InspectConfig객체에 스캔할 infoType을 포함해야 합니다. 그렇지 않으면 Sensitive Data Protection에서 기본 infoType 집합 (ALL_BASIC)을 스캔하며, 이 중 일부는 필요하지 않을 수 있습니다. 필요하지 않은 infoType을 검색하면 요청에 불필요한 지연 시간이 추가될 수 있습니다.요청에는
InspectConfig객체가 필요합니다(한 가지 예외 있음). 자세한 내용은 이 페이지의 레코드 변환을 참고하세요.검사 결과의 처리 방법: 민감한 정보를 익명화할 방법을 정의하는 구성 정보(
DeidentifyConfig). 이 인수에 대해서는 다음 섹션에서 더 자세히 다룹니다.
API는 사용자가 제공한 것과 동일한 항목을 동일한 형식으로 반환하지만 기준에 따라 민감한 정보를 포함한 것으로 식별된 모든 텍스트는 익명화됩니다.
감지 기준 지정
정보 유형 (즉, 'infoType') 감지기는 Sensitive Data Protection이 민감한 정보를 찾는 데 사용하는 메커니즘입니다.
Sensitive Data Protection에는 여러 종류의 infoType 감지기가 있습니다. 이러한 모든 감지기를 요약하면 다음과 같습니다.
- 기본 제공 infoType 감지기는 Sensitive Data Protection에 기본 제공됩니다. 여기에는 전역적으로 적용 가능한 데이터 유형은 물론 국가 또는 리전별 민감한 정보 유형에 대한 감지기가 포함됩니다.
- 커스텀 infoType 감지기는 개발자가 직접 만드는 감지기입니다. 커스텀 infoType 감지기에는 다음과 같은 세 가지 종류가 있습니다.
- 일반 커스텀 사전 감지기는 Sensitive Data Protection이 일치 항목을 검색하는 간단한 단어 목록입니다. 목록에 포함된 단어 또는 구문의 수가 최대 수만 개 수준인 경우 일반 커스텀 사전 감지기를 사용합니다. 단어 목록이 크게 바뀔 일이 없는 경우 일반 커스텀 사전 감지기가 유리합니다.
- 저장된 커스텀 사전 감지기는 Sensitive Data Protection에서 Cloud Storage 또는 BigQuery에 저장된 대량의 단어 또는 구문 목록을 사용하여 생성합니다. 목록에 포함된 단어 또는 구문의 수가 최대 수천만 개 수준으로 많은 경우 저장된 커스텀 사전 감지기를 사용합니다.
- 정규 표현식 (정규식) 감지기를 사용 설정하면 Sensitive Data Protection에서 정규 표현식 패턴을 기준으로 일치 항목을 감지할 수 있습니다.
스캔 결과를 상세검색하려면 검사 규칙을 만드세요.
익명화 변환
익명화 구성(DeidentifyConfig)을 설정할 때는 변환을 하나 이상 지정해야 합니다. 변환에는 두 가지 카테고리가 있습니다.
InfoTypeTransformations: 제출된 텍스트 내에서 특정 infoType으로 식별된 값에만 적용되는 변환RecordTransformations: 제출된 테이블 형식 텍스트 데이터 내에서 특정 infoType으로 식별된 값 또는 테이블 형식 데이터의 전체 열에만 적용되는 변환
InfoType 변환
요청당 하나 이상의 infoType 변환을 지정할 수 있습니다. 각 InfoTypeTransformation 객체 내에서 다음 두 가지를 모두 지정합니다.
- 변환을 적용해야 하는 하나 이상의 infoType(
infoTypes[]배열 객체) - 기본 변환(
PrimitiveTransformation객체)
infoType 지정은 선택사항이지만 InspectConfig 인수에 최소 하나의 infoType을 지정하지 않을 경우 제공된 변환이 없는 모든 기본 제공 infoType에 변환이 적용됩니다. 성능 저하와 비용 증가를 유발할 수 있으므로 이는 권장되지 않습니다.
기본 변환
특정 infoType에만 적용하든 전체 텍스트 문자열에 적용하든 관계없이 입력에 적용할 하나 이상의 기본 변환을 지정해야 합니다. 다음 섹션에서는 사용할 수 있는 변환 메서드의 예시를 설명합니다. Sensitive Data Protection에서 제공하는 모든 변환 메서드의 목록은 변환 참조를 확인하세요.
replaceConfig
replaceConfig를 ReplaceValueConfig 객체로 설정하면 일치하는 입력 값이 지정한 값으로 대체됩니다.
예를 들어 모든 EMAIL_ADDRESS infoType에 replaceConfig를 [email-address]로 지정했고 다음 문자열이 Sensitive Data Protection에 전송되었다고 가정해 보겠습니다.
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
다음과 같은 문자열이 반환됩니다.
My name is Alicia Abernathy, and my email address is [email-address].
여러 언어로 된 다음 JSON 예 및 코드는 API 요청을 작성하는 방법과 DLP API에서 반환하는 항목을 보여줍니다.
Python
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
JSON과 함께 DLP API를 사용하는 데 대한 자세한 내용은 JSON 빠른 시작을 참조하세요.
JSON 입력:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
JSON 출력:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is [email-address]."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
redactConfig
redactConfig를 지정하면 지정된 값을 완전히 삭제하는 방식으로 값이 수정됩니다. redactConfig 메시지는 인수가 없으며 지정하면 변환이 사용 설정됩니다.
예를 들어 모든 EMAIL_ADDRESS infoType에 redactConfig를 지정했고 다음 문자열이 Sensitive Data Protection으로 전송되었다고 가정해 보겠습니다.
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
다음과 같은 문자열이 반환됩니다.
My name is Alicia Abernathy, and my email address is .
다음 예시는 API 요청을 작성하는 방법과 DLP API가 반환하는 항목을 보여줍니다.
C#
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
JSON 입력:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"redactConfig":{
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
JSON 출력:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"redactConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
characterMaskConfig
characterMaskConfig를 CharacterMaskConfig 객체로 설정하면 지정된 수의 문자를 고정된 문자로 대체하는 방식으로 문자열이 마스킹됩니다. 마스킹은 문자열의 시작 또는 끝부터 시작할 수 있습니다. 이 변환은 long 정수와 같은 숫자 유형에서도 작동합니다.
CharacterMaskConfig 객체에는 여러 가지 자체 인수가 있습니다.
maskingCharacter: 민감한 값의 각 문자를 마스킹하는 데 사용되는 문자. 예를 들어 별표(*) 또는 해시(#)를 지정하여 신용카드 번호의 숫자와 같은 일련의 숫자를 마스킹할 수 있습니다.numberToMask: 마스킹할 문자 수. 이 값을 설정하지 않으면 모든 일치 문자가 마스킹됩니다.reverseOrder: 역순으로 문자를 마스킹할지 여부.reverseOrder를 true로 설정하면 일치하는 값의 문자가 값의 끝에서 시작 방향으로 마스킹됩니다. false로 설정하면 값의 시작 부분부터 마스킹이 시작됩니다.charactersToIgnore[]: 값을 마스킹할 때 건너뛸 하나 이상의 문자. 예를 들어 전화번호를 마스킹할 때 하이픈을 그대로 두려면 여기에 하이픈을 지정합니다. 또한 마스킹할 때 무시할 공통 문자 그룹(CharsToIgnore)을 지정할 수도 있습니다.
예를 들어 '.' 및 '@' 문자를 제외하고 EMAIL_ADDRESS infoType에 대해 '#'을 사용하여 마스킹하도록 characterMaskConfig를 설정했다고 가정해 보겠습니다. 다음 문자열이 Sensitive Data Protection으로 전송되는 경우
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
다음과 같은 문자열이 반환됩니다.
My name is Alicia Abernathy, and my email address is ##########@#######.###.
다음은 DLP API를 사용하여 마스킹 기술로 민감한 정보를 익명화하는 방법을 보여주는 예시입니다.
Java
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
다음 JSON 예는 API 요청을 작성하는 방법과 DLP API에서 반환하는 항목을 보여줍니다.
JSON 입력:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"reverseOrder":false,
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
JSON 출력:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ##########@#######.###."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
cryptoHashConfig
cryptoHashConfig를 CryptoHashConfig 객체로 설정하면 암호화 해시를 통해 서로게이트 값을 생성하는 방식으로 입력 값이 가명처리됩니다.
이 메서드는 암호화된 '다이제스트' 또는 해시 값으로 입력 값을 대체합니다.
다이제스트는 입력 값의 SHA-256 해시를 취해 계산됩니다.
해시를 만드는 데 사용되는 암호화 키는 CryptoKey 객체이며 크기는 32바이트 또는 64바이트여야 합니다.
메서드는 해시된 출력의 base64로 인코딩된 표현을 출력합니다. 현재 문자열과 정수 값만 해시가 가능합니다.
예를 들어 모든 EMAIL_ADDRESS infoType에 cryptoHashConfig를 지정했고 CryptoKey 객체가 무작위로 생성된 키 (TransientCryptoKey)로 구성되어 있다고 가정해 보겠습니다. 그러면 다음 문자열이 Sensitive Data Protection으로 전송됩니다.
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
암호화되어 생성되는 반환 문자열은 다음과 같습니다.
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
물론 16진수 문자열은 암호화되어 생성되며 여기 표시되는 것과는 다릅니다.
dateShiftConfig
dateShiftConfig를 DateShiftConfig 객체로 설정하면 무작위 일수만큼 날짜를 이동하는 방식으로 날짜 입력 값에 대한 날짜 이동이 수행됩니다.
날짜 이동 기법은 날짜 집합을 무작위로 이동하지만 순서와 기간은 보존합니다. 날짜 이동은 일반적으로 개인 또는 항목 컨텍스트에서 수행됩니다. 즉, 특정 개인의 모든 날짜를 동일한 교대 수당을 사용하여 이동하되, 각 개인에 별도의 교대 수당을 사용하고자 하는 경우입니다.
날짜 이동에 대한 자세한 내용은 날짜 이동 개념 주제를 참조하세요.
다음은 DLP API를 사용하여 날짜 이동으로 날짜를 익명화하는 방법을 보여주는 여러 언어로 된 샘플 코드입니다.
Java
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.