Sécurité au niveau des colonnes et des lignes

Gestion, gouvernance et collaboration sur Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Limites de l’accès au niveau table

Table users avec contrôle d’accès à la table

  • La table users de Claro contient noms, e‑mails, scores et bandes de crédit
  • Accorder SELECT au rôle analyste expose toutes les colonnes
  • Les analystes marketing n’ont pas besoin des scores bruts
  • Le contrôle au niveau table ne peut pas distinguer cela
Gestion, gouvernance et collaboration sur Snowflake

Qu’est-ce que la sécurité au niveau des colonnes ?

  • La colonne reste dans les résultats ; seule la valeur change
  • Rôles privilégiés : vraies valeurs ; autres rôles : valeurs masquées
  • Masquage à l’exécution selon le rôle de la requête = masquage dynamique

Sécurité au niveau des colonnes

Gestion, gouvernance et collaboration sur Snowflake

Masquage dynamique des données

Schéma montrant deux tables, l’une avec masquage dynamique et l’autre sans

Gestion, gouvernance et collaboration sur Snowflake

Créer et appliquer une politique de masquage

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 renvoie le rôle primaire actif
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Gestion, gouvernance et collaboration sur Snowflake

Tokenisation externe

  • Alternative au masquage dynamique des données
  • Nécessite un fournisseur tiers de tokenisation et une fonction externe
  • Valeurs sensibles remplacées par des jetons cohérents entre systèmes
  • Utile si le même jeton doit être reconnu hors de Snowflake

Tokenisation externe

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Gestion, gouvernance et collaboration sur Snowflake

Qu’est-ce que la sécurité au niveau des lignes ?

Deux tables montrant qu’un analyste ne voit que certaines lignes

Gestion, gouvernance et collaboration sur Snowflake

Fonctionnement des politiques d’accès aux lignes

Schéma montrant une requête de US_ANALYST passant par une politique d’accès aux lignes sur la table users, ne renvoyant que les lignes US, et EU_ANALYST ne renvoyant que les lignes EU avec la même requête

  • La politique évalue le rôle de la requête et applique un filtre
Gestion, gouvernance et collaboration sur Snowflake

Créer et appliquer une politique d’accès aux lignes

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);
Gestion, gouvernance et collaboration sur Snowflake

Combiner masquage des données et politiques d’accès aux lignes

Masquage dynamique et politiques d’accès aux lignes

Gestion, gouvernance et collaboration sur Snowflake

Passons à la pratique !

Gestion, gouvernance et collaboration sur Snowflake

Preparing Video For Download...