DEV Community

Chatchai Komrangded (Bas) for AWS Community ASEAN

Posted on • Updated on

ทดสอบการทำ Anonymize data in your data lake with Amazon Athena

การแชข้อมูลหรือใช้ต้อง comply ตาม regulations เวลา deal กับข้อมูลลูกค้าซึ่งอาจจะประกอบไปด้วยข้อมูลส่วนตัว (PII) ที่ส่วนมากจะถูกทำ data anonymized (การลบข้อมูลโดยไม่ระบุชื่อ) เช่นพวก PII อย่าง ชื่อ หรือ นามสกุล

ในโพสต์นี้เราจะลองมาทำกระบวนการ annonymize data โดยใช้ Amazon Athena!

Athena คืออะไร?

Table Of Contents

Architecture Diagram

delta-lake

กระบวนการที่จะทำคือ เราจะ upload ข้อมูลเข้าไปใน Amazon S3 ทำการ annonymize data และเขียนข้อมูลลงไปใน S3 (persistent) แล้วสุดท้ายเราจะมาลองสร้าง annonymize data ให้อยู่ในรูปแบบ view

Pre-requisites

  • AWS Account - ❗ ดูวิธีการคิดราคาของ Amazon Athena ก่อนนะจ๊ะ..
  • โหลดข้อมูลแล้วลุยเลย! ลิ้งนี้

Anonymize with Athena

เราจะสร้าง tables ที่มีข้อมูลที่ถูก anonymized แล้ว แต่ก่อนที่จะทำลองคำนึงสิ่งที่เราจะเอาข้อมูลไปใช้ต่อ ตัวอย่างเช่น ถ้า columns นั้นเราคิดว่าไม่มีโอกาสหรือไม่แน่ใจว่าจะใช้หรือใน analytics process บางครั้งการที่เราละเว้นหรือไม่นำข้อมูลนั้นมาอาจจะเป็นวิธีที่ดีกว่า วิธีนึงในการทำ anonymize sensitive information คือการทำ hashing

hash function คือ function ที่เราใช้ในการ map data จากขนาดไหนก็ได้ให้อยู่ในรูปแบบขนาดที่คงที่ หาอ่านเพิ่มเกี่ยวกับ Hash function

CREATE EXTERNAL TABLE `cust_data`(
  `customer_id` bigint, 
  `prefix` string, 
  `first_name` string, 
  `middle_name` string, 
  `last_name` string, 
  `suffix` string, 
  `gender` string, 
  `dob` string, 
  `address` string)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://chatkom-doc-shared/data/'
TBLPROPERTIES (
  'classification'='csv', 
  'delimiter'=',', 
  'skip.header.line.count'='1', 
  'typeOfData'='file')
Enter fullscreen mode Exit fullscreen mode

ลอง Query ผ่าน Athena

SELECT * FROM "default"."customers" limit 10;
Enter fullscreen mode Exit fullscreen mode

annonymize_athena.jpg

  • สร้าง Table ที่ทำการ Anonymize data โดยใช้ Athena ลิ้งนี้
CREATE table "default"."cust_data_anonym"
WITH (format='parquet')
as
SELECT 
customer_id,
prefix,
sha256(to_utf8(cast(first_name AS varchar))) AS first_name_anonym,
sha256(to_utf8(cast(middle_name AS varchar))) AS middle_name_anonym,
last_name,suffix,
gender,
dob,
address
FROM "default"."cust_data"
Enter fullscreen mode Exit fullscreen mode

ลอง Query ผ่าน Athena

SELECT * FROM "default"."cust_data_anonym" limit 10;
Enter fullscreen mode Exit fullscreen mode

annonymize_athena.jpg

เราจะเห็นข้อมูลใน first_name กับ last_name ถูก Anonymize โดย hashing function

  • ในกรณีเราไม่ต้องการสร้าง Table สามารถทำเป็น View ครอบได้เช่นกัน โดยใช้ Athena ลิ้งนี้
CREATE OR REPLACE VIEW "default"."v_cust_data_anonym"
as
SELECT 
customer_id,
prefix,
sha256(to_utf8(cast(first_name AS varchar))) AS first_name_anonym,
sha256(to_utf8(cast(middle_name AS varchar))) AS middle_name_anonym,
last_name,suffix,
gender,
dob,
address
FROM "default"."cust_data"
Enter fullscreen mode Exit fullscreen mode

✅ Conclusion

จบแล้ว! Hasing function เป็นทางเลือกนึงในการ Anonymizing dataset ซึ่งเป็นสิ่งเราเจอบ่อยๆก่อนที่จะ analyze ข้อมูล ซึ่งในตัวอย่างนี้เรามีการ Anonymizing dataset ใน S3 กับ Athena hashing function
good_stuff

Discussion (1)

Collapse
nutchanon profile image
Nutchanon Leelapornudom

เยี่ยมครับ เหมาะกับนำไป apply ใน PDPA เลยครับ