문의 주신 내용에 맞는 전문 컨설턴트 배정 후 연락드리겠습니다.
안녕하십니까. GS네오텍 배지현입니다. 이번 글에서는 리인벤트에서 소개된 AWS Lake Formation transactions, row-level security 과 관련된 내용을 살펴보도록 하겠습니다. Lake Formation은 특정 테이블에 접근할 수 있는 권한 통제, 개인정보를 담고 있는 특정 컬럼에 대한 접근 통제에 많이 활용되었습니다. 이번에 나온 기능은 S3에 파일 추가,읽기 등의 작업시 Lake Formation을 이용하면 transaction 처리를 할 수 있다는 내용과, 기존 권한 통제의 연장선으로 row-level 접근 권한 통제까지 가능해 진 부분입니다.
먼저 Lake Formation을 이용한 transaction 처리 부분에 대해 더 자세히 알아 보겠습니다. Lake Formation Console에서 Create table을 클릭하면 Enable governed data access and management 옵션 체크 박스 선택화면이 나옵니다. Governed Table은 ACID를 지원하며 테이블 생성시에 선택할 수 있고, 생성후에는 변경이 불가하다는 문구가 안내 되고 있습니다.
Analyst1, Analyst2 두 명의 유저가 있고, Analyst1유저가 쥬피터 노트북을 사용해 특정 테이블(위의 이미지에서 생성한 amazon_reviews_governed)에 데이터를 추가 입력하는 동안 Analyst2가 동일 테이블의 데이터를 읽으려고 하는 상황을 가정해 보겠습니다. Analyst1 유저는 pyspark 에서 제공하는 start_transaction API를 사용하여 트랜잭션을 시작함을 알리고 데이터를 입력할 수 있습니다.
추가 입력한 데이터는 commit_transaction API 호출하기 전까지는 isolation되어 다른 유저인 Analyst2에게는 보이지 않습니다.
여기서 테이블은 Glue Catalog에 등록된 테이블을 말하며, 특정 S3에 버켓에 저장된 파일들의 Meta 정보라고 이해하셔도 좋습니다. 즉, DBMS라는 Database 솔루션을 써야만 가능했던 트랜잭션 기능을 S3 Object Storage에서도 활용하는 방법이 생긴것 입니다.
이 Governed tables로 등록된 테이블에 대해서는 추가적으로 Automatic Compaction with Governed tables 라는 기능 또한 탑재가 되었습니다. S3에 매우 많은 작은 파일들이 존재할 경우 스캔하는데 시간이 소요되고, 쿼리 성능저하로 이어지는 경우가 있습니다. 이를 방지하기 위해 Governed table에 대해서는 자동으로 백그라운드에서 작은 파일들을 하나의 파일로 머지하는 작업을 진행합니다. 이를 통해 쿼리 성능을 개선할 수 있게 됩니다.
다음으로 row-level security에 대해 알아보겠습니다. 데이터 거버넌스 측면에서 특정 유저가 볼 수 있는 정보를 통제하거나 개인과 특정하게 연관되어 있는 정보인 PII(Personally Identifiable Information)에 대한 보안은 매우 중요한 사안입니다. 이번에 새로 나온 row-level security를 활용하면 특정 유저가 볼 수 있는 데이터를 특정값을 가지는 로우인 경우로 한정할 수 있는데, column-level security와 같이 활용하면 cell-level security를 달성할 수 있게 됩니다. 즉, 볼 수 있는 데이터를 특정 컬럼에서 특정값인 경우만으로 한정하는 셀 수준의 security를 가져갈 수 있게 되는 것 입니다.
아래와 같이 dob(day of birthday) 를 제외하고 country가 Canada인 경우만 볼 수 있도록 하는 data filter를 lake formation 콘솔에서 생성합니다.
이후 Athena를 통해 아래와 같이 데이터 조회했을 때, Canada인 데이터만 보여지게 되고 dob라는 컬럼은 보이지 않는 것을 확인할 수 있습니다.
이번에 Lake Formation에 추가된 기능을 다시 요약드리면, Governed table로 등록된 테이블에 대해서는 ACID Transaction 기능 제공, Automatic Compaction, row-level security 제공 세 가지를 들 수 있겠습니다. 참고로 이 기능들은 현재(2022.01.07) 서울 리전에서는 제공되지 않습니다. 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), EU(아일랜드), 아시아 태평양(도쿄)에서 사용 가능합니다.
[링크]
https://aws.amazon.com/about-aws/whats-new/2021/11/aws-lake-formation-governed-tables-storage-security/
https://aws.amazon.com/blogs/aws/aws-lake-formation-general-availability-of-cell-level-security-and-governed-tables-with-automatic-compaction/