Cloud DLP와 Dataflow를 사용한 데이터 마스킹

김민형·2022년 9월 21일
0

GCP - Data

목록 보기
32/43

아키텍처

Cloud DLP

Cloud DLP는 민감한 정보가 포함된 것으로 의심되는 모든 데이터에 대해 검사 및 익명화를 제공하는 Google Cloud 도구

Cloud DLP는 InfoType을 사용하여 문서 내에서 발견될 수 있는 민감한 데이터를 인식한다. InfoType은 특정 유형의 데이터 형식과 일치하는 특성 집합으로 예를 들어 여권 ID 번호일 가능성이 가장 높은 데이터를 인식하는 InfoType,이메일 주소를 찾아내는 InfoType 등 무수히 많은 유형이 있다.

우린 DLP를 사용해 인도네시아의 단일 신분증 번호(NIK)가 포함된 데이터를 검사할 것이고, 아래 링크의 데이터를 쓸 것이다.

NIK에는 317508로 시작하는 16자리 숫자가 포함되어 있으며 그 뒤에 사람의 생년월일-월-연도 및 지역 코드가 있다.

git clone https://github.com/ardhnyg/medium_post_week4_may.git

해당 링크에는 유효한 번호들이 있는 csv파일, 유효하지 않은 번호가 있는 csv파일, 두개가 섞인 csv파일 이렇게 총 3개의 파일이 있다.

Cloud Storage 버킷을 하나 생성해주고 해당 파일들을 업로드 해준다.

DLP에서 데이터를 검사하고 익명화를 하려면 토큰화(Tokenization)를 해야한다.

Tokenization

KMS에서 키링을 만들어준다.

하지만 이 키로는 사용할 수 없다. 왜냐하면 해당 키는 래퍼 키이다.
내 키를 생성해주고 해당 KMS 키를 통해 래핑해줘야 쓸 수 있는 것이다.

# AES 256 키 생성
openssl rand -out "./aes_key.bin" 32

# base64로 인코딩
base64 -i ./aes_key.bin

base64 문자가 포함된 임의의 문자열이 출력될 것이다.

KMS 키를 통해 base64 키 래핑

curl "https://cloudkms.googleapis.com/v1/projects/gsn-haalsgud97-prj/locations/global/keyRings/<키링 이름>/cryptoKeys/< 이름>:encrypt" --request "POST" --header "Authorization:Bearer $(gcloud auth application-default print-access-token)" --header "content-type: application/json" --data "{\"plaintext\": \"<위에서 출력된 문자열>\"}"

명령어를 실행하면 아래와 같이 KMS로 래핑한 내 키에 대한 정보가 나온다.

비식별화 템플릿을 생성할 때 쓸 것이므로 창은 닫지 않을 것이다.

템플릿 생성

두 가지의 템플릿을 만들 것이다.

1. 검사 템플릿(inspect)
검사 템플릿은 InfoType을 통해 샘플 내의 민감한 정보를 찾아낸다.

2. 비식별화 템플릿(de-identify)
민감한 정보가 데이터를 변환할 수 없도록 데이터를 변환하는 방법을 선택하여 데이터를 처리해준다.

검사 템플릿


신뢰도 기준은 데이터가 이 InfoType과 일치할 가능성을 선택하는 것이다.
가능성 매우 높음까지 있는데 가능성 있음으로 체크를 해줬다.

비식별화 템플릿

  • 암호화 키 리소스 이름
    위에서 KMS로 래핑해준 키의 name 부분을 넣으면 된다.(뒤에 /cryptoKeyVersion/~ 부분은 제외하고 키 이름까지만 넣어준다.)

  • 래핑된 키
    래핑해준 키의 ciphertext를 넣어준다.

  • Surrogate
    토큰화된 데이터의 시작 문자열에 나타낼 문자를 입력한다.
    NIK로 지정하게 되면 토큰화되어 변환된 데이터에서 NIK로 시작하는 데이터를 통해 이 데이터가 비식별화 됐다는 것을 알 수 있는 것이다.

  • InfoType
    INDONESIA_NIK_NUMBER 지정

템플릿 확인

Dataflow 작업 만들기

먼저 데이터 세트를 하나 생성해준다.

  • Dataflow 작업 만들기

    템플릿은 데이터 마스킹 템플릿을 선택해준다.

  • 필수 매개변수 설정(DLP 비식별화 템플릿 적용)

  • 선택적 매개변수 설정(DLP 검사 템플릿 적용)

그리고 Dataflow 작업이 실행되고 5분 정도 기다리면 만들어준 빅쿼리 테이블에 Cloud Storage에 넣어준 csv파일 3개에 해당되는 테이블이 생성될 것이다.

valid_sample

invalid_sample

mixed_sample

결과에서 볼 수 있다시피 유효한 인도네시아의 신분증 번호 형식을 따른 데이터는 Surrogate에 의해 NIK 문자가 표시되고 뒤에 번호는 토큰화되어 마스킹 된 것을 확인할 수 있었다.

[Cloud DLP와 Dataflow를 사용한 데이터 마스킹 참고]
https://medium.com/@ardhanyoga/data-masking-with-tokenization-using-google-cloud-dlp-and-google-cloud-dataflow-8bba3cc76ef6

profile
Solutions Architect (rlaalsgud97@gmail.com)

0개의 댓글