ความปลอดภัยระดับคอลัมน์และระดับแถว

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

ปัญหาของการควบคุมการเข้าถึงระดับตาราง

ตาราง users พร้อมการเข้าถึงระดับตาราง

  • ตาราง users ของ Claro มีชื่อ อีเมล คะแนนเครดิต และกลุ่มเครดิต
  • การให้สิทธิ์ SELECT แก่ role นักวิเคราะห์จะเปิดเผยทุกคอลัมน์
  • นักวิเคราะห์แคมเปญไม่จำเป็นต้องเห็นคะแนนเครดิตดิบ
  • การควบคุมการเข้าถึงระดับตารางไม่สามารถแยกแยะได้
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Column-Level Security คืออะไร?

  • คอลัมน์ยังคงอยู่ในผลลัพธ์ — เฉพาะค่าที่เปลี่ยนไป
  • Role ที่มีสิทธิ์เห็นค่าจริง; Role ที่ไม่มีสิทธิ์เห็นค่าที่ถูก mask
  • การ mask เกิดขึ้นขณะ query ตาม role ที่ใช้งาน = dynamic data masking

column_security_v2.png

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Dynamic Data Masking

แผนภาพแสดงตารางสองตาราง ตารางหนึ่งใช้ dynamic data masking และอีกตารางไม่ใช้

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

การสร้างและใช้งาน Masking Policy

CREATE MASKING POLICY mask_credit_score
  AS (val NUMBER) RETURNS NUMBER ->
  CASE
    WHEN IS_ROLE_IN_SESSION('CREDIT_ADMIN') THEN val
    ELSE -9999
  END;

ALTER TABLE core.users
  MODIFY COLUMN credit_score
  SET MASKING POLICY mask_credit_score;
  • CURRENT_ROLE คืนค่า primary role ที่ใช้งานอยู่
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

External Tokenization

  • ทางเลือกแทน Dynamic Data Masking
  • ต้องใช้ผู้ให้บริการ tokenization จากภายนอกและ External Function
  • แทนที่ค่าที่ละเอียดอ่อนด้วย token ที่สอดคล้องกันในทุกระบบ
  • เหมาะเมื่อต้องใช้ token เดิมนอก Snowflake

external_tokenization_v2.png

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Row-Level Security คืออะไร?

ตารางสองตารางแสดงให้เห็นว่านักวิเคราะห์มองเห็นได้เฉพาะบางแถว

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Row Access Policy ทำงานอย่างไร

แผนภาพแสดง query จาก US_ANALYST ผ่าน Row Access Policy บนตาราง users โดย US_ANALYST ได้รับเฉพาะแถว US และ EU_ANALYST ได้รับเฉพาะแถว EU จาก query เดียวกัน

  • Policy ประเมิน role ที่ query และกรองข้อมูลตามนั้น
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

การสร้างและใช้งาน Row Access Policy

CREATE ROW ACCESS POLICY region_filter
  AS (region_col VARCHAR) RETURNS BOOLEAN ->
  CASE
    WHEN IS_ROLE_IN_SESSION('US_ANALYST') THEN region_col = 'US'
    WHEN IS_ROLE_IN_SESSION('EU_ANALYST') THEN region_col = 'EU'
    ELSE FALSE
  END;

ALTER TABLE core.users
  ADD ROW ACCESS POLICY region_filter ON (region);
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

ใช้ Data Masking และ Row Access Policy ร่วมกัน

Dynamic data masking และ row access policies

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

มาฝึกกันเถอะ!

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Preparing Video For Download...