Published on

July 15, 2015

Masquage dynamique des données dans SQL Server 2016

Avez-vous déjà été sur un site web où vos informations personnelles, telles que votre numéro de sécurité sociale ou votre numéro de carte de crédit, sont affichées en clair pour tout le monde ? Il peut être assez préoccupant d’avoir vos données sensibles exposées de cette manière. Mais que se passerait-il s’il existait un moyen de masquer automatiquement vos données, de sorte qu’elles ne soient pas visibles par des utilisateurs non autorisés ?

Dans SQL Server 2016, une nouvelle fonctionnalité appelée Masquage dynamique des données a été introduite pour répondre à cette préoccupation de sécurité. Avec le Masquage dynamique des données, vous pouvez masquer des données sensibles dans la base de données, en veillant à ce qu’elles ne soient pas affichées en clair lorsqu’elles sont interrogées.

Pour activer le Masquage dynamique des données, vous devez activer quelques indicateurs de trace. Par exemple :

DBCC TRACEON (209, 219, -1)

Une fois activé, vous pouvez commencer à travailler avec le Masquage dynamique des données. SQL Server propose trois types de masques par défaut :

  • Par défaut : Masque les types de données Nchar et Nvarchar, remplaçant les données par “XXXX” pour les champs de type char et une valeur nulle pour les types de données numériques.
  • Email : Masque les adresses e-mail, ne montrant que la première lettre et le domaine.
  • Chaîne : Vous permet de masquer des chaînes avec votre propre chaîne de masquage au milieu.

Pour illustrer le fonctionnement du Masquage dynamique des données, créons une table et insérons des données :

CREATE TABLE [dbo].[Client] (
    [ClientID] int identity(1, 1) not null,
    [Firstname] nvarchar(50) null,
    [Lastname] nvarchar(50) null,
    [Birthdate] datetime null,
    [Email] nvarchar(128) null,
    [PhoneNumber] nvarchar(50) null,
    [Birthplace] nvarchar(50) null,
    [SocialSecurityNumber] nvarchar(12) null
)

INSERT INTO [dbo].[Client] (Firstname, Lastname, Birthdate, Email, PhoneNumber, SocialSecurityNumber, Birthplace)
VALUES ('Kenneth', 'Nielsen', '1974-05-19', 'Kenneth@funkylab.com', '+45-12345678', '1905741234', 'Copenhagen'),
       ('Peter', 'Nielsen', '1953-05-19', 'Peter@funkylab.com', '+45-23456789', '1901531234', 'Stockholm'),
       ('Lotte', 'Nielsen', '1965-01-06', 'Lotte@funkylab.com', '+45-87654321', '01061234', 'Aalborg')

Maintenant que nous avons notre table et nos données configurées, nous pouvons activer le masquage des données sur les colonnes que nous souhaitons masquer :

ALTER TABLE [dbo].[Client] ALTER COLUMN [Email] ADD MASKED WITH (FUNCTION = 'EMAIL()')
ALTER TABLE [dbo].[Client] ALTER COLUMN [Birthdate] ADD MASKED WITH (FUNCTION = 'DEFAULT()')
ALTER TABLE [dbo].[Client] ALTER COLUMN [Firstname] ADD MASKED WITH (FUNCTION = 'PARTIAL(1, "XXXXXXXXXX", 0)')
ALTER TABLE [dbo].[Client] ALTER COLUMN [Lastname] ADD MASKED WITH (FUNCTION = 'DEFAULT()')
ALTER TABLE [dbo].[Client] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'PARTIAL(4, "XXXXXX", 2)')
ALTER TABLE [dbo].[Client] ALTER COLUMN [SocialSecurityNumber] ADD MASKED WITH (FUNCTION = 'PARTIAL(6, "XXXX", 0)')
ALTER TABLE [dbo].[Client] ALTER COLUMN [Birthplace] ADD MASKED WITH (FUNCTION = 'PARTIAL(1, "XXXXXXXXXX", 0)')

Maintenant, lorsque nous interrogeons les données de la table [dbo].[Client], nous constatons que les colonnes masquées affichent les valeurs masquées :

SELECT * FROM [dbo].[Client]

ClientID | Firstname | Lastname | Birthdate            | Email              | PhoneNumber   | Birthplace | SocialSecurityNumber
------------------------------------------------------------------------------------------------------------------------------
1        | KXXXXXXXXXX | xxxx     | 2000-01-01 00:00:00 | KXXX@XXXX.com      | +45-XXXXXX78  | CXXXXXXXXXX | 190574XXXX
2        | PXXXXXXXXXX | xxxx     | 2000-01-01 00:00:00 | PXXX@XXXX.com      | +45-XXXXXX89  | SXXXXXXXXXX | 190153XXXX
3        | LXXXXXXXXXX | xxxx     | 2000-01-01 00:00:00 | LXXX@XXXX.com      | +45-XXXXXX21  | AXXXXXXXXXX | 106123XXXX

Il est important de noter que les données sont toujours visibles lorsqu’elles sont interrogées par un utilisateur disposant des autorisations suffisantes, tel que le propriétaire de la base de données (DBO). Cependant, lorsque qu’un utilisateur disposant de permissions limitées, tel qu’un lecteur de données, interroge les données, les valeurs masquées seront affichées.

Le Masquage dynamique des données est une fonctionnalité puissante dans SQL Server 2016 qui aide à protéger les données sensibles en les masquant automatiquement lorsqu’elles sont interrogées. En mettant en œuvre le masquage des données, vous pouvez renforcer la sécurité de votre base de données et vous assurer que les informations sensibles restent cachées aux utilisateurs non autorisés.

Merci d’avoir lu ce billet de blog sur le Masquage dynamique des données dans SQL Server 2016. J’espère que vous l’avez trouvé informatif et utile. Restez à l’écoute pour plus d’articles sur SQL Server !

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.