DEV Community

Cover image for Identifying and handling personally identifiable information (PII) ด้วย AWS Glue DataBrew

Identifying and handling personally identifiable information (PII) ด้วย AWS Glue DataBrew

โพสต์นี้เราจะทดสอบการใช้ AWS Glue DataBrew ในการ handling sensitive data ที่อาจอยู่ในระบบบน AWS เช่น Amazon S3 ซึ่งกระบวนการนี้หลักการคือให้เนื้อข้อมูลไม่อยู่ในรูปปัจจุบันบางคนเรียกว่า Hasing, Encryption, or Masking/Redact ในโพสน์นี้เราจะทำการ Redact ข้อมูลแบบ One-way (เอาคืนกลับไม่ได้) และ Two-way (เราสามารถเรียกข้อมูลที่เป็น Orginal value ได้ อาจจะใช้กับปลายทางทีหลัง)

สำหรับที่ใครไม่รู้จักที่ข้างบนคืออะไรสามารถอ่านได้ตามลิ้งนี้
AWS Glue Databrew คืออะไร?
Common Technique มีอยู่กี่วิธี?

Table Of Contents

Architecture Diagram

arc

Pre-requisites

  • AWS Account❗
  • Data ที่จะใช้ ที่ใช้ทั้งหมดโหลดจาก ที่นี่
  • พอ Download ข้อมูลเสร็จให้ unzip แล้วเอาเฉพาะ file patient.csv upload ขึ้น Amazon S3 ก่อนนะ

Preparing dataset

เราจะเข้าไปที่ AWS Glue Databrew console ที่นี่

Image description

ด้านซ้ายมือกด Datasets เพื่อจะสร้าง Dataset สำหรับ Glue Databrew ก่อน
Image description

กด Create new dataset
Image description

เลือก csv file มะกี้ที่ upload ไปซึ่งตัวอย่างข้อมูลอยู่ใน Amazon S3 แต่อาจเอาข้อมูลมาจาก Glue data catalog, Amazon Redshift, Appflow, or Snowflake ก็ได้ จากนั้นกด Create dataset
Image description

Build Transformation Receipt

ในหน้า Glue Databrew console กด Create project

ตั้งชื่อ Project แล้วเลือก Dataset ที่เราสร้างเมื่อกี้แล้วกด Create project
Image description

เราสามารถกำหนดจำนวน Row sampling ได้ และเราต้องกำหนด IAM role เพื่อให้ Data brew สำหรับเข้าถึง Datastore นั้นๆได้เช่น Amazon S3
Image description

AWS จะ provision Glue databrew node สำหรับในการสร้าง Receipt (Transformation step ที่จะใช้ Handling PII data)
Image description

เราจะมาลองทดสอบการใช้ Redaction function (Oneway ในการ masking ข้อมูลโดยที่เราจะไม่สามารถเอา orginal กลับมาได้) เราเลือก Data masking แล้วเลือก Technique Redaction
Image description

เราเลือก SSN column มาทดสอบในการทำ Redaction เรากำหนดได้ว่าจะ Redact กี่ค่าเช่น First N, Last N ในที่นี่เราเลือกเป็น full character
Image description

เลือกเป็น Full string value, และ Apply กับทุก Rows
Image description

Glue DataBrew สามารถให้เราเข้าใจข้อมูลที่จะเปลี่ยนไปเทียบกับ Original value จริงผ่าน Preview feature (Nice!!)
Image description

หลังจาก Ok แล้วให้กด Apply สิ! เราจะเห็น receipt อยู่ด้านขวาก็คือชุด Transformation ที่ AWS Glue databrew จะรันให้เรานั่นเอง
Image description

ทีนี้เรามาทดสอบการทำ obfuscation reversible ในบางกรณีแทนที่จะ masking. เราอาจต้องการแค่ encrypt column values เมื่อไหร่ก็ต้องที่เราอาจจะใช้ข้อมูลนั้น เราสามารถ decrypt เพื่อนำ orginal data กลับมา เราจะใช้ Deterministic encryption ในการทำการ encrypt columns first_name, last_name
Image description

เลือก FIRST, LAST columns สำหรับ encryption
Image description

เลือก Secret key สำหรับการทำ encryption โดย default เราจะมี databrew!default ใน secret manager เราสามารถใช้ของเราเองก็ได้ ในที่นี้จะใช้ค่า default
Image description

เลือก Apply all rows, และ Full string
Image description

เราสามารถ Preview ได้ก่อนเพื่อเปรียบเทียบ
Image description

กด Apply เราก็จะได้ผลลัพธ์ตามนี้
Image description

หลังจากนั้นให้เรากด Publish Receipt
Image description
Image description

Obfuscation reversible

ในทางกลับกันถ้าเราต้องการ Decrypt ข้อมูลกลับไปใน Orginal format เราก็ใช้ Deterministic decryption โดยเลือก Secret key ตัวเดิมดังรูป เราจะได้ค่า FIRST กลับมาที่ Original format (Field ที่ highlight สีเหลือง)
Image description

Create Transformation job

ถัดมาเราจะสร้าง Transformation job จาก Databrew receipt กดสร้าง Create job

ตั้งชื่อ Job และเลือก Receipt ที่สร้างมะกี้
Image description

เลือก Output to Amazon S3 กด Create and Run job
Image description

เราจะเห็น Glue DataBrew job running
Image description

ไปสร้าง Table ใน Athena รอเลย!

Query Result with Amazon Athena

สร้าง Athena table แล้วทดสอบ Query

CREATE EXTERNAL TABLE patient_masked_encrypted_data (
   `id` string, 
  `birthdate` date, 
  `deathdate` date, 
  `ssn` string, 
  `drivers` string, 
  `passport` string, 
  `prefix` string, 
  `first` string, 
  `last` string, 
  `suffix` string, 
  `maiden` string, 
  `marital` string, 
  `race` string, 
  `ethnicity` string, 
  `gender` string, 
  `birthplace` string, 
  `address` string, 
  `city` string, 
  `state` string, 
  `county` string, 
  `zip` int, 
  `lat` double, 
  `lon` double, 
  `healthcare_expenses` double, 
  `healthcare_coverage` double 
)
STORED AS PARQUET
LOCATION 's3://<YOUR_S3_BUCKET>/cleaned_data_output/'
Enter fullscreen mode Exit fullscreen mode

Image description

ข้อมูลถูก masking, or encryption จาก Athena query เรียบร้อย

✅ Conclusion

จบแล้ว! AWS Glue DataBrew สามารถ integrated ร่วมกับ AWS Services ตัวอืื่นในการทำ automation pipelines ได้ในการทำ obfuscate the PII data เช่น AWS Managed Apache Airflow หรือ Step function เยี่ยม! AWS Glue DataBrew เป็น serverless no code data prep เราสามารถ Scale out ตามขนาดข้อมูลที่เราต้องการได้แล้วอีกอย่างคือ Pay per use model จ่ายเท่าที่ใช้ Technical blog สำหรับภาคภาษาอังกฤษอ่านได้ที่นี่

good_stuff

Discussion (0)