Sécurité au niveau des colonnes et des lignes

Gestion, gouvernance et collaboration avec 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, courriels, cotes de crédit et tranche de crédit
  • Accorder SELECT au rôle analyste expose toutes les colonnes
  • Les analystes de campagne n’ont pas besoin des cotes brutes
  • Le contrôle au niveau table ne peut pas faire cette distinction
Gestion, gouvernance et collaboration avec 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 voient les vraies valeurs; autres voient des valeurs masquées
  • Masquage à l’exécution selon le rôle de requête = masquage dynamique

Sécurité au niveau des colonnes

Gestion, gouvernance et collaboration avec Snowflake

Masquage dynamique des données

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

Gestion, gouvernance et collaboration avec Snowflake

Créer et appliquer une stratégie 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 retourne le rôle principal actif
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Gestion, gouvernance et collaboration avec Snowflake

Tokenisation externe

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

Schéma de tokenisation externe

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Gestion, gouvernance et collaboration avec 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 avec Snowflake

Fonctionnement des stratégies d’accès aux lignes

Schéma où une requête de US_ANALYST passe par une stratégie d’accès aux lignes sur la table users et ne retourne que les lignes US, et EU_ANALYST ne retourne que les lignes EU avec la même requête

  • La stratégie évalue le rôle de requête et applique un filtre
Gestion, gouvernance et collaboration avec Snowflake

Créer et appliquer une stratégie 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 avec Snowflake

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

Masquage dynamique et stratégies d’accès aux lignes

Gestion, gouvernance et collaboration avec Snowflake

Passons à la pratique !

Gestion, gouvernance et collaboration avec Snowflake

Preparing Video For Download...