Bezpieczeństwo na poziomie kolumn i wierszy

Zarządzanie, ład danych i współpraca w Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Problem z dostępem na poziomie tabeli

Tabela użytkowników z dostępem na poziomie tabeli

  • Tabela users Claro zawiera imiona, e-maile, wyniki kredytowe i kategorie kredytowe
  • Przyznanie SELECT roli analityka ujawnia wszystkie kolumny
  • Analitycy kampanii nie potrzebują surowych wyników kredytowych
  • Kontrola dostępu na poziomie tabeli nie pozwala na takie rozróżnienie
Zarządzanie, ład danych i współpraca w Snowflake

Czym jest bezpieczeństwo na poziomie kolumn?

  • Kolumna pozostaje w wynikach — zmienia się tylko wartość
  • Role uprzywilejowane widzą prawdziwe wartości; pozostałe — zamaskowane
  • Maskowanie następuje w czasie zapytania na podstawie roli = dynamiczne maskowanie danych

column_security_v2.png

Zarządzanie, ład danych i współpraca w Snowflake

Dynamiczne maskowanie danych

Diagram przedstawiający dwie tabele — jedną z dynamicznym maskowaniem danych i jedną bez

Zarządzanie, ład danych i współpraca w Snowflake

Tworzenie i stosowanie polityki maskowania

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 zwraca aktywną rolę podstawową
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Zarządzanie, ład danych i współpraca w Snowflake

Zewnętrzna tokenizacja

  • Alternatywa dla dynamicznego maskowania danych
  • Wymaga zewnętrznego dostawcy tokenizacji i funkcji zewnętrznej
  • Wrażliwe wartości zastępowane tokenami spójnymi między systemami
  • Przydatne, gdy ten sam token musi być rozpoznawany poza Snowflake

external_tokenization_v2.png

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Zarządzanie, ład danych i współpraca w Snowflake

Czym jest bezpieczeństwo na poziomie wierszy?

Dwie tabele pokazujące, że analityk widzi tylko wybrane wiersze

Zarządzanie, ład danych i współpraca w Snowflake

Jak działają polityki dostępu do wierszy

Diagram przedstawiający zapytanie od US_ANALYST przechodzące przez politykę dostępu do wierszy tabeli users — US_ANALYST otrzymuje tylko wiersze US, EU_ANALYST tylko wiersze EU

  • Polityka ocenia rolę zapytującą i stosuje filtr
Zarządzanie, ład danych i współpraca w Snowflake

Tworzenie i stosowanie polityki dostępu do wierszy

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);
Zarządzanie, ład danych i współpraca w Snowflake

Łączenie maskowania danych z politykami dostępu do wierszy

Dynamiczne maskowanie danych i polityki dostępu do wierszy

Zarządzanie, ład danych i współpraca w Snowflake

Czas na ćwiczenia!

Zarządzanie, ład danych i współpraca w Snowflake

Preparing Video For Download...