[AWS DMS] AWS DMS를 활용하여 데이터 마이그레이션 과정에서 데이터 마스킹 하기
- 데이터 마이그레이션 시 룰 매핑 정보를 사용하여 개인 정보 및 특정 데이터 마스킹 하기
l Version : AWS DMS
데이터 저장소 간의 데이터 복제는 평가, 스키마 변환, 데이터 마이그레이션, 데이터 유효성 검사, 데이터 액세스 및 보안 정책 구현을 포함하는 복잡한 다단계 프로세스이다. 데이터가 데이터 저장소에 걸쳐 복제됨에 따라 대부분의 조직은 개인 식별 정보(PII) 또는 해당 정보에 액세스 해서는 안되는 사용자로부터 상업적으로 민감한 데이터를 보호해야하는 규정 준수 요구 사항이 있다. 이러한 복잡한 단계의 데이터 마이그레이션을 쉽게 할 수 있는 클라우드 솔루션으로 AWS DMS (Database Migration Service)라는 서비스가 있다.
AWS DMS는 관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터베이스 및 기타 유형의 데이터 저장소를 쉽게 마이그레이션할 수 있는 클라우드 서비스로, 클라우드 뿐만 아니라 온프레미스와 조합도 가능하다. 또한 DMS를 사용할 경우 일회성의 데이터 마이그레이션을 포함하여 지속적인 변경사항(Changed Data Capture, CDC)을 복제하여 소스와 대상을 동기화할 수도 있다. 그리고 동일한 데이터베이스 및 이기종 데이터베이스 마이그레이션도 가능하고 AWS KMS (Key Management Service) 암호화 및 SSL (Secure Socket Layer)을 사용하여 소스에서 타겟으로 이동할 때 데이터를 암화 할 수 있다.
l AWS DMS : https://docs.aws.amazon.com/ko_kr/dms/latest/userguide/Welcome.html
이번 포스트에서는 Amazon Aurora PostgreSQL 클러스터에서 Amazon Simple Storage Service(Amazon S3)로 AWS Database Migration Service(AWS DMS)를 사용하여 데이터를 복제하면서 데이터 마스킹을 구현하는 방법에 대해서 알아본다. 데이터 마스킹을 사용하면 필드의 데이터를 완전히 제거하는 대신 익명화 할 수 있다. AWS DMS를 사용하여 데이터 세트를 복제하는 동안 사용자의 민감한 정보에 대한 임의 해시 또는 패턴 기반 대체를 수행할 수 있다.
마스킹 시나리오는, AWS DMS 복제 작업에서 SQLite 표현식 기반 데이터 변환을 사용하여 데이터 복제 중에 사회 보장 번호(SSN)와 관련된 데이터 필드를 마스킹 한다. 아래 다이어그램은 AWS 솔루션 아키텍처를 보여준다.
AWS DMS는 데이터를 대상 엔드포인트로 로드하기 전에 마스킹 하지만 데이터는 여전히 소스 엔드포인트에서 가져와 AWS DMS 복제 인스턴스로 로드한다. AWS DMS는 복제 인스턴스를 사용하여 소스 데이터 스토어에 연결하고, 소스 데이터를 읽고, 대상 데이터 스토어에서 사용할 수 있도록 데이터를 포맷하고, 데이터를 대상 데이터 스토어에 로드 한다. 마스킹은 대상으로 로드하기 전에 복제 인스턴스에서 발생한다. 자세한 시나리오 및 실습 내용은 아래 링크를 참고한다.
l Data masking using AWS DMS : https://aws.amazon.com/blogs/database/data-masking-using-aws-dms/
아래 그림처럼 AWS DMS 콘솔의 Mapping rules 탭에서 사용자 매핑룰을 입력 할 수 있다.
맵핑룰을 살펴보면 address_book 테이블의 ssn_or_emp_no열에 대해 변환이 설정 되어있다. 이 필드는 SSN 또는 직원 번호를 가지고 있어, SSN의 경우 마스킹이 되고 직원 번호의 경우 마스킹을 하지 않는다. 변환 매핑 규칙에는 glob 연산자(Glob Operator : https://sqlite.org/lang_expr.html
)를 사용하여 조건을 지정하여 SSN의 패턴과 일치하는 값을 대체하고 내장 hash_sha256 함수를 사용하여 원본 SSN을 SHA256해시로 대체한다. 그런 다음 변환된 데이터는 대상 데이터 세트의 새 열인 ssn_or_emp_no_transformed로 추가되고 원본 열은 열 제거 변환 규칙 작업을 통해 복제하는 동안 삭제된다.
{ “rules”: [ { “rule-type”: “selection”, “rule-id”: “1”, “rule-name”: “1”, “object-locator”: { “schema-name”: “%”, “table-name”: “%” }, “rule-action”: “include”, “filters”: [] }, { “rule-type”: “transformation”, “rule-id”: “2”, “rule-name”: “2”, “rule-target”: “column”, “object-locator”: { “schema-name”: “%”, “table-name”: “address_book” }, “rule-action”: “add-column”, “value”: “ssn_or_emp_no_transformed”, “expression”: “CASE WHEN $ssn_or_emp_no glob ‘[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]’ THEN hash_sha256($ssn_or_emp_no) ELSE $ssn_or_emp_no END”, “data-type”: { “type”: “string”, “length”: 65 } }, { “rule-type”: “transformation”, “rule-id”: “3”, “rule-name”: “3”, “rule-target”: “column”, “object-locator”: { “schema-name”: “%”, “table-name”: “address_book”, “column-name”: “ssn_or_emp_no” }, “rule-action”: “remove-column” } ] } |
AWS DMS 작업이 완료되고 S3에서 결과를 살펴보면, 아래 그림과 같이 SSN 정보에 대해서는 매핑룰에 의해 마스킹 된 것을 확인할 수 있다.
이처럼 AWS DMS 서비스를 사용하면 단순히 데이터 마이그레이션 뿐만 아니라 민감한 정보에 대해서 룰 기반의 변환 규칙을 설정함으로써 마이그레이션 과정에서 데이터 마스킹 또는 암호화를 진행하여 데이터 거버넌스에 대한 요구사항을 충족할 수 있다.
[참고자료]
l https://docs.aws.amazon.com/ko_kr/dms/latest/userguide/Welcome.html
l https://aws.amazon.com/ko/blogs/korea/aws-database-migration-service/
l https://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Task.CDC.html
l https://aws.amazon.com/blogs/database/data-masking-using-aws-dms/
l
2022-04-03 / Sungwook Kang / http://sungwookkang.com
AWS DMS, Data Masking, Data Migration, 데이터 마스킹, 데이터 마이그레이션, 이기종 데이터 마이그레이션
'AWS' 카테고리의 다른 글
[AWS Aurora] Babelfish를 사용하여 MS SQL 쿼리를 변경 없이 PostgreSQL에서 사용하기 (0) | 2022.04.08 |
---|---|
[AWS SCT] AWS SCT를 활용하여 이기종 데이터베이스 스키마 전환하기 (0) | 2022.04.07 |
[AWS S3] AWS S3 Storage Lens (0) | 2022.03.28 |
[AWS MySQL] AWS JDBC Driver for MySQL (2) | 2022.03.28 |
[AWS] What is AWS Graviton processor? (0) | 2022.03.26 |