Sicurezza a livello di colonna e di riga

Gestione, governance e collaborazione in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Il problema dell'accesso a livello di tabella

Tabella users con accesso alla tabella

  • La tabella users di Claro contiene nomi, email, credit score e fascia di credito
  • Concedere SELECT al ruolo analyst espone tutte le colonne
  • Gli analyst di campaign non hanno bisogno dei credit score grezzi
  • Il controllo a livello di tabella non distingue a quel livello
Gestione, governance e collaborazione in Snowflake

Cos'è la sicurezza a livello di colonna?

  • La colonna resta nei risultati: cambia solo il valore
  • I ruoli privilegiati vedono i valori reali; gli altri vedono valori mascherati
  • Il mascheramento avviene in query in base al ruolo attivo = dynamic data masking

Sicurezza a livello di colonna

Gestione, governance e collaborazione in Snowflake

Mascheramento dinamico dei dati

Diagramma con due tabelle: una con mascheramento dinamico e una senza

Gestione, governance e collaborazione in Snowflake

Creare e applicare una 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 restituisce il ruolo primario attivo
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Gestione, governance e collaborazione in Snowflake

Tokenizzazione esterna

  • Alternativa al mascheramento dinamico dei dati
  • Richiede un provider di tokenizzazione esterno e una External Function
  • Valori sensibili sostituiti da token coerenti tra sistemi
  • Utile quando lo stesso token serve anche fuori da Snowflake

Tokenizzazione esterna

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Gestione, governance e collaborazione in Snowflake

Cos'è la sicurezza a livello di riga?

Due tabelle che mostrano come un analyst veda solo certe righe

Gestione, governance e collaborazione in Snowflake

Come funzionano le Row Access Policies

Schema: una query da US_ANALYST passa per una Row Access Policy sulla tabella users restituendo solo righe US; EU_ANALYST ottiene solo righe EU dalla stessa query

  • La policy valuta il ruolo della query e applica un filtro
Gestione, governance e collaborazione in Snowflake

Creare e applicare una 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);
Gestione, governance e collaborazione in Snowflake

Usare insieme Data Masking e Row Access Policies

Mascheramento dinamico e Row Access Policies

Gestione, governance e collaborazione in Snowflake

Passons à la pratique !

Gestione, governance e collaborazione in Snowflake

Preparing Video For Download...