Keamanan Tingkat Kolom dan Baris

Manajemen, Tata Kelola, & Kolaborasi Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Masalah Akses Tingkat Tabel

Tabel users dengan akses tabel

  • Tabel users Claro berisi nama, email, skor kredit, dan band kredit
  • Memberi SELECT ke role analis membuka semua kolom
  • Analis kampanye tidak perlu skor kredit mentah
  • Kontrol akses tingkat tabel tak bisa membedakannya
Manajemen, Tata Kelola, & Kolaborasi Snowflake

Apa itu Keamanan Tingkat Kolom?

  • Kolom tetap ada di hasil—hanya nilainya yang berubah
  • Role berhak melihat nilai asli; role lain melihat nilai termasker
  • Masking saat kueri berdasarkan role pengkueri = dynamic data masking

Keamanan tingkat kolom

Manajemen, Tata Kelola, & Kolaborasi Snowflake

Dynamic Data Masking

Diagram dua tabel: satu dengan dynamic data masking dan satu tanpa

Manajemen, Tata Kelola, & Kolaborasi Snowflake

Membuat dan Menerapkan 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 mengembalikan role primer aktif
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Manajemen, Tata Kelola, & Kolaborasi Snowflake

Tokenisasi Eksternal

  • Alternatif Dynamic Data Masking
  • Memerlukan penyedia tokenisasi pihak ketiga dan External Function
  • Nilai sensitif diganti token yang konsisten lintas sistem
  • Berguna saat token sama harus dikenali di luar Snowflake

Tokenisasi eksternal

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Manajemen, Tata Kelola, & Kolaborasi Snowflake

Apa itu Keamanan Tingkat Baris?

Dua tabel yang menunjukkan analis hanya melihat baris tertentu

Manajemen, Tata Kelola, & Kolaborasi Snowflake

Cara Kerja Row Access Policy

Diagram yang menunjukkan kueri dari US_ANALYST melewati Row Access Policy pada tabel users, hanya mengembalikan baris US, dan EU_ANALYST mengembalikan hanya baris EU dari kueri yang sama

  • Kebijakan mengevaluasi role pengkueri dan menerapkan filter
Manajemen, Tata Kelola, & Kolaborasi Snowflake

Membuat dan Menerapkan 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);
Manajemen, Tata Kelola, & Kolaborasi Snowflake

Menggabungkan Data Masking dan Row Access Policy

Dynamic data masking dan row access policy

Manajemen, Tata Kelola, & Kolaborasi Snowflake

Ayo berlatih!

Manajemen, Tata Kelola, & Kolaborasi Snowflake

Preparing Video For Download...