Beveiliging op kolom- en rijniveau

Snowflake-beheer, -governance en -samenwerking

Emily Melhuish

Technical Curriculum Developer, Snowflake

Het probleem met toegang op tabelniveau

Gebruikers-tabel met tabeltoegang

  • Claro's users-tabel bevat namen, e-mails, kredietscores en kredietband
  • SELECT toekennen aan de analyst-rol toont alle kolommen
  • Campagne-analisten hebben geen ruwe kredietscores nodig
  • Toegang op tabelniveau maakt dat onderscheid niet
Snowflake-beheer, -governance en -samenwerking

Wat is beveiliging op kolomniveau?

  • De kolom blijft in de resultaten; alleen de waarde verandert
  • Bevoorrechte rollen zien echte waarden; andere rollen zien gemaskeerde waarden
  • Masking gebeurt bij querytijd op basis van de queryrol = dynamic data masking

Kolombeveiliging

Snowflake-beheer, -governance en -samenwerking

Dynamic Data Masking

Diagram met twee tabellen: één met dynamic data masking en één zonder

Snowflake-beheer, -governance en -samenwerking

Een Masking Policy maken en toepassen

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 geeft de actieve primaire rol terug
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Snowflake-beheer, -governance en -samenwerking

External Tokenization

  • Alternatief voor Dynamic Data Masking
  • Vereist een externe tokenizationprovider en een External Function
  • Gevoelige waarden vervangen door tokens die overal gelijk zijn
  • Handig als hetzelfde token buiten Snowflake herkenbaar moet zijn

Externe tokenisatie

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Snowflake-beheer, -governance en -samenwerking

Wat is Row-Level Security?

Twee tabellen laten zien dat een analist alleen bepaalde rijen ziet

Snowflake-beheer, -governance en -samenwerking

Hoe Row Access Policies werken

Diagram: een query van US_ANALYST gaat door een Row Access Policy op de users-tabel en retourneert alleen US-rijen; EU_ANALYST retourneert alleen EU-rijen met dezelfde query

  • Policy beoordeelt de queryrol en past een filter toe
Snowflake-beheer, -governance en -samenwerking

Een Row Access Policy maken en toepassen

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);
Snowflake-beheer, -governance en -samenwerking

Data Masking en Row Access Policies samen gebruiken

Dynamic data masking en row access policies

Snowflake-beheer, -governance en -samenwerking

Laten we oefenen!

Snowflake-beheer, -governance en -samenwerking

Preparing Video For Download...