Lire l'article
Nous allons nous intéresser aujourd’hui à la RLS Dynamique.
La RLS (Row Level Security) est une fonctionnalité de Power BI qui permet de restreindre l’accès aux données en fonction des utilisateurs. On parle aussi de rôles. Il est possible de partager un rapport avec un accès limité aux données.
Contrairement à la RLS statique qui applique des règles de sécurité fixes pour chaque utilisateur, la RLS dynamique permet de modifier les règles de sécurité en temps réel en fonction de l'utilisateur.
La RLS Dynamique va donc vous permettre d’appliquer des filtres de sécurité en fonction de l’utilisateur.
Voici un tutoriel qui va vous aider à comprendre la RLS Dynamique.
Nous allons partir d’une base de données très simple. Il s’agit d’un fichier Excel qui comporte 3 feuillets.
Dans le premier feuillet il y a une colonne « adresse mail » et une colonne correspondant à son propriétaire.
Dans le deuxième feuillet il y a une colonne Zone et une colonne qui donne le nom de la personne qui est rattaché à la Zone.
Dans le troisième feuillet on retrouve la colonne Zone, une colonne Pays et une colonne chiffre d’affaires.
À la vue de ces données on comprend que Jean-Baptiste a accès à toutes les zones mais Augustin n’a accès que à la zone « Europe ». Ainsi Augustin ne doit pas voir le chiffre d’affaires des pays compris dans la zone « Europe ».
On intègre les données dans Power BI Desktop.
On construit le modèle de données comme ci-après.
Les tables « Utilisateur » et « Zone » sont reliées par leurs colonnes « Nom_Utilisateur » avec une relation d’un à plusieurs. En effet un utilisateur peut accéder à plusieurs zones.
Les tables « Zone » et « Dim_Zone » sont reliées par leurs colonnes « Zone » avec une relation d’un à plusieurs avec un filtre paramétré dans les deux sens. La table « Dim_Zone » a été créée en DAX et ne contient que des valeurs distinctes et uniques. Vous pouvez voir la formule utilisée plus bas.
Si nous avions relié les deux tables « Zone » et « CA » directement par leurs colonnes « Zone » nous aurions eu une relation de plusieurs à plusieurs qui n’est pas forcément optimale pour assurer un bon niveau de sécurité sur les données. La création d’une table de dimension contenant une colonne « Zone » avec des valeurs distinctes et uniques va jouer un rôle d’intermédiaire entre les tables « Zones » et « CA » afin de filtrer correctement les données.
Le lien bidirectionnel entre « Zone » et « Dim_Zone » est nécessaire car la RLS va partir de la table « Utilisateur » et parcourir toutes les tables jusqu’à la table « CA ». Donc les flèches de filtre doivent donc être correctement paramétrées dans le bon sens pour que la RLS fonctionne correctement.
Voici les données contenues dans la table « Dim_Zone ».
Voilà le rapport que l’on construit. Quand celui-ci sera partagé, l’utilisateur final ne verra que les données du rôle qui lui aura été assigné.
Voici le rôle à construire.
Pour rappel, la construction du rôle se situe dans le menu « Modélisation » dans la barre de menus en haut de l’écran. Une fois dans le menu, cliquez sur « gérer les rôles ».
Comme dit précédemment le rôle va être construit sur la table « Utilisateur ». Avec ce rôle, Power BI va filtrer les données en fonction de l’adresse mail de l’utilisateur. Power BI va s’appuyer sur le « UserPrincipalName » de l’utilisateur. Il s’agit d’un identifiant unique pour chaque utilisateur dans un domaine Active Directory. C'est généralement de la forme "username@domain.com".
Il existe également « UserName » qui est simplement le nom d'utilisateur utilisé par l'utilisateur pour se connecter à Power BI. Il peut être différent de l’adresse mail et peut-être configuré pour être n'importe quoi tant qu'il est unique pour l'organisation.
UserPrincipalName est un identifiant unique pour chaque utilisateur dans un environnement Active Directory, tandis que UserName est le nom d'utilisateur utilisé pour se connecter à Power BI.
Le rapport publié, on le retrouve dans notre espace de travail sur Power BI service.
Au niveau de jeux de données, on clique sur les 3 petits points et on sélectionne « Sécurité ».
On renseigne l’adresse mail de l’utilisateur ou du groupe d’utilisateurs, on clique sur ajouter puis on enregistre. Nous prendrons dans cet exemple l’adresse mail d’Augustin.
Au niveau de l’espace de travail dans l’onglet « Accès » dans le bandeau de menu en haut on renseigne l’adresse mail de l’utilisateur ou du groupe d’utilisateurs, on renseigne un niveau d’accès en « visionneur » puis on clique sur « Ajouter ». Dans cet exemple nous continuons avec l’adresse d’Augustin.
Allons voir maintenant sur la licence d’Augustin ce qu’il voit en accédant à notre espace de travail que l’on vient de lui partager.
On constate que les seules données du rapport qu’il voit sont celles que le rôle lui permet. On constate également que la RLS Dynamique n’est pas que la construction d’un ou plusieurs rôles. C’est aussi la combinaison d’un ensemble de tables les unes avec les autres qui vont permettre de filtrer des données différentes selon l’utilisateur.