Masquage dynamique des données dans l’entrepôt de données Fabric

S’applique à :✅ point de terminaison analytique SQL et entrepôt dans Microsoft Fabric

Le masquage dynamique des données est une fonctionnalité de protection des données qui limite l’exposition des données sensibles en la masquant aux utilisateurs non privilégiés. Il simplifie la conception et le codage de la sécurité dans votre application.

Le masquage dynamique des données permet d’empêcher l’affichage non autorisé des données sensibles. Les administrateurs spécifient la quantité de données sensibles à révéler, avec un effet minimal sur la couche application. Vous pouvez configurer le masquage dynamique des données sur les champs de base de données désignés pour masquer les données sensibles dans les jeux de résultats de requêtes. Les données de la base de données ne sont pas modifiées, de sorte que les applications existantes peuvent continuer à fonctionner sans modification, car les règles de masquage sont appliquées aux résultats des requêtes. De nombreuses applications peuvent masquer des données sensibles sans modifier les requêtes existantes.

Le masquage dynamique des données fournit ces fonctionnalités :

  • Une stratégie de masquage des données centrale agit directement sur les champs sensibles de la base de données.
  • Les utilisateurs privilégiés ou les rôles peuvent être désignés pour accéder aux données sensibles.
  • Vous avez des options de masquage à choisir : fonctions de masquage complète et de masquage partiel, ainsi qu’un masque aléatoire pour les données numériques.
  • Des commandes Transact-SQL simples définissent et gèrent les masques.

Le masquage dynamique des données n’empêche pas les utilisateurs de base de données de se connecter directement à la base de données et d’exécuter des requêtes exhaustives qui exposent des éléments des données sensibles. Utilisez le masquage dynamique des données avec d’autres fonctionnalités de sécurité Fabric telles que la sécurité au niveau des colonnes et la sécurité au niveau des lignes pour protéger les données sensibles dans la base de données.

Fonctions de masquage des données dynamiques

Définissez une règle de masquage sur une colonne d’une table pour obfusquer les données de cette colonne. Quatre types de masques sont disponibles.

Fonction Description Exemples
Par défaut Masquage complet en fonction des types de données des champs désignés.

Pour les données de type chaîne (string), utilisez XXXX (ou moins) si la taille du champ est inférieure à 4 caractères (char, nchar, varchar, nvarchar, text, ntext).

Pour les données de type numérique, utilisez une valeur zéro (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

Pour les données de type date et heure, utilisez 1900-01-01 00:00:00.0000000 (date, datetime2, datetime, datetimeoffset, smalldatetime, time).

Pour les données de type binaire, utilisez un seul octet de valeur ASCII 0 (binary, varbinary, image).
Exemple de syntaxe de définition de colonne : Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Exemple de syntaxe « alter » : ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
E-mail Méthode de masquage qui révèle la première lettre d’une adresse e-mail et le suffixe constant « .com », sous la forme d’une adresse e-mail. aXXX@XXXX.com. Exemple de syntaxe de définition : Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Exemple de la syntaxe alter : ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Aléatoire Fonction de masquage aléatoire à utiliser sur tout type de données numérique pour masquer la valeur d’origine à l’aide d’une valeur aléatoire dans une plage spécifiée. Exemple de syntaxe de définition : Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Exemple de syntaxe « alter » : ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Chaîne personnalisée Méthode de masquage qui affiche les première et dernière lettres, et ajoute une chaîne de remplissage personnalisée au milieu. prefix,[padding],suffix

Si la valeur d’origine est trop courte pour occuper la totalité du masque, une partie du préfixe ou du suffixe n’est pas exposée.
Exemple de syntaxe de définition : FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Exemple de syntaxe alternative : ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Cela transforme un numéro de téléphone comme 555.123.1234 en 5XXXXXXX.

Autre exemple :

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

Cela transforme un numéro de téléphone comme 555.123.1234 en 555.1XXXXXXX.

Pour plus d’exemples, consultez Comment implémenter un masquage dynamique des données dans l’entrepôt de données Fabric.

Autorisations pour le masquage des données dynamiques

Dans Fabric Data Warehouse, les utilisateurs voient les données masquées lorsqu'ils interrogent des colonnes masquées s'ils ne sont pas membres des rôles Administrateur, Membre ou Contributeur dans l'espace de travail ou n'ont pas d'autorisations élevées sur l'entrepôt.

Le tableau suivant répertorie les autorisations requises pour chaque opération de masquage des données dynamiques :

Operation Autorisation requise
Créer une table avec des colonnes masquées CREATE TABLE et ALTER sur le schéma
Ajouter, remplacer ou supprimer un masque sur une colonne ALTER ANY MASK et ALTER sur la table
Afficher les données masquées SELECT sur la table
Afficher les données non masquées UNMASK sur la colonne ou CONTROL sur la base de données

Accorder ALTER ANY MASK à un responsable de la sécurité. Accordez UNMASK à un utilisateur pour permettre à cet utilisateur de récupérer des données non masquées à partir de colonnes masquées.

L’autorisation CONTROL sur la base de données inclut à la fois ALTER ANY MASK et UNMASK, de sorte que les utilisateurs disposant de CONTROL peuvent afficher des données non masquées. Les utilisateurs administratifs ou les rôles tels que l’administrateur, le membre ou le contributeur disposent CONTROL d’autorisations sur la base de données par conception et peuvent afficher les données non masquées par défaut. Les autorisations étendues sur le Warehouse comprennent l’autorisation CONTROL.

Considérations de sécurité : contournement du masquage à l’aide de techniques d’inférence ou de force brute

Le masquage dynamique des données simplifie le développement d’applications en limitant l’exposition des données dans un ensemble de requêtes prédéfinies que l’application utilise. Bien que le masquage dynamique des données puisse également empêcher l’exposition accidentelle de données sensibles lors de l’accès directement aux données, les utilisateurs non privilégiés disposant d’autorisations de requête peuvent utiliser des techniques pour déduire les données réelles.

Par exemple, un utilisateur autorisé à exécuter des requêtes sur l’entrepôt peut deviner des valeurs pour déduire des données masquées. Supposons que vous définissez un masque sur la [Employee].[Salary] colonne. L’utilisateur se connecte directement à la base de données et commence à deviner des valeurs, en déduit finalement la [Salary] valeur dans la Employees table. Ils exécutent une requête par intervalle sur la table Employees :

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

La requête retourne :

ID Nom Salaire
62543 Jane Doe 0
91245 John Smith 0

Même si la Salary colonne est masquée (les valeurs s’affichent comme 0), la WHERE clause confirme que les deux employés ont un salaire compris entre 99 9999 $ et 100 001 $. N’utilisez pas de masquage de données dynamiques seul pour sécuriser entièrement les données sensibles des utilisateurs disposant d’un accès aux requêtes au point de terminaison Warehouse ou SQL Analytics. Le masquage dynamique des données est approprié pour empêcher l’exposition accidentelle des données sensibles, mais il ne protège pas contre les intentions malveillantes pour déduire les données sous-jacentes.

Gérez correctement la sécurité au niveau de l’objet avec des autorisations granulaires SQL et suivez toujours le principe des privilèges minimum.

Étape suivante