Data Loss Prevention API 사용하기
최유석
DLP
구글 클라우드에서도 DLP기술(또는 기능)을 “Data Loss Prevention API”(이하 DLP API)라는 이름으로 제공하고 있으며 텍스트 또는 이미지 에서 Sensitive(민감)한 정보(전화번호, 주민등록번호, 여권, 신용카드, 이메일, 등)가 있는 부분을 자동으로 검사하고 수정하는 기능을 API형태로 제공한다. 기존의 DLP솔루션에 비해서 기능적인 부분은 제한될 수 있지만, Pay As You Go모델로 사용한 만큼에 대해서만 지불하는 가격정책으로 합리적인 비용으로 사용할 수 있고 REST API로 제공되어 GCP 뿐만 아니라 웹, 모바일, IoT기기에서도 쉽게 적용할 수 있다.
*한국 기준으로 지원되는 데이터는 여권과 주민등록번호 2가지이다. 그러나 신용카드 정보, IP주소, MAC 주소, 전화번호 등은 국제적인 형식으로 글로벌 형태로 지원되기 때문에 적용 가능한 데이터는 더욱 많다고 볼 수 있을 것이다.
Sensitive Data의 분류 및 수정
DLP API는 40개 이상의 사전 정의된 감지기(Detectors)를 사용하여 패턴, 형식, 체크섬을 식별하여 자동으로 개인정보가 포함된 Sensitive(민감한) 데이터를 텍스트와 이미지에서 자동으로 분류하고 수정하는 기능을 제공한다. 수정된 텍스트 또는 이미지를 생성하는 기능을 제공하고 사용자가 원하는 수치의 가능도(Likelihood Scores)의 임계값을 지정하여 분류된 개인정보 데이터로 발생할 수 있는 문제를 감소할 수 있다.
데이터 이동 최소화
데이터가 저장된 위치를 지정하여 DLP API를 실행할 수 있기 때문에, 데이터에 대한 수집, 노출, 복사의 작업이 별도로 필요하지 않기 때문에 데이터의 이동을 최소화할 수 있고 데이터 기록, 로그 생성, 데이터 분석 작업, 등을 하기 전에 텍스트의 스트림에서 자동으로 민감한 개인정보 데이터를 분류하고 수정할 수 있다.
또한, DLP API를 이용하면 데이터의 이동을 최소화 할 수 있기 때문에, 기업에서도 추가적인 위험없이 클라우드 데이터에 대한 관리, 분석을 할 수 있다.
GCP와 Integration
Google Cloud Storage의 텍스트/이미지, Datastore의 데이터 셋에 대해서 스캔을 지원하여 민감한 개인정보 데이터의 구성을 손쉽게 파악하여 관리를 용이하게 하고 접근 정책을 설정하는데 도움을 줄 수 있다. 또한 GCP 내부에서 외부로 데이터를 전송하지 않아도 되기 때문에 속도, 보안, 비용 적인 측면에서 이점을 얻을 수 있다.
DLP API 사용하기
지금까지 DLP 에 대한 대략적인 개념과 구글 클라우드에서 제공하는 DLP API를 사용하면 얻을 수 있는 이점에 대해서 알아보았다. 이제 텍스트 (스트림 또는 파일)와 이미지 파일에 DLP API를 사용하는 방법에 대해서 간단한 테스트를 통해서 알아보도록 하자.
사전준비
프로젝트가 준비되고 해당 프로젝트의 과금 설정이 되어 있다고 가정한다. 또한, DLP API의 Node.js 샘플코드를 사용할 예정이기 때문에 Node.js와 NPM은 설치되어 있는 상태라고 가정한다. 본 글에서는 구글 클라우드의 리소스 관리 도구 및 Node.js와 NPM을 포함해서 각종 런타임과 툴이 사전 제공되는 웹 브라우저 CLI도구인 Google Cloud Shell(https://cloud.google.com/shell/)을 사용하여 테스트를 진행하겠다.
DLP API활성화
다음의 링크로 이동해서 DLP API를 사용할 프로젝트를 선택하고 활성화를 진행한다.
https://console.cloud.google.com/flows/enableapi?apiid=dlp.googleapis.com
Service account와 Key 생성 – Cloud Shell을 제외한 다른 환경에서 진행
DLP API를 사용하기 위해서 Service account와 해당 Service account에 대한JSON형식의 암호화 Key 파일을 생성하기 위해 다음 링크로 이동하여 DLP API를 활성화한 프로젝트를 선택한다.
https://console.cloud.google.com/iam-admin/serviceaccounts/serviceaccounts-zero
상단의 [CREATE SERVICE ACCOUNT]버튼을 클릭하여 생성할 Service account name을 입력하고 JSON 형식의 Key파일생성을 위해서 Furnish a new private key] 부분에 체크하고 확장된 메뉴에서 Key type을 JSON으로 체크한다. 또한, 테스트 진행의 편의를 위해서 생성 할 Service account의 Role(권한)을 Project -> Owner(프로젝트 최상위 권한)로 지정하여 Service account를 생성한다. 생성한 key 파일을 GOOGLE_APPLICATION_CREDENTIALS라는 OS의 환경 변수로 지정한다.
Node.js 샘플 다운로드 및 NPM설치
Cloud Shell 에서 다음의 명령어를 실행하여 GCP node.js샘플을 다운로드 한다.
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
다음의 명령어를 실행해서 node.js DLP API 샘플이 위치한 폴더로 이동한다.
cd nodejs-docs-samples/dlp/
NPM 모듈 설치
다음의 명령어를 실행해서 node.js DLP API의 샘플을 실행하기 위한 패키지를 설치한다.
npm install
텍스트(스트림 또는 파일)에서 개인정보 검사하기
DLP API를 테스트하기 위한 준비가 완료되었다. 이제 DLP API 샘플이 구성된 node.js 모듈을 실행해서 텍스트와 텍스트 파일에서 개인정보를 검사해보자.
텍스트 스트링에서 검사하기
다음의 명령어를 실행해서 스트링으로 이루어진 텍스트 데이터에서 개인정보를 검사해보자
node inspect string "검사할 텍스트 스트링"
이글의 작성자의 전화번호와 주민등록번호를 텍스트에 입력하고 실행한 결과
DLP API를 통해서 실제 검출된 개인정보 데이터는 정확하게 나온다. 실제 정보를 입력하였기에 자체 모자이크 처리하였다.
텍스트 파일에서 검사하기
간단하게 테스트를 하기 위해서 .txt 형식으로 개인정보를 입력하여 텍스트파일을 생성한다.
DLP API를 실행할 샘플 파일 내용
다음의 명령어를 실행해서 텍스트 파일에서 개인정보 데이터를 검사해보자.
node inspect file “텍스트 파일”
이글의 작성자의 개인정보(전화번호, 이메일, 주민등록번호, 신용카드번호)를 텍스트에 입력하고 실행한 결과
마무리
보통 솔루션의 형태로 제공되는 DLP 기능을 간단하게 API를 이용해서 사용할 수 있다는 부분만으로도 정보에 대한 관심과 중요도가 높아지고 있는 요즘, 솔루션의 형태로 제한된 범위로만 사용할 수 있는게 아니라 민감한 개인정보를 다루는 모든 경우에서 광범위하게 활용성을 높여줄 것으로 예상된다.
*
테스트 자체나 샘플이 한정되고 샘플이 문제일 수 도 있지만,
아직은 베타단계라서 그런지
나머지 부분에 대해서도 테스트를 진행했지만, 만족할만한 결과가 나오지 않아서 따로 기재하지는 않는다.
참고자료
https://cloud.google.com/sensitive-data-classification/demo/#/
https://en.wikipedia.org/wiki/Personally_identifiable_information
https://en.wikipedia.org/wiki/Protected_health_information
'Google Cloud Platform > Compute Engine & Common' 카테고리의 다른 글
구글 클라우드 NAT Gateway 구성하기 (0) | 2017.08.17 |
---|---|
Private Google Access 적용하기 (0) | 2017.04.04 |
구글 클라우드 사용팁 : 여러 VM에서 디스크 공유하기 (0) | 2016.08.02 |
구글 클라우드 서브넷과 NAT 네트워크 구성하기 (0) | 2016.07.07 |
구글 클라우드 네트워크 이해하기 (0) | 2016.06.21 |