Securitate la nivel de coloană și de rând

Administrare, Guvernanță și Colaborare în Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Problema accesului la nivel de tabel

Tabel users cu acces la nivel de tabel

  • Tabelul users al Claro conține nume, e-mailuri, scoruri de credit și categorie de credit
  • Acordarea SELECT rolului de analist expune toate coloanele
  • Analiștii de campanie nu au nevoie de scorurile brute de credit
  • Controlul accesului la nivel de tabel nu poate face această distincție
Administrare, Guvernanță și Colaborare în Snowflake

Ce este securitatea la nivel de coloană?

  • Coloana rămâne în rezultate – doar valoarea se modifică
  • Rolurile privilegiate văd valorile reale; cele neprivilegiate văd valorile mascate
  • Mascarea are loc la momentul interogării, în funcție de rol = mascare dinamică a datelor

column_security_v2.png

Administrare, Guvernanță și Colaborare în Snowflake

Mascare dinamică a datelor

Diagramă care prezintă două tabele, unul cu mascare dinamică a datelor și unul fără

Administrare, Guvernanță și Colaborare în Snowflake

Crearea și aplicarea unei politici de mascare

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 returnează rolul primar activ
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Administrare, Guvernanță și Colaborare în Snowflake

Tokenizare externă

  • Alternativă la mascarea dinamică a datelor
  • Necesită un furnizor extern de tokenizare și o funcție externă
  • Valorile sensibile sunt înlocuite cu token-uri consistente între sisteme
  • Util când același token trebuie recunoscut în afara Snowflake

external_tokenization_v2.png

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Administrare, Guvernanță și Colaborare în Snowflake

Ce este securitatea la nivel de rând?

Două tabele care arată că un analist poate vedea doar anumite rânduri

Administrare, Guvernanță și Colaborare în Snowflake

Cum funcționează politicile de acces pe rând

Diagramă care arată o interogare de la US_ANALYST trecând printr-o politică de acces pe rând asupra tabelului users, cu returnarea doar a rândurilor US, și EU_ANALYST returnând doar rândurile EU din aceeași interogare

  • Politica evaluează rolul care interogează și aplică un filtru
Administrare, Guvernanță și Colaborare în Snowflake

Crearea și aplicarea unei politici de acces pe rând

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);
Administrare, Guvernanță și Colaborare în Snowflake

Utilizarea mascării datelor și a politicilor de acces pe rând împreună

Mascare dinamică a datelor și politici de acces pe rând

Administrare, Guvernanță și Colaborare în Snowflake

Să exersăm!

Administrare, Guvernanță și Colaborare în Snowflake

Preparing Video For Download...