Spalten- und Zeilensicherheit

Snowflake-Management, Governance & Zusammenarbeit

Emily Melhuish

Technical Curriculum Developer, Snowflake

Problem beim Tabellenzugriff

Users-Tabelle mit Tabellenzugriff

  • Claros users-Tabelle enthält Namen, E-Mails, Kreditscores und Kreditband
  • SELECT für die Analystenrolle gibt alle Spalten frei
  • Kampagnenanalysten brauchen keine Roh-Kreditscores
  • Tabellenzugriff kann das nicht unterscheiden
Snowflake-Management, Governance & Zusammenarbeit

Was ist Spaltensicherheit?

  • Die Spalte bleibt im Ergebnis – nur der Wert ändert sich
  • Privilegierte Rollen sehen echte Werte; andere sehen maskierte Werte
  • Masking erfolgt zur Abfragezeit anhand der Rolle = dynamisches Datenmasking

Spaltensicherheit

Snowflake-Management, Governance & Zusammenarbeit

Dynamisches Datenmasking

Diagramm mit zwei Tabellen, eine mit dynamischem Datenmasking, eine ohne

Snowflake-Management, Governance & Zusammenarbeit

Masking-Policy erstellen und anwenden

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 gibt die aktive Primärrolle zurück
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Snowflake-Management, Governance & Zusammenarbeit

Externe Tokenisierung

  • Alternative zum dynamischen Datenmasking
  • Erfordert einen externen Tokenisierungsanbieter und eine External Function
  • Sensible Werte werden durch systemübergreifend konsistente Tokens ersetzt
  • Nützlich, wenn dasselbe Token auch außerhalb von Snowflake erkennbar sein muss

Externe Tokenisierung

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Snowflake-Management, Governance & Zusammenarbeit

Was ist Zeilensicherheit?

Zwei Tabellen zeigen, dass ein Analyst nur bestimmte Zeilen sieht

Snowflake-Management, Governance & Zusammenarbeit

So funktionieren Row-Access-Policies

Diagramm: Eine Abfrage von US_ANALYST durchläuft eine Row-Access-Policy auf der users-Tabelle; nur US-Zeilen werden zurückgegeben; EU_ANALYST erhält bei gleicher Abfrage nur EU-Zeilen

  • Policy prüft die abfragende Rolle und wendet einen Filter an
Snowflake-Management, Governance & Zusammenarbeit

Row-Access-Policy erstellen und anwenden

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-Management, Governance & Zusammenarbeit

Datenmasking und Row-Access-Policies zusammen nutzen

Dynamisches Datenmasking und Row-Access-Policies

Snowflake-Management, Governance & Zusammenarbeit

Lass uns üben!

Snowflake-Management, Governance & Zusammenarbeit

Preparing Video For Download...