Masquage dynamique des données SQL Server
Supposons que vous souhaitiez masquer partiellement ou complètement les noms des clients. Avec SQL Server, vous pouvez définir un masque dynamique avec les éléments suivants :
alter table demo.customers
alter column name
add masked with (function = 'partial(1,"XXXXXXX",0)')
Tout utilisateur (autre que le propriétaire de la table et des administrateurs de bases de données) verra alors les données comme masquées, par exemple :
execute as user="test_user"
select * from demo.customers
revert
id name country
1 AXXXXXXX AR
2 BXXXXXXX BE
3 CXXXXXXX CA
4 DXXXXXXX DK
5 EXXXXXXX ES
Vous souhaiterez peut-être exempter certains utilisateurs de ce type de masquage avec les éléments suivants :
grant unmask to test_user
Mais, c’est une autorisation à l’échelle de la base de données : cet utilisateur aura désormais un accès non masqué à tous données masquées.
Dans l’ensemble, c’est une fonctionnalité intéressante, et elle est assez facile à utiliser, mais elle a quelques limitations. Et si nous avions besoin d’un masque qui dépend de la valeur, ou de l’utilisateur ? Vous ne pouvez utiliser que quelques fonctions intégrées pour effectuer le masquage et vous ne pouvez pas utiliser vos propres fonctions.
À quel point est-ce sécurisé ?
Le masquage des données fonctionne bien si vos utilisateurs sont limités à un ensemble fixe de requêtes SQL, ce qui est souvent le cas. Mais, si les utilisateurs de la base de données peuvent créer leurs propres requêtes SQL, ils peuvent facilement contourner le masquage des données avec des requêtes telles que les suivantes :
execute as user="test_user"
select * from demo.customers where name like 'Br%'
revert
id name country
2 BXXXXXXX BE
Cela permet à l’utilisateur de déterminer que la deuxième lettre du nom du client 2 est « R. De toute évidence, il est assez facile d’étendre cela et de faire un tour final autour du masquage. Ce n’est pas grave : le masquage des données n’est pas censé être une mesure de sécurité au niveau de la base de données, il est simplement destiné à vous aider à rendre vos applications plus sécurisées.