Comprendre le masquage dynamique des données

Cette rubrique fournit une présentation générale de la fonctionnalité de masquage dynamique des données.

Qu’est-ce que le masquage dynamique des données ?

Le masquage dynamique des données est une fonctionnalité de sécurité au niveau des colonnes qui utilise des politiques de masquage pour masquer sélectivement les données en texte brut dans les tables et afficher les colonnes au moment de la requête.

Dans Snowflake, les politiques de masquage sont des objets de niveau schéma, ce qui signifie qu’une base de données et un schéma doivent exister dans Snowflake avant qu’une politique de masquage puisse être appliquée à une colonne. Actuellement, Snowflake prend en charge l’utilisation du masquage dynamique des données sur les tableaux et les vues.

Au moment de l’exécution de la requête, la politique de masquage est appliquée à la colonne à chaque emplacement où la colonne apparaît. Selon les conditions de la politique de masquage, le contexte d’exécution SQL et la hiérarchie des rôles, les opérateurs de requête Snowflake peuvent voir la valeur en texte brut, une valeur partiellement masquée ou une valeur entièrement masquée.

Pour plus de détails sur le fonctionnement des politiques de masquage, y compris le comportement d’exécution des requêtes, la création d’une politique, l’utilisation avec des tables et des vues et les approches de gestion utilisant des politiques de masquage, voir : Comprendre la sécurité au niveau des colonnes.

Pour plus de détails sur les effets du contexte d’exécution SQL et de la hiérarchie des rôles, voir Rubriques de sécurité avancées au niveau des colonnes.

Avantages du masquage dynamique des données

Ce qui suit résume certains des principaux avantages du masquage dynamique des données.

Facilité d’utilisation

Vous pouvez écrire une politique une fois et la faire appliquer à des milliers de colonnes dans les bases de données et les schémas.

Administration des données et SoD

Un responsable de la sécurité ou de la confidentialité décide quelles colonnes protéger, et non le propriétaire de l’objet. Les politiques de masquage sont faciles à gérer et prennent en charge des modèles d’administration centralisés et décentralisés.

Autorisation et gouvernance des données

Accès aux données contextuelles par rôle ou droits personnalisés.

Prend en charge la gouvernance des données telle que la mise en œuvre par des responsables de la sécurité ou de la confidentialité et peut interdire aux utilisateurs ayant les privilèges adéquats et le rôle ACCOUNTADMIN ou SECURITYADMIN de visualiser inutilement les données.

Partage de données

Masquez facilement les données avant de les partager.

Gestion du changement

Modifiez facilement le contenu de la politique de masquage sans avoir à réappliquer la politique de masquage à des milliers de colonnes.

Pour une comparaison des avantages entre le masquage dynamique des données et la tokenisation externe, voir : Avantages de la sécurité au niveau de la colonne.

Limitations du masquage dynamique des données

Pour une vue d’ensemble des limitations, voir Limitations de sécurité au niveau de la colonne.

Privilèges de masquage dynamique des données

Le tableau suivant résume les privilèges liés au masquage dynamique des données.

Privilège

Utilisation

APPLY

Permet d’appliquer des opérations de définition/annulation de politiques pour la politique de masquage.

OWNERSHIP

Transfère la propriété d’une politique de masquage, qui accorde un contrôle total sur la politique de masquage. Nécessaire pour modifier la plupart des propriétés d’une politique de masquage.

Note

Des opérations sur une politique de masquage nécessitent également le privilège USAGE sur la base de données et le schéma parents.

Masquage dynamique des données - DDL

Snowflake fournit l’ensemble de commandes suivant pour gérer les politiques de masquage dynamique des données.

Audit du masquage dynamique des données

Snowflake enregistre l’exécution de la requête d’origine par l’utilisateur sur la page Historique (dans l’interface Web). La requête se trouve dans la colonne SQL Text.

Les noms de politique de masquage utilisés dans une requête spécifique se trouvent dans le profil de requête.

Actuellement, l’historique des requêtes est spécifique à la vue ACCOUNT_USAGE QUERY_HISTORY uniquement. Dans cette vue, la colonne Query Text contient le texte de l’instruction SQL. Les noms de politique de masquage ne sont pas inclus dans la vue QUERY_HISTORY.

Dépannage du masquage dynamique des données

Vous pouvez utiliser des messages d’erreur pour résoudre les problèmes de politiques de masquage.

Messages d’erreur

Le tableau suivant décrit les messages d’erreur que Snowflake peut renvoyer lors de l’utilisation de politiques de masquage.

Comportement

Message d’erreur

Action de dépannage

Impossible d’appliquer une politique de masquage à une fonctionnalité Snowflake.

FAILURE : fonctionnalité non prise en charge CREATE ON MASKING POLICY COLUMN

Les politiques de masquage ne sont actuellement pas applicables à cette fonctionnalité.

Un rôle actif ne peut pas créer ou remplacer une politique de masquage.

FAILURE : erreur de contrôle d’accès SQL : privilèges insuffisants pour opérer sur le compte <nom_compte>

