Pourquoi réaliser un mask dynamique de données dans Power BI est une mauvaise idée
Une des questions techniques que l'on m'a posé la semaine passée était : "Comment faire pour afficher une valeur en clair ou avec un mask, en fonction des permissions de l'utilisateur ?"
L'idée est alors d'afficher pour un numéro de téléphone, "+336123456789" pour le userA, et "+33XXXXXXX789" pour le userB. Pour y répondre, il y a alors plusieurs solutions :
1. Le réaliser directement dans le modèle sémantique (tabular ou Power BI) :
2. Une autre solution serait de le réaliser au sein de la source de données en se basant sur le Dynamic Data Masking de SQL Server : Masquage dynamique des données - SQL Server | Microsoft Docs. Cette solution implique deux choses :
Recommandé par LinkedIn
"Quand vous configurez l’authentification unique pour la source de données, les requêtes s’exécutent sous l’identité de l’utilisateur qui interagit avec Power BI via l’expérience web ou des applications mobiles Power BI. Par conséquent, chaque utilisateur voit précisément dans la source de données sous-jacente les données pour lesquelles il dispose d’autorisations."
Ces deux possibilités sont alors une mauvaise idée d'un point de vue performance, et représentent une grande compléxité.
La meilleure solution à ce problème réside dans l'utilisation de l'Object Level Security dans Power BI ou au sein du modèle tabulaire : De fait, si l'utilisateur ne doit pas voir le contenu des numéros de téléphone, alors le fait de lui afficher une information avec un mask n'a aucune valeur ajoutée : il n'est pas nécessaire de l'afficher dans le rapport. Pour y arriver, Visual Studio ou Tabular Editor nous aideront, comme pour la Row Level Security, qui vise à réduire les lignes affichées au périmètre de l'utilisateur.
Via Tabular Editor :
Via Visual Studio :
NB : Cette solution implique que les modèles tabulaires ou Power BI soient développés avec une version supérieure à 1400. Analysis Services modèle tabulaire-sécurité au niveau de l’objet | Microsoft Docs