BigLake แบบจับมือทำ

Nawaphon Thiandusit
CJ Express Tech (TILDI)
4 min readMay 15, 2024

บทความนี้เราจะเรียนรู้ที่จะใช้งาน BigLake ซึ่งเป็นหนึ่งใน Service ของ Google Cloud Platform กัน ว่าคืออะไรและสามารถทำอะไรได้บ้าง

# Table of Contents
BigLake คืออะไร
BigLake มันดียังไงหล่ะ
1 ไม่จำเป็นต้อง grant สิทธิ Storage Object Viewer ให้ user
2 สามารถ set fine-grained security at the Table level
- row-level security
- column-level security
- Data Masking
3 Data Masking
ขั้นตอนในการสร้าง BigLake
ส่งท้าย

BigLake คืออะไร

BigLake คือ External Table หรือ Table ไม่ได้เก็บข้อมูลอยู่บน Storage ของ BigQuery โดยส่วนใหญ่จะเป็นการเก็บข้อมูลในระบบคลาวด์ต่าง เช่น Google Cloud Storage, Amazon S3, และ Azure Blob Storage

BigLake เป็น External Table รูปแบบหนึ่งของ BigQuery ตาม concept ของ Data Lakehouse สร้างเพื่อมายกระดับความสามารถของ External Table แบบปกติ โดยเพิ่มความสามารถในการปรับระดับ security ได้และการทำ dynamic data masking นอกจากนี้ยังสามารถใช้งานร่วมกับ BigQuery Omni เพื่อวิเคราะห์ขอมูลจาก Amazon S3 หรือ Blob Storage ได้อีกด้วย

ถ้าใครสนใจอยากรู้ Data Lakehouse เกี่ยวกับ สามารถอ่านได้ที่นี่เลย เข้าใจ Data Warehouse, Data Lake และ Data Lakehouse ฉบับมือใหม่

BigLake มันดียังไงหล่ะ

1 ) ไม่จำเป็นต้อง grant สิทธิ Storage Object Viewer ให้ user

เพราะ BigLake table สามารถ grant ให้ service account ของ connection ที่จะเอามาต่อกับตัว source ที่อยู่ที่ storage แทนได้

มาดูตัวอย่างกัน

กรณี external table แบบปกติ

user ชื่อ data ai มี Permission

Role

  • BigQuery Data Viewer
  • BigQuery Job User
Permission ของ User data ai

User ยังไม่สามารถ Query ที่ External table ได้ เพราะยังขาดสิทธิ Storage Object Viewerที่จะไปอ่านข้อมูล บน Google Cloud Storage

User data ai ไม่สามารถ query ที่ External table

แต่ถ้าเป็น กรณี BigLake ไม่จำเป็นต้อง Grant Permission ให้ User เพราะได้ไป Grant ที่ Service account แล้ว

Permission ของ service account ที่เป็น connection ของ BigLake

ทำให้สามารถ Query บน BigQuery

User data ai ไม่สามารถ query ที่ BigLake

ข้อดี

  • ไม่จำเป็นต้อง Grant Permision ให้ User ทีละคน
  • User ไม่จำเป็นต้องขอเข้าถึง Bucket ของ Google Cloud Storage เพิ่มความสะดวกสบายและความรวดเร็วในการใช้งาน

2) สามารถ set fine-grained security at the Table level

Row-level security

row-level security คือ การควบคุมสิทธิของ User ให้ Query เห็นเฉพาะ row ที่มีสิทธิเท่านั้น เฉพาะฉะนั้น แต่ละ User ที่เข้ามาจะเห็นข้อมูลไม่เหมือนกัน

row-level security ในภาพเป็นแค่ที่การ check ให้ดูว่ามันสามารถ set ได้

โดยเราจะเปรียบเทียบ ระหว่าง

  1. Standard BigQuery tables หรือ Native table
  2. BigLake tables
  3. External tables

จะเห็นได้ว่า External table ไม่สามารถ set row-level security

Native table vs BigLake table vs External table

Column-level Security

column-level security คือ การควบคุมสิทธิของ User ให้ Query เห็นเฉพาะ column ที่มีสิทธิเท่านั้น ทำให้ User บางคนจะไม่สามารถ Query บาง column ที่เราไม่อยากให้เขาเข้าถึงข้อมูลนั้นได้

ในทางเดียวกัน external table จะเซ็ต column-level security ไม่ได้เช่นกัน แต่ BigLake ใช้ได้เช่นเดียวกับ Native table เลย

เสริม: เราสามารถมาสร้าง Policy tag เพื่อทำ column-level security ที่ตรง Policy tags นะ

Data Masking

data masking คือ การที่เราทำ data sensitivity โดยเราจะสามารถ ระบุ rule ได้ว่าจะให้แต่ล่ะ role เห็น data ยังไง

สมมติมี ทีม marketing, ทีม HR และ CEO

มีข้อมูล column id, name, address, salary และ contact

สามารถเซ็ตให้แต่ล่ะ role เห็นข้อมูลที่แตกต่างกันได้

เช่น

  • ให้ทีม Marketing เห็นคอลัมน์ address เป็นค่า Hash และ salary เป็นค่า Null
  • ให้ทีม HR เห็นคอลัมน์ address เป็นค่าปกติ และ salary เป็นค่า Null
  • ส่วน Executives สามารถเห็นทุก column แบบปกติ
Marketing Team เห็นค่า address เป็น hash และ salary เป็น null
ทีม HR เห็นคอลัมน์ address เป็นค่าปกติ และ salary เป็นค่า Null
Executives สามารถเห็นทุก column แบบปกติ

data masking สามารถใช้งานร่วมกับ row-level security และ column-level security

ถ้าอยากจะศึกษาเพิ่มก็ตามนี้เลย Introduction to data masking

ขั้นตอนในการสร้าง BigLake

1. Enable BigQuery Storage API

2. เปิด Bigquery แล้วสร้าง external connection

* กรณี data source อยู่ที่ google cloud storage

พอสร้างเสร็จ จะได้หน้าตาแบบนี้

3. นำ Service account id ไป grant permission

4. คนที่จะสามารถสร้าง BigLake table ได้ต้องมีสิทธิตามนี้

  • bigquery.tables.create
  • bigquery.connections.delegate

ซึ่งสามารถ grant ได้ 2 แบบ

4.1) Grant role : BigQuery Admin

หรือ

4.2) Grant role : BigQuery Data Editor

Grant role : BigQuery Connection Admin

5. Create table

ลอง query หรือ เล่นกับตัว BigLake table ได้เลย

** คนที่เป็น Data Analytics หรือ User อื่นๆไม่จำเป็นต้อง ขอสิทธิ Google Cloud Storage ทำให้สะดวกในการทำงานง่ายและรวดเร็วขึ้น

ส่งท้าย

สุดท้ายนี้จะเห็นได้ว่า BigLake ความสามารถมากกว่า external tableแบบปกติมาก อยากให้ลองเปลี่ยนมาใช้กัน หวังว่าบทความนี้จะช่วยเป็น reference ของพี่ๆน้องๆ Data Engineer ทุกคนครับ ถ้ามีเนื้อหาผิดพลาด หรือตกหล่นตรงไหน สามารถ comment ให้คำแนะนำกันได้ครับ

Reference

--

--