Säkerhet på kolumn- och radnivå

Snowflake-hantering, styrning och samarbete

Emily Melhuish

Technical Curriculum Developer, Snowflake

Problemet med åtkomstkontroll på tabellnivå

Användartabell med tabellbehörighet

  • Claros användartabell innehåller namn, e-post, kreditpoäng och kreditklass
  • Att bevilja SELECT till analytikerrollen exponerar alla kolumner
  • Kampanjanalytiker behöver inte råa kreditpoäng
  • Åtkomstkontroll på tabellnivå kan inte göra den distinktionen
Snowflake-hantering, styrning och samarbete

Vad är säkerhet på kolumnnivå?

  • Kolumnen finns kvar i resultaten – endast värdet ändras
  • Privilegierade roller ser verkliga värden; oprivilegierade roller ser maskerade värden
  • Maskering sker vid frågetillfället baserat på den frågande rollen = dynamisk datamaskering

column_security_v2.png

Snowflake-hantering, styrning och samarbete

Dynamisk datamaskering

Diagram som visar två tabeller, en med dynamisk datamaskering och en utan

Snowflake-hantering, styrning och samarbete

Skapa och tillämpa en maskeringspolicy

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 returnerar den aktiva primära rollen
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Snowflake-hantering, styrning och samarbete

Extern tokenisering

  • Ett alternativ till dynamisk datamaskering
  • Kräver en tredjepartsleverantör för tokenisering och en extern funktion
  • Känsliga värden ersätts med tokens som är konsekventa mellan system
  • Användbart när samma token måste kännas igen utanför Snowflake

external_tokenization_v2.png

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Snowflake-hantering, styrning och samarbete

Vad är säkerhet på radnivå?

Två tabeller som visar hur en analytiker endast kan se vissa rader

Snowflake-hantering, styrning och samarbete

Hur radåtkomstpolicyer fungerar

Diagram som visar en fråga från US_ANALYST som passerar genom en radåtkomstpolicy på användartabellen, där endast US-rader returneras, och EU_ANALYST returnerar endast EU-rader från samma fråga

  • Policyn utvärderar den frågande rollen och tillämpar ett filter
Snowflake-hantering, styrning och samarbete

Skapa och tillämpa en radåtkomstpolicy

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-hantering, styrning och samarbete

Använda datamaskering och radåtkomstpolicyer tillsammans

Dynamisk datamaskering och radåtkomstpolicyer

Snowflake-hantering, styrning och samarbete

Lass uns üben!

Snowflake-hantering, styrning och samarbete

Preparing Video For Download...