Implémenter le masquage dynamique des données
Dynamic Data Masking fonctionne en obfusquant les données afin de limiter son exposition. Les utilisateurs qui n’ont pas besoin de voir les données sensibles peuvent afficher la colonne qui contient les données, mais pas les données réelles proprement dites. Dynamic Data Masking fonctionne au niveau de la couche de présentation et les données non masquées sont toujours visibles par les utilisateurs privilégiés élevés.
Le masquage des données dynamiques présente l’avantage qu’il ne nécessite pas d’apporter de nombreuses modifications à l’application ou à la base de données. Vous pouvez le configurer via le portail Azure ou à l’aide de T-SQL comme suit.
Dans l’exemple, les colonnes PhoneNumber et EmailAddress sont masquées par l’utilisateur DDMDemo qui dispose SELECT uniquement d’autorisations sur la table. L’utilisateur est autorisé à voir les quatre derniers chiffres du numéro de téléphone comme masqué à l’aide d’une fonction partielle qui remplace tous les chiffres à l’exception des quatre derniers dans la colonne. Ce masquage est considéré comme une fonction personnalisée. En plus de T-SQL, si vous utilisez Azure SQL Database, vous pouvez créer des règles de masquage dynamique dans le portail Azure :
Vous pouvez accéder à l’écran pour ajouter une règle de masquage en accédant à votre base de données dans le portail Azure et en sélectionnant le masquage de données dynamiques dans la section Sécurité du panneau principal de votre base de données.
Le masquage de données dynamiques prend en charge les modèles de masquage suivants :
| Fonction de masquage | Définition | Exemple T-SQL |
|---|---|---|
| Par défaut | Masque entièrement les données dans la colonne sans exposer une partie des valeurs à l’utilisateur. L’utilisateur voit XXXX pour les valeurs de caîne, 0 pour les nombres et 01.01.1900 pour les valeurs de date. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
| Carte de crédit | Masque tous les caractères à l’exception des quatre derniers, ce qui permet aux utilisateurs d’afficher les quatre derniers chiffres. Ce masquage peut être utile pour les agents de service clientèle qui doivent afficher les quatre derniers chiffres d’un numéro de carte de crédit, mais qui n’ont pas besoin de voir l’intégralité du nombre. Les données sont affichées au format habituel d’un numéro de carte de crédit XXXX-XXXX-XXXX-1234. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
| Seules les premières lettres et le suffixe de domaine de fin ne sont pas masqués ; par exemple, «aXXX@XXXXXXX.com» | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
|
| Nombre | Ce format de masquage doit être utilisé sur les colonnes numériques. Il affiche un nombre aléatoire comme valeur masquée au lieu de la valeur réelle. Avec chaque requête, un nombre différent est affiché. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
| Chaîne personnalisée | Cette option permet de masquer le texte avec n’importe quelle valeur et d’afficher un nombre personnalisé de caractères à chaque extrémité de la valeur masquée. Si la longueur de la valeur masquée est inférieure ou égale au nombre de caractères que le masque spécifie doit être affiché, seuls les caractères masqués sont affichés. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
Pour permettre aux utilisateurs de récupérer des données non masquées à partir des colonnes pour lesquelles le masquage est défini, vous devez accorder explicitement l’autorisation UNMASK.
Notes
Il est possible d’identifier les données masquées à l’aide de l’inférence en fonction des résultats. Si vous utilisez le masquage des données, vous devez également limiter la capacité de l’utilisateur à exécuter des requêtes non planifiées.
Pour cette raison, il est vivement recommandé d’utiliser le masquage dynamique des données avec d’autres fonctionnalités de sécurité, telles que l’audit, le chiffrement, la sécurité au niveau des lignes afin de mieux protéger les données sensibles.
Cas d’utilisation
Le masquage des données est une fonctionnalité simple et légère, et il est idéal pour de nombreux scénarios, notamment :
Masquer les données des utilisateurs de l’application qui n’ont pas d’accès direct à la base de données.
Restreindre les informations privées à un groupe d’utilisateurs.
Fournir des données masquées aux fournisseurs externes, où vous devez protéger les informations sensibles tout en conservant les relations entre les éléments des données.
Exporter une copie de votre base de données de production vers un environnement inférieur à des fins de développement avec un utilisateur qui n’a pas d’autorisation
UNMASK. L’exportation des données est au format masqué.
Importer et exporter des données
La copie de données d’une colonne masquée dans une autre table à l’aide de SELECT INTO ou INSERT INTO a pour effet de masquer les données dans la table cible.
Lorsqu’un utilisateur sans UNMASK privilège exécute SQL Server Import and Export, le fichier de données exporté contient des données masquées et la base de données importée contient des données masquées inactifs.
Pour en savoir plus sur le fonctionnement du masquage des données dynamiques, consultez la page associée.