Bảo mật theo cột và theo hàng

Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Vấn đề với quyền ở mức bảng

Bảng users với quyền truy cập bảng

  • Bảng users của Claro có tên, email, điểm tín dụng và hạng tín dụng
  • Cấp quyền SELECT cho vai trò analyst sẽ lộ tất cả cột
  • Nhà phân tích chiến dịch không cần điểm tín dụng thô
  • Kiểm soát ở mức bảng không phân biệt được nhu cầu này
Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Column-Level Security là gì?

  • Cột vẫn xuất hiện trong kết quả — chỉ giá trị thay đổi
  • Vai trò có đặc quyền thấy giá trị thật; vai trò khác thấy giá trị bị che
  • Che dữ liệu khi truy vấn, tùy vai trò truy vấn = dynamic data masking

Bảo mật theo cột

Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Dynamic Data Masking

Sơ đồ hai bảng: một có dynamic data masking, một không

Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Tạo và áp dụng 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 trả về vai trò chính đang kích hoạt
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

External Tokenization

  • Một lựa chọn thay thế cho Dynamic Data Masking
  • Cần nhà cung cấp token hóa bên thứ ba và External Function
  • Giá trị nhạy cảm được thay bằng token nhất quán giữa các hệ thống
  • Hữu ích khi token phải được nhận diện ngoài Snowflake

Token hóa bên ngoài

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Row-Level Security là gì?

Hai bảng cho thấy nhà phân tích chỉ xem được một số hàng

Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Cách Row Access Policy hoạt động

Sơ đồ minh họa truy vấn từ US_ANALYST đi qua Row Access Policy trên bảng users, chỉ trả về hàng US; EU_ANALYST trả về hàng EU với cùng truy vấn

  • Policy đánh giá vai trò thực thi truy vấn và áp dụng bộ lọc
Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Tạo và áp dụng 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);
Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Kết hợp Data Masking và Row Access Policy

Dynamic data masking và row access policies

Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Ayo berlatih!

Quản trị, Quản trị dữ liệu & Cộng tác trên Snowflake

Preparing Video For Download...