BLOGS

3 ขั้นตอนง่ายๆ เพื่อกำหนดการเข้าถึงข้อมูลระดับ Column บน Google BigQuery

Thakorn.T • 15/06/2021
Google Cloud Solutions Specialist

เคยมีปัญหากับการต้องใช้งาน Table บน BigQuery ร่วมกับคนอื่นมั้ย? ถ้าใครไม่มี อยากให้ลองจินตนาการดูง่ายๆ ว่าถ้าเรามี Table ที่มี user หลากหลายกลุ่มมาใช้งานร่วมกัน แต่ต้องการให้บางคนเข้าถึงข้อมูลแค่บาง Column(s) เท่านั้น วันนี้จะพาทุกคนมารู้จัก “Policy tag” ที่จะมาช่วยแก้ปัญหานี้กัน!

ทำความรู้จัก Policy Tags กันก่อน Policy Tags เป็นฟีเจอร์นึงบน  Data Catalog ที่จะให้คุณสร้าง tag ที่เหมาะสมตามการจัดหมวดหมู่ของข้อมูลสำหรับธุรกิจของคุณ โดยหลักการ คือ ติด tag เพื่อจำกัดสิทธิ์ และกำหนดว่าใครสามารถเข้าถึงข้อมูลใน tag นั้นๆ ได้

ตัวอย่างข้อมูล

Table “employees” นี้เก็บข้อมูลพนักงานของบริษัทแห่งหนึ่ง ซึ่งประกอบด้วย employee_id (รหัสพนักงาน), first_name (ชื่อ), last_name (นามสกุล), email (อีเมล), salary (เงินเดือน) , working_year (ปีที่ทำงาน), level (ระดับขั้นพนักงาน)

Employees Table stored in BigQuery

Fictional Demo Case ของเราในวันนี้

มีตำแหน่งงาน 2 ระดับที่เกี่ยวข้องกัน คือ Junior HR และ Senior HR โดยที่เราจะให้ Junior HR ไม่สามารถเข้าถึง Column ที่เป็นความลับสุดๆ ทั้ง 3 Columns ได้แก่ salary, working_year และ level บน Employees table ได้ แต่ Senior HR สามารถเข้าถึง ได้ทุก Columns

ปัญหานี้จะแก้ได้ด้วย Policy Tags  ซึ่งทำง่ายมากเพียง 3 Steps เท่านั้น ก็สามารถจำกัดการเข้าถึงของ User ที่ไม่ต้องการใน Columns ลับเฉพาะกลุ่มได้แล้ว ขั้นตอนมีตามนี้

Step 1 สร้าง Policy tag taxonomy

เข้าไปที่ Data Catalog บน GCP Console เพื่อทำการสร้าง “Policy tag taxonomies” หรือ การกำหนด Policy level ให้กับลำดับชั้นความสำคัญของ Tag ข้อมูล

→  เลือกเมนู Policy tags และกด Create Taxonomy

→  ตั้งชื่อให้กับ Taxonomy ตามที่ต้องการ จากตัวอย่างด้านล่าง จะเป็นการตั้งชื่อ “HR Business Criticality” ให้เข้าใจง่ายว่า เป็น Tag ที่เกี่ยวกับการลำดับชั้นของข้อมูลสำหรับฝ่ายบุคคล

→ จากนั้นกำหนด Policy tag หรือ ชื่อลำดับชั้นหลัก ซึ่งสามารถกำหนดเป็น High/Medium/Low และอื่นๆ ตามความต้องการ หรือ ตามการกำหนดความสำคัญของข้อมูลได้

ใน Demo นี้ จะกำหนด Policy tag เป็น “High” สำหรับข้อมูลที่ความสำคัญมาก ไม่อนุญาตให้ Junior HR ดูได้ และกำหนด subtag เป็น “employment” เพื่อเจาะจงว่าข้อมูลที่มีความสำคัญมากของเราเนี่ย เป็นข้อมูลเกี่ยวกับการจ้างงาน

→ หลังกด Create ก็จะปรากฏ Policy tag taxonomy “HR Business Criticality” ขึ้นมาตามนี้เลย