Accordez le privilège CREATE MASKING POLICY au rôle spécifié à l’aide de grant create masking policy on account to role <role_name>; . Vérifiez que le rôle dispose du privilège à l’aide de show grants to role <role_name> et réessayez l’instruction de masquage CREATE OR REPLACE.

Un rôle donné ne peut pas joindre une politique de masquage à une table.

FAILURE : erreur de compilation SQL : la base de données <nom_base_de_données> n’existe pas ou n’est pas autorisée.

Accordez le privilège APPLY MASKING POLICY au rôle à l’aide de grant apply masking policy on account to role <role_name>;

Un rôle donné qui ne possède pas de politique de masquage sur une table essaie d’appliquer une politique de masquage sur une table qu’il peut utiliser.

FAILURE : erreur de compilation SQL : la politique de masquage <nom_politique> n’existe pas ou n’est pas autorisée.

Accordez l’utilisation du rôle donné sur la politique de masquage à l’aide de grant apply on masking policy <policy_name> to role sysadmin;

Impossible de détruire ou de supprimer une politique à l’aide de drop masking policy <policy_name>;

FAILURE : erreur de compilation SQL : la politique <nom_politique> ne peut pas être détruite/remplacée car elle est associée à une ou plusieurs entités.

Utilisez d’abord une instruction ALTER Table/View MODIFY COLUMN pour UNSET la politique, puis réessayez l’instruction DROP.

La restauration d’une table détruite produit une erreur de politique de masquage.

FAILURE : erreur d’exécution SQL : la colonne <nom_colonne> est déjà attachée à une politique de masquage qui n’existe pas. Veuillez contacter l’administrateur de la politique.

Désactivez la politique de masquage actuellement attachée avec une instruction ALTER Table/View MODIFY COLUMN, puis appliquez à nouveau la politique de masquage à la colonne avec une instruction CREATE OR REPLACE.

Impossible d’appliquer une politique de masquage à une colonne spécifique, mais la politique de masquage peut être appliquée à une autre colonne.

FAILURE : la colonne spécifiée est déjà attachée à une autre politique de masquage. Une colonne ne peut pas être attachée à plusieurs politiques de masquage. Veuillez détruire l’association actuelle afin d’attacher une nouvelle politique de masquage.

Décidez quelle politique de masquage doit s’appliquer à la colonne, mettez à jour et réessayez.

La mise à jour d’une politique avec une instruction ALTER échoue.

FAILURE : erreur de compilation SQL : la politique de masquage <nom_politique> n’existe pas ou n’est pas autorisée.

Vérifiez que le nom de politique dans la commande ALTER correspond à une politique existante en exécutant des politiques de masquage d’affichage ;

Le rôle de propriétaire de table clonée ne peut pas annuler une politique de masquage.

FAILURE : erreur de contrôle d’accès SQL : privilèges insuffisants pour effectuer des opérations sur ALTER TABLE UNSET MASKING POLICY “{1}”

Accordez le privilège APPLY au rôle de cloneur de table spécifié à l’aide de grant apply on masking policy ssn_mask to role <role_name>; . Vérifiez que le rôle de cloneur de table dispose du privilège à l’aide de show grants to role table_cloner_role; et réessayez l’instruction ALTER.

La mise à jour d’une politique à l’aide de IF EXISTS renvoie un résultat réussi mais ne met pas à jour la politique.

Aucun message d’erreur renvoyé ; Snowflake renvoie l’instruction exécutée avec succès.

Supprimez IF EXISTS de l’instruction ALTER et réessayez.

Lors de la création ou du remplacement d’une politique de masquage par CASE, les types de données ne correspondent pas (par exemple (chaîne VAL) -> renvoie un nombre).

FAILURE : erreur de compilation SQL : l’argument de fonction de politique de masquage et le type de renvoi ne correspondent pas.

Mettez à jour la politique de masquage à l’aide de CASE avec les types de données correspondants à l’aide d’une instruction CREATE OR REPLACE ou d’une instruction ALTER MASKING POLICY.

Appliquez une politique de masquage à une colonne virtuelle.

FAILURE : erreur de compilation SQL : la politique de masquage ne peut pas être attachée à une colonne VIRTUAL_COLUMN.

Appliquez la politique de masquage aux colonnes de la table source.

Appliquez une politique de masquage à une vue matérialisée.

FAILURE : erreur de compilation SQL : ligne d’erreur de syntaxe <number> à la position <number> “modifier” inattendu. . FAILURE : erreur de compilation SQL : ligne d’erreur <number> à la position <number> identificateur non valide “<character>”

Appliquez la politique de masquage aux colonnes de la table source.

Appliquez une politique de masquage à une colonne de table utilisée pour créer une vue matérialisée

FAILURE : erreur de compilation SQL : la politique de masquage ne peut pas être attachée à une colonne MATERIALIZED_VIEW.

Pour appliquer la politique de masquage à la colonne de la table, détruisez la vue matérialisée.

Chapitres suivants :