이 주제에서는 Sensitive Data Protection에서 사용 가능한 익명화 기술, 즉 변환을 다룹니다.
익명화 기술의 유형
익명화할 데이터 종류와 데이터를 익명화하려는 용도에 따라 선택하는 익명화 변환이 달라집니다. Sensitive Data Protection에서 지원하는 익명화 기술은 다음과 같은 일반적인 카테고리로 분류됩니다.
- 수정: 감지된 민감한 값의 전체 또는 일부를 삭제합니다.
- 대체: 감지된 민감한 값을 지정된 서로게이트 값으로 바꿉니다.
- 마스킹: 민감한 값의 문자 수를 해시(#) 또는 별표(*)와 같은 지정된 서로게이트 문자로 바꿉니다.
- 암호화 기반 토큰화: 암호화 키를 사용하여 원래의 민감한 정보 값을 암호화합니다. Sensitive Data Protection은 되돌리거나 '재식별화'될 수 있는 변환을 포함하여 여러 유형의 토큰화를 지원합니다.
- 버케팅: 민감한 값을 값의 범위로 바꿔 '일반화'합니다. 예를 들어 특정 연령을 연령대로 바꾸거나 온도를 'hot', 'medium', 'cold'에 해당하는 범위로 바꿉니다.
- 날짜 이동: 민감한 날짜 값을 무작위 시간만큼 이동합니다.
- 시간 추출: 날짜 및 시간 값의 지정된 부분을 추출하거나 보존합니다.
이 주제의 나머지 부분에서는 서로 다른 유형의 익명화 변환을 설명하고 사용 사례를 제공합니다.
변환 메서드
다음 표에는 민감한 정보 익명화를 위해 Sensitive Data Protection에서 제공하는 변환이 나와 있습니다.
변환 | 객체 | 설명 | 가역1 | 참조 무결성2 | 입력 유형 |
---|---|---|---|---|---|
수정 | RedactConfig |
값을 삭제하여 수정합니다. | 모두 | ||
대체 | ReplaceValueConfig |
각 입력 값을 주어진 값으로 대체합니다. | 모두 | ||
사전으로 바꾸기 | ReplaceDictionaryConfig
|
입력 값을 단어 목록에서 무작위로 선택한 값으로 바꿉니다. | 모두 | ||
infoType으로 대체 | ReplaceWithInfoTypeConfig |
해당 infoType의 이름으로 입력 값을 대체합니다. | 모두 | ||
문자로 마스킹 | CharacterMaskConfig |
지정된 수의 문자를 지정된 고정 문자로 대체함으로써 문자열 전체 또는 일부를 마스킹합니다. | 모두 | ||
입력 값을 암호화 해시로 대체하여 가명처리 | CryptoHashConfig |
주어진 데이터 암호화 키를 사용하여 생성된 32바이트 16진수 문자열로 입력 값을 대체합니다. 자세한 내용은 가명처리 개념 문서를 참조하세요. | ✔ | 문자열 또는 정수 | |
암호화 형식 보존 토큰으로 대체하여 가명처리 | CryptoReplaceFfxFpeConfig |
FFX 작업 모드로 형식 보존 암호화(FPE)를 사용하여 같은 길이의 토큰 또는 서로게이트 값으로 입력 값을 대체합니다. 따라서 길이에 대한 형식 유효성 검사가 있는 시스템에서 출력을 사용할 수 있으며, 문자열 길이를 그대로 유지해야 하는 이전 시스템에 유용합니다.
중요: 입력 문자열 길이가 다양하거나 32바이트보다 긴 경우 CryptoDeterministicConfig 를 사용하세요.
보안을 유지하기 위해 미국 국립 표준 기술 연구소(National Institute of Standard and Technology)의 권고에 따라 다음 한도를 적용합니다.
|
✔ | ✔ | 제한된 수의 문자를 포함하고 길이가 일정한 문자열 또는 정수. 알파벳은 최소 2자 이상이어야 하며 95자를 넘지 않아야 합니다. |
암호화 토큰으로 대체하여 가명처리 | CryptoDeterministicConfig |
합성 초기화 벡터 모드의 AES(AES-SIV)를 사용하여 같은 길이의 토큰 또는 서로게이트 값으로 입력 값을 대체합니다. 이 변환 메서드는 형식 보존 토큰화와는 달리 지원되는 문자열의 문자 집합에 제한이 없고, 입력 값이 동일한 각 인스턴스에 대해 동일한 토큰을 생성하며, 서로게이트를 사용하여 원래의 암호화 키를 바탕으로 재식별화가 가능하게 합니다. | ✔ | ✔ | 모두 |
고정된 크기 범위 기반의 버킷 값 | FixedSizeBucketingConfig |
입력 값을 버킷 또는 입력 값이 속한 범위로 대체하여 마스킹합니다. | 모두 | ||
커스텀 크기 범위 기반의 버킷 값 | BucketingConfig |
사용자 구성이 가능한 범위 기반의 버킷 입력 값과 대체 값 | 모두 | ||
날짜 이동 | DateShiftConfig |
동일한 컨텍스트에 대해 일관적인 옵션으로 무작위 일수만큼 날짜를 이동합니다. | ✔ 시퀀스 및 기간 보존 |
날짜/시간 | |
시간 데이터 추출 | TimePartConfig |
Date , Timestamp , TimeOfDay 값의 일부 영역을 추출 또는 보존합니다. |
날짜/시간 |
각주
content.reidentify
메서드를 사용하여 민감한 정보를 재식별화할 수 있습니다.
수정
입력 콘텐츠에서 민감한 정보만 간단히 삭제하려는 경우, Sensitive Data Protection에서 수정 변환(DLP API의 RedactConfig
)을 지원합니다.
예를 들어 모든 EMAIL_ADDRESS
infoType을 간단히 수정하려는 경우 다음 문자열이 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 .
여러 언어로 된 다음 JSON 예 및 코드는 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과 함께 DLP API를 사용하는 데 대한 자세한 내용은 JSON 빠른 시작을 참조하세요.
HTTP 메서드 및 URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
JSON 입력
{
"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"
}
]
}
}
대체
대체 변환은 각 입력 값을 지정된 토큰 값 또는 해당 infoType의 이름으로 바꿉니다.
기본 대체
기본 대체 변환(DLP API의 ReplaceValueConfig
)은 감지된 민감한 정보 값을 지정된 값으로 바꿉니다. 예를 들어 Sensitive Data Protection에 '[fake@example.com]'을 사용하여 모든 감지된 EMAIL_ADDRESS
infoType을 수정하도록 지시했다고 가정해봅시다. 그러면 다음 문자열이 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 [fake@example.com].
여러 언어로 된 다음 JSON 예 및 코드는 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과 함께 DLP API를 사용하는 데 대한 자세한 내용은 JSON 빠른 시작을 참조하세요.
HTTP 메서드 및 URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
JSON 입력
{
"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"
}
]
}
}
사전 대체
사전 대체(ReplaceDictionaryConfig
)는 감지된 민감한 정보의 각 부분을 Sensitive Data Protection에서 제공된 단어 목록에서 무작위로 선택한 값으로 바꿉니다.
이 변환 방법은 실제와 같은 대리 값을 사용하려는 경우에 유용합니다.
Sensitive Data Protection에서 이메일 주소를 감지하고 각 감지된 값을 3개의 대리 이메일 주소 중 하나로 바꾸도록 한다고 가정해보세요.
대리 이메일 주소 목록과 함께 다음 입력 문자열을 Sensitive Data Protection에 전송합니다.
입력 문자열
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
단어 목록
- izumi@example.com
- alex@example.com
- tal@example.com
반환된 문자열은 다음 중 하나일 수 있습니다.
My name is Alicia Abernathy, and my email address is izumi@example.com.
My name is Alicia Abernathy, and my email address is alex@example.com.
My name is Alicia Abernathy, and my email address is tal@example.com.
다음 JSON 예는 API 요청을 작성하는 방법과 DLP API에서 반환하는 항목을 보여줍니다.
JSON과 함께 DLP API를 사용하는 데 대한 자세한 내용은 JSON 빠른 시작을 참조하세요.
HTTP 메서드 및 URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
JSON 입력
{
"item": {
"value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig": {
"infoTypeTransformations": {
"transformations": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"primitiveTransformation": {
"replaceDictionaryConfig": {
"wordList": {
"words": [
"izumi@example.com",
"alex@example.com",
"tal@example.com"
]
}
}
}
}
]
}
},
"inspectConfig": {
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
]
}
}
JSON 출력
{
"item": {
"value": "My name is Alicia Abernathy, and my email address is izumi@example.com."
},
"overview": {
"transformedBytes": "22",
"transformationSummaries": [
{
"infoType": {
"name": "EMAIL_ADDRESS"
},
"transformation": {
"replaceDictionaryConfig": {
"wordList": {
"words": [
"izumi@example.com",
"alex@example.com",
"tal@example.com"
]
}
}
},
"results": [
{
"count": "1",
"code": "SUCCESS"
}
],
"transformedBytes": "22"
}
]
}
}
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
InfoType 대체
infoType 대체(DLP API의 ReplaceWithInfoTypeConfig
)를 지정할 수도 있습니다. 이 변환은 기본 대체 변환과 동일한 작업을 수행하지만, 각각의 감지된 민감한 정보 값을 감지된 값의 infoType으로 바꿉니다.
예를 들어 Sensitive Data Protection에 이메일 주소와 성을 감지한 후 각각의 감지된 값을 해당 값의 infoType으로 대체하도록 지시했다고 가정해보겠습니다. Sensitive Data Protection에 다음 문자열을 보냅니다.
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
다음과 같은 문자열이 반환됩니다.
My name is Alicia LAST_NAME, and my email address is EMAIL_ADDRESS.
마스킹
각 문자를 별표 (*) 또는 해시 (#)와 같은 고정된 단일 마스킹 문자로 대체하여 Sensitive Data Protection에서 감지된 민감한 값(DLP API의 CharacterMaskConfig
)을 전부 또는 부분적으로 마스킹하도록 구성할 수 있습니다. 마스킹은 문자열의 시작 또는 끝부터 시작할 수 있습니다. 이 변환은 long 정수와 같은 숫자 유형에서도 작동합니다.
Sensitive Data Protection 마스킹 방식에는 다음과 같은 옵션이 있습니다.
- 마스킹 문자(DLP API의
maskingCharacter
인수): 민감한 값의 각 문자를 마스킹하는 데 사용하는 문자입니다. 예를 들어 신용카드 번호와 같은 일련의 숫자를 마스킹하는 데 별표(*) 또는 달러 기호($)를 지정할 수 있습니다. - 마스킹할 문자 수(
numberToMask
): 이 값을 지정하지 않으면 모든 문자가 마스킹됩니다 - 역순 적용 여부(
reverseOrder
): 역순으로 문자를 마스킹할지 여부입니다. 순서를 반대로 하면 일치하는 값의 문자가 값의 끝에서 시작 방향으로 마스킹됩니다. - 무시할 문자(
charactersToIgnore
): 마스킹할 때 건너뛸 하나 이상의 문자입니다. 예를 들어 전화번호를 마스킹할 때 Sensitive Data Protection에 하이픈을 그대로 두도록 지시할 수 있습니다. 또한 마스킹할 때 무시할 공통 문자 그룹(CharsToIgnore
)을 지정할 수도 있습니다.
다음 문자열을 Sensitive Data Protection에 전송하고 이메일 주소에 문자 마스킹 변환을 사용하도록 지시했다고 가정해보겠습니다.
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
마스킹 문자를 '#'로 지정하고 무시할 문자를 공통 문자 집합으로 설정하였으며 그 외의 경우 기본 설정이면 Sensitive Data Protection은 다음을 반환합니다.
My name is Alicia Abernathy, and my email address is ##########@#######.###.
다음 JSON 및 코드 예시는 마스킹 변환의 작동 방식을 보여줍니다.
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과 함께 DLP API를 사용하는 데 대한 자세한 내용은 JSON 빠른 시작을 참조하세요.
HTTP 메서드 및 URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
JSON 입력
{
"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"
}
]
}
}
암호화 기반 토큰화 변환
암호화 기반 토큰화('가명처리'라고도 함) 변환은 원래의 민감한 정보 값을 암호화된 값으로 바꾸는 익명화 방법입니다. Sensitive Data Protection은 되돌릴 수 있는 변환을 포함하여 다음과 같은 유형의 토큰화를 지원하고 재식별화를 허용합니다.
- 암호화 해싱:
CryptoKey
가 지정된 경우 Sensitive Data Protection은 SHA-256 기반 메시지 인증 코드(HMAC-SHA-256)을 입력한 후 입력 값을 base64로 인코딩된 해시 값으로 바꿉니다. 다른 유형의 암호화 기반 변환과 달리 이 유형의 변환을 되돌릴 수 없습니다. - 형식 보존 암호화: FFX 작업 모드로 형식 보존 암호화(FPE)를 사용하여 생성된 토큰으로 입력 값을 대체합니다. 이 변환 메서드는 입력 값과 동일한 알파벳을 사용하고 길이가 같은 토큰을 생성합니다. FPE는 원래의 암호화 키를 바탕으로 한 재식별화도 지원합니다.
- 확정적 암호화: 합성 초기화 벡터 모드의 AES(AES-SIV)를 사용하여 생성된 토큰으로 입력 값을 대체합니다. 이 변환 메서드는 지원되는 문자열의 문자 집합에 제한이 없고, 입력 값이 동일한 각 인스턴스에 대해 동일한 토큰을 생성하며, 서로게이트를 사용하여 원래의 암호화 키를 바탕으로 재식별화가 가능하게 합니다.
암호화 해싱
암호화 해싱 변환(DLP API의 CryptoHashConfig
)은 입력 값(Sensitive Data Protection이 감지한 민감한 정보)을 해시 값으로 바꿉니다. 해시 값은 CryptoKey
가 지정된 입력 값에 SHA-256 기반 메시지 인증 코드(HMAC-SHA-256)를 사용하여 생성됩니다.
Sensitive Data Protection은 해시된 입력 값의 원래 값을 대신하는 base64로 인코딩된 표현을 출력합니다.
암호화 해싱 변환을 사용할 때는 다음 사항을 고려하세요.
- 입력 값은 암호화되지 않고 해시 처리됩니다.
- 이 변환은 되돌릴 수 없습니다. 즉, 변환의 해시 출력 값과 원래 암호화 키를 바탕으로 원래 값을 복원할 방법이 없습니다.
- 현재 문자열과 정수 값만 해시 처리할 수 있습니다.
- 변환의 해시 출력은 암호화 키의 크기를 기준으로 항상 동일합니다. 예를 들어 10자리 전화번호에 암호화 해싱 변환을 사용하는 경우 각 전화번호는 base64로 인코딩된 고정 길이 해시 값으로 대체됩니다.
형식 보존 암호화
형식 보존 암호화(FPE) 변환 메서드(DLP API의 CryptoReplaceFfxFpeConfig
)는 입력 값(Sensitive Data Protection이 감지한 민감한 정보)을 FFX 모드의 형식 보존 암호화와 CryptoKey
를 사용하여 암호화한 다음 원래 값을 암호화된 값 또는 토큰으로 바꿉니다.
입력 값의 특성은 다음과 같습니다.
- 최소 2자여야 합니다(또는 빈 문자열).
- ASCII로 인코딩되어야 합니다.
- 알파벳(입력 값에 허용되는 2~95자의 문자 집합)으로 지정된 문자로 구성되어야 합니다. 자세한 내용은
CryptoReplaceFfxFpeConfig
의 알파벳 필드를 참조하세요.
생성된 토큰의 특성은 다음과 같습니다.
- 암호화된 입력 값입니다.
- 암호화 후 입력 값의 문자 집합('알파벳')과 길이를 보존합니다.
- 지정된 암호화 키를 사용하는 형식 보존 암호화(FPE)를 FFX 모드에서 사용하여 계산됩니다.
- 입력 값이 동일한 각 인스턴스는 동일한 토큰으로 익명화되기 때문에 반드시 고유하지는 않습니다. 따라서 참조 무결성을 사용 설정할 수 있으므로 익명화된 데이터를 보다 효율적으로 검색할 수 있습니다. 컨텍스트에 설명된 대로 컨텍스트를 일부 '조정'하여 이 동작을 변경할 수 있습니다.
소스 콘텐츠에 입력 값의 인스턴스가 여러 개 있으면 각 인스턴스는 동일한 토큰으로 익명화됩니다. FPE는 길이와 알파벳 공간(문자 집합)을 모두 보존하며, 길이는 95자로 제한됩니다. 컨텍스트를 일부 '조정'하여 이 동작을 변경하면 보안을 개선할 수 있습니다. 변환에 컨텍스트 조정을 추가하면 Sensitive Data Protection에서 동일한 입력 값의 여러 인스턴스를 다른 토큰으로 익명화할 수 있습니다. 원래 값의 길이와 알파벳 공간을 보존하지 않아도 되는 경우 아래에 설명 된 확정적 암호화를 사용하세요.
Sensitive Data Protection은 암호화 키를 사용하여 대체 토큰을 계산합니다. 이 키는 다음 세 가지 방법 중 하나로 제공합니다.
- API 요청에 암호화되지 않은 상태로 삽입 이는 권장되지 않습니다.
- Sensitive Data Protection을 생성하도록 요청
- API 요청에 암호화된 상태로 삽입
API 요청에 키를 삽입하도록 선택한 경우 키를 만들고 Cloud Key Management Service(Cloud KMS) 키를 사용하여 래핑(암호화)해야 합니다. 자세한 내용은 래핑된 키 만들기를 참조하세요. 반환된 값은 기본적으로 Base64 인코딩 문자열입니다. Sensitive Data Protection에서 이 값을 설정하려면 바이트 문자열로 디코딩해야 합니다. 다음 코드 스니펫은 여러 언어로 이 작업을 수행하는 방법을 보여줍니다. 엔드 투 엔드 예시는 이러한 스니펫 뒤에 제공됩니다.
Java
KmsWrappedCryptoKey.newBuilder()
.setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedKey)))
Python
# The wrapped key is base64-encoded, but the library expects a binary
# string, so decode it here.
import base64
wrapped_key = base64.b64decode(wrapped_key)
PHP
// Create the wrapped crypto key configuration object
$kmsWrappedCryptoKey = (new KmsWrappedCryptoKey())
->setWrappedKey(base64_decode($wrappedKey))
->setCryptoKeyName($keyName);
C#
WrappedKey = ByteString.FromBase64(wrappedKey)
Cloud KMS를 사용한 데이터 암호화 및 복호화에 대한 자세한 내용은 데이터 암호화 및 복호화를 참조하세요.
형식 보존 암호화 예시: 익명화
이 예에서는 CryptoReplaceFfxFpeConfig
변환 메서드를 사용하여 민감한 정보를 익명화합니다. 자세한 내용은 이 페이지의 형식 보존 암호화를 참고하세요.
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
형식 보존 암호화 예시: 대체 유형을 사용한 익명화
이 예에서는 CryptoReplaceFfxFpeConfig
변환 메서드를 사용하여 민감한 정보를 익명화합니다. 자세한 내용은 이 페이지의 형식 보존 암호화를 참고하세요.
Go
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
형식 보존 암호화 예: 테이블의 민감한 정보 익명화
이 예에서는 CryptoReplaceFfxFpeConfig
변환 메서드를 사용하여 테이블의 민감한 정보를 익명화합니다. 자세한 내용은 이 페이지의 형식 보존 암호화를 참고하세요.
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
형식 보존 암호화 예: 재식별
다음은 Sensitive Data Protection을 사용하여 CryptoReplaceFfxFpeConfig
변환 메서드를 통해 익명화된 민감한 정보를 재식별하는 방법을 보여주는 여러 언어로 된 샘플 코드입니다. 자세한 내용은 이 페이지의 형식 보존 암호화를 참고하세요.
Go
Sensitive Data Protection의 클라이언트 라이브러리를 설치하고 사용하는 방법은 Sensitive Data Protection 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
민감한 정보 보호의 클라이언트 라이브러리를 설치하고 사용하는 방법은 민감한 정보 보호 클라이언트 라이브러리를 참조하세요.
Sensitive Data Protection에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
형식 보존 암호화 예시: 텍스트 재식별
다음은 Sensitive Data Protection을 사용하여 CryptoReplaceFfxFpeConfig
변환 메서드를 통해 익명화된 민감한 텍스트를 재식별하는 방법을 보여주는 여러 언어로 된 샘플 코드입니다. 자세한 내용은 이 페이지의 형식 보존 암호화를 참고하세요.
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
형식 보존 암호화 예: 대리 유형으로 재식별
다음은 Sensitive Data Protection을 사용하여 CryptoReplaceFfxFpeConfig
변환 메서드를 통해 익명화된 민감한 정보를 재식별하는 방법을 보여주는 여러 언어로 된 샘플 코드입니다. 자세한 내용은 이 페이지의 형식 보존 암호화를 참고하세요.
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
형식 보존 암호화 예시: 테이블의 민감한 정보 재식별
다음은 Sensitive Data Protection을 사용하여 CryptoReplaceFfxFpeConfig
변환 메서드를 통해 익명화된 테이블에서 민감한 정보를 재식별하는 방법을 보여주는 여러 언어로 된 샘플 코드입니다. 자세한 내용은 이 페이지의 형식 보존 암호화를 참고하세요.
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
확정적 암호화
확정적 암호화 변환 메서드(DLP API의 CryptoDeterministicConfig
)는 입력 값(Sensitive Data Protection이 감지한 민감한 정보)을 CryptoKey
와 함께 AES-SIV를 사용하여 암호화한 다음 원래 값을 암호화된 값의 base64 인코딩된 표현으로 바꿉니다.
확정적 암호화 변환을 사용하면 암호화된 데이터를 보다 효율적으로 검색할 수 있습니다.
입력 값의 특성은 다음과 같습니다.
- 길이는 1자 이상이어야 합니다.
- 문자 집합 제한이 없습니다.
생성된 토큰의 특성은 다음과 같습니다.
- 암호화된 값을 base64로 인코딩한 표현입니다.
- 암호화 후 입력 값의 문자 집합('알파벳') 또는 길이가 보존되지 않습니다.
CryptoKey
와 함께 SIV 모드의 AES 암호화를 사용하여 계산됩니다.- 입력 값이 동일한 각 인스턴스는 동일한 토큰으로 익명화되기 때문에 반드시 고유하지는 않습니다. 따라서 암호화된 데이터를 보다 효율적으로 검색할 수 있습니다. 컨텍스트에 설명된 대로 컨텍스트를 일부 '조정'하여 이 동작을 변경할 수 있습니다.
[SURROGATE_TYPE]([LENGTH]):
형식의 프리픽스가 추가된 형태로 생성됩니다. 여기서[SURROGATE_TYPE]
은 입력 값을 설명하는 서로게이트 infoType을,[LENGTH]
는 문자 길이를 나타냅니다. 서로게이트를 사용하면 익명화에 사용된 원래 암호화 키를 사용하여 토큰을 재식별화할 수 있습니다.
다음은 확정적 암호화를 사용하여 익명화하는 JSON 구성의 예시입니다. 전화번호를 익명화하는 중이므로 'PHONE_SURROGATE'를 설명이 포함된 서로게이트 유형으로 사용하도록 선택했습니다.
[CRYPTO_KEY]
는 Cloud KMS에서 가져온 래핑되지 않은 암호화 키를 나타냅니다.
{
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
],
"primitiveTransformation":{
"cryptoDeterministicConfig":{
"cryptoKey":{
"unwrapped":{
"key":"[CRYPTO_KEY]"
}
},
"surrogateInfoType":{
"name":"PHONE_SURROGATE"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
]
},
"item":{
"value":"My phone number is 206-555-0574, call me"
}
}
이 변환을 사용하여 'My phone number is 206-555-0574' 문자열을 익명화하면 다음과 같은 익명화된 문자열이 생성됩니다.
My phone number is PHONE_SURROGATE(36):ATZBu5OCCSwo+e94xSYnKYljk1OQpkW7qhzx, call me
이 문자열을 재식별화하려면 다음과 같은 JSON 요청을 사용할 수 있습니다. 여기서 [CREPTO_KEY]는 콘텐츠를 익명화하는 데 사용되는 것과 동일한 암호화 키입니다.
{
"reidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"PHONE_SURROGATE"
}
],
"primitiveTransformation":{
"cryptoDeterministicConfig":{
"cryptoKey":{
"unwrapped":{
"key":"[CRYPTO_KEY]"
}
},
"surrogateInfoType":{
"name":"PHONE_SURROGATE"
}
}
}
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"PHONE_SURROGATE"
},
"surrogateType":{
}
}
]
},
"item":{
"value":"My phone number is [PHONE_SURROGATE](36):ATZBu5OCCSwo+e94xSYnKYljk1OQpkW7qhzx, call me"
}
}
이 문자열을 재식별화하면 원래 문자열이 결과로 생성됩니다.
My phone number is 206-555-0574, call me
보안 강화를 위해 래핑된(암호화된) CryptoKey
를 대신 사용하려면 빠른 시작: 민감한 텍스트 익명화 및 재식별을 참조하세요. 클라이언트 라이브러리를 사용하여 콘텐츠를 익명화할 준비가 되면 이 페이지에 설명된 형식 보존 암호화를 참조해 래핑된 키(기본적으로 base64 인코딩 문자열)를 디코딩해야 합니다.
확정적 암호화 예: 익명화
이 예에서는 CryptoDeterministicConfig
변환 메서드를 사용하여 민감한 정보를 익명화합니다. 자세한 내용은 이 페이지의 결정론적 암호화를 참고하세요.
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
확정적 암호화 예: 재식별
이 예에서는 CryptoDeterministicConfig
변환 메서드를 통해 익명화된 민감한 정보를 재식별하는 방법을 보여줍니다. 자세한 내용은 이 페이지의 결정론적 암호화를 참고하세요.
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
버케팅
버케팅 변환은 숫자 데이터를 범위로 '버케팅'하여 익명화합니다. 결과 숫자 범위는 하한, 하이픈, 상한으로 구성되어 하이픈으로 연결된 문자열입니다.
고정 크기 버케팅
Sensitive Data Protection은 고정된 크기 범위(DLP API의 FixedSizeBucketingConfig
)를 기준으로 숫자 입력 값을 버케팅할 수 있습니다. 고정 크기 버케팅을 구성하려면 다음을 지정하세요.
- 모든 버킷의 하한 값. 이 값보다 작은 값은 하나의 버킷으로 그룹화됩니다.
- 모든 버킷의 상한 값. 이 값보다 큰 값은 하나의 버킷으로 그룹화됩니다
- 최소 및 최대 버킷을 제외한 각 버킷의 크기.
예를 들어 하한 값이 10으로 설정되고 상한 값이 89로 설정되고 버킷 크기가 10으로 설정되는 경우 사용되는 버킷은 -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+입니다.
버케팅 개념에 대한 자세한 내용은 일반화 및 버케팅을 참조하세요.
맞춤설정 가능한 버케팅
맞춤설정 가능한 버케팅(DLP API의 BucketingConfig
)은 고정 크기 버 케팅에 비해 더 유연합니다.
상한 및 하한과 동일한 크기의 버킷을 만들기 위한 간격 값을 지정하는 대신 만들려는 각 버킷의 최댓값 및 최솟값을 지정합니다. 각 최댓값 및 최솟값 쌍의 유형은 동일해야 합니다.
개별 버킷을 지정하여 맞춤설정 가능한 버케팅을 설정합니다. 다음과 같은 속성으로 각 버킷을 설정합니다.
- 버킷 범위의 하한. 하한이 없는 버킷을 만들려면 이 값을 생략합니다.
- 버킷 범위의 상한. 상한이 없는 버킷을 만들려면 이 값을 생략합니다.
- 이 버킷 범위의 대체 값. 이 값은 하한 및 상한 내에 속하는 모든 값지된 값을 대체할 값입니다. 대체 값을 지정하지 않으면 하이픈으로 연결된 최솟값과 최댓값 쌍의 범위가 대신 생성됩니다.
예를 들어 이 버킷 변환에 다음 JSON 구성을 고려해보세요.
"bucketingConfig":{
"buckets":[
{
"min":{
"integerValue":"1"
},
"max":{
"integerValue":"30"
},
"replacementValue":{
"stringValue":"LOW"
}
},
{
"min":{
"integerValue":"31"
},
"max":{
"integerValue":"65"
},
"replacementValue":{
"stringValue":"MEDIUM"
}
},
{
"min":{
"integerValue":"66"
},
"max":{
"integerValue":"100"
},
"replacementValue":{
"stringValue":"HIGH"
}
}
]
}
이는 다음 동작을 정의합니다.
- 1에서 30 사이에 속하는 정수 값은
LOW
로 대체되어 마스킹됩니다. - 31에서 65 사이에 속하는 정수 값은
MEDIUM
으로 대체되어 마스킹됩니다. - 66에서 100 사이에 속하는 정수 값은
HIGH
로 대체되어 마스킹됩니다.
버케팅 개념에 대한 자세한 내용은 일반화 및 버케팅을 참조하세요.
날짜 이동
날짜 입력 값에 날짜 이동 변환(DLP API의 DateShiftConfig
)을 사용하면 Sensitive Data Protection에서 날짜를 무작위 일수만큼 이동합니다.
날짜 이동 기법은 날짜 집합을 무작위로 이동하지만 순서와 기간은 보존합니다. 날짜 이동은 일반적으로 개인 또는 항목 컨텍스트에서 수행됩니다. 즉, 특정 개인의 모든 날짜를 동일한 교대 수당을 사용하여 이동하되, 각 개인에 별도의 교대 수당을 사용하고자 하는 경우입니다.
날짜 이동에 대한 자세한 내용은 날짜 이동을 참조하세요.
다음은 Cloud 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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
시간 추출
시간 추출(DLP API의 TimePartConfig
) 객체를 설정하면 날짜, 시간 또는 타임스탬프에 일치 값의 일부를 보존합니다. TimePart
객체에 열거되는 연도, 월, 월 등을 비롯하여 추출할 시간 값 종류를 Sensitive Data Protection에 지정하세요.
예를 들어 추출할 시간 부분을 YEAR
로 설정하여 timePartConfig
변환을 구성했다고 가정해보겠습니다. 아래의 첫 번째 열 데이터를 Sensitive Data Protection으로 보내면 두 번째 열의 변환된 값이 됩니다.
원래 값 | 변환된 값 |
---|---|
9/21/1976 |
1976 |
6/7/1945 |
1945 |
1/20/2009 |
2009 |
7/4/1776 |
1776 |
8/1/1984 |
1984 |
4/21/1982 |
1982 |
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.