เราต้องทำการ enable เพื่อจำกัดการเข้าถึงข้อมูลของ column ที่เราจะนำ Policy tag ไปแปะบน BigQuery ได้ โดยกดเลื่อนปุ่ม Enforce access control

Step 2 กำหนดสิทธิ์ให้กับคนที่เข้าถึงข้อมูลที่สำคัญมาก

สิทธิ์ที่ต้องมีเพื่อใช้งาน Policy tag สำหรับ user คนสำคัญของเรา หรือ พูดง่ายๆ คนที่เราต้องการให้เข้าถึง High-employment Policy Tag ที่เราสร้างไว้ คือ “Fine-Grained Reader”

โดยที่จะ Grant สิทธิ์นี้ผ่าน IAM & Admin จากด้านล่างจะเห็นได้ว่า มีการกำหนดสิทธิ์ “Fine-Grained Reader” ให้กับ Senior HR มโน ของเรา 3 members 

Granting Fine-Grained Reader Role

Granted members with Fine-Grained Reader Role appeared on IAM Page

Step 3  แปะ Policy tag ให้กับ Columns บน BigQuery

มาถึงขั้นตอนสุดท้ายกันแล้ว เข้าไปที่ BigQuery Table กด edit schema จากนั้นเลือก Column ที่ต้องการ ติ้กรัว ๆ 3 Columns ที่ต้องการกำหนดสิทธิ์ (salary, working_year และ level) แล้วกด Add policy tag

เลือก Policy Tag ที่ต้องการ ซึ่งในที่นี้เราจะเลือก (HR Business Criticality > high) ที่เราทำไปด้านบน กด select เลย

ลองมาเทส สมรรถภาพ Policy tag ของเราด้วยการ Query บน BigQuery กัน

Test Case 1 : ให้ Senior HR มโนของเราลอง Select * ข้อมูลบน Table ดู

จะเห็นว่า Senior HR มโน ของเราเนี่ยสามารถเห็นข้อมูลทุก Column เลย รวมถึง Column ที่แปะ Policy tag ด้วย

Test Case 2 :  ให้ Junior HR มโนของเราลอง Select * ข้อมูลบน Table ดู

Error!! Access Denied เนื่องจากไม่มีสิทธิ์การเข้าถึงทุกๆ Column นั่นเอง

Test Case 3 : ให้ Junior HR มโนของเราลอง Select เฉพาะ column ที่ไม่ได้แปะ Policy tag ผลลัพธ์คือ Junior HR มโน ของเราสามารถ Query column อื่นๆ ได้ปกติ

Sum up สั้นๆ ส่งท้ายกันนิดนึง :

3-Step Miracle เพื่อกำหนด Column-level security บน BigQuery จะเกี่ยวข้องกับ 3 Services บน GCP Console นั่นก็คือ Data Catalog ซึ่งใช้เพื่อกำหนด Policy tag taxonomy, IAM & Admin เพื่อ apply Policy tag ให้กับ user หรือ member และสุดท้าย BigQuery เพื่อ apply Policy tag ให้กับข้อมูล หรือ Column ที่ต้องการ

ปล. สำหรับ user/member ที่ไม่ได้ apply policy tag จะลำบากชีวิตนิดนึง Select * ไม่ได้ แต่ชีวิตไม่ยากขนาดนั้น เราเลือก column ที่ต้องการด้วยการ กด Ctrl+ Spacebar หรือ Click ชื่อ Field name (หรือ column) ที่ต้องการผ่านหน้า console ได้เลย

หากท่านใดสนใจข้อมูลเพิ่มในเรื่องของ Google Workspace, Google Cloud Platform หรือ Service อื่นๆ
ด้าน AI/Machine Learning อาทิ AI Platform, Computer Vision, Speech Recognition
ทาง Tangerine มีผู้เชี่ยวชาญคอยให้คำปรึกษาสามารถ
ติดต่อได้ที่อีเมล Marketing@tangerine.co.th หรือโทร 094-999-4263 ได้ทันที

สอบถามข้อมูลเพิ่มเติม
Contact Form_TH Sources