Le Guide Ultime sur la Sécurité des données sur Power BI avec la RLS, OLS, et PLS

22 novembre 2024

 

 

On peut faire de magnifiques modèles de données, champs sémantiques, entrepôts de données, datamarts, rapports et tableaux de bord sur Power BI…

Mais si on oublie l’aspect fondamental de la Business Intelligence qu’est la sécurité des données, on prend le risque d’exposer l’entreprise à des failles sécuritaires, notamment des fuites, qui peuvent avoir des conséquences désastreuses pour l’organisation. D’où la nécessité de mettre en place une politique de stratégie de sécurité des données, une gouvernance des données.

La RLS, l’OLS et la PLS sont des aspects fondamentaux de cette gouvernance des données sur Power BI.

 

I/ RLS

 

La RLS, Row-level Security ou encore la sécurité au niveau des lignes (SNL), est une fonctionnalité propre à Power BI qui permet de restreindre l’accès aux données pour un visionneur d’un rapport à l’aide d’un système de rôle.

On parle de sécurité au niveau des lignes car ce ne sont ni les pages (PLS, Page-level Security) ni les colonnes/tables (OLS, Object-level Security) qui sont masquées selon les rôles dans ce cas, mais bien les lignes des tables, les enregistrements, en somme.

Exemples de cas d’utilisation de la RLS :

  • RLS basée sur la localisation : On veut faire des rôles pour différentes régions pour que les données soient accessibles seulement pour les utilisateurs étant dans leur région respective (Continent/Pays/Région/Département/Ville…).

Par exemple, les commerciaux de la région parisienne ont seulement accès aux données de cette région.

  • RLS basée sur un département/service/business unit : Le département commercial n’a pas accès aux données du département RH.
  • RLS basée sur un employé (nom/mail) : Avoir accès qu’aux données pour lesquels on est responsable. Exemple : Je ne vois que les données de mes projets dans un rapport de gestion de projet.

 

Les 2 types de RLS

Il existe 2 types de RLS : la RLS statique et la RLS dynamique.

  • La RLS statique : Il s’agit de la RLS la plus simple des 2. Les accès aux données de manière rigide pour chaque rôle ou groupe d’utilisateurs. Cela signifie que les filtres de sécurité sont appliqués de manière prédéterminée et ne prennent pas en compte le contexte de l’utilisateur. Par exemple, pour le rôle « Île-de-France » avec un filtre de sécurité spécifique pour la région parisienne, tous les utilisateurs appartenant à ce rôle ne verront que les données liées à cette région, quel que soit le contexte d’utilisation.

 

  • La sécurité RLS dynamique permet d'ajuster les filtres d'accès en fonction du profil de l'utilisateur, en prenant en compte des variables telles que son rôle, son département ou d'autres informations de session. Ainsi, les droits d'accès sont modulés en temps réel selon les caractéristiques de l'utilisateur connecté. Par exemple, si un utilisateur se connecte en tant que gestionnaire d'une équipe dans une région spécifique, le filtre de sécurité appliqué ne lui permettra d'accéder qu'aux données liées à sa région, garantissant ainsi que chaque utilisateur voit uniquement les informations pertinentes pour lui.

Quand utiliser la RLS statique ?

 

Utilisez la RLS statique si :

  • Vous devez restreindre la visibilité des données pour un groupe d’utilisateurs spécifique qui nécessite le même niveau d'information (par exemple, une équipe de ventes régionale qui doit consulter les données de sa région).
  • Votre rapport compte peu d'utilisateurs et nécessite un nombre réduit de rôles.
  • La logique de sécurité de votre rapport est simple et générale (par exemple, par utilisateur, région ou entreprise).
  • Les exigences de sécurité des utilisateurs ne changent pas fréquemment (par exemple, les rôles).
  • Les utilisateurs ne sont pas ajoutés ou supprimés régulièrement.

Avantages : Facile à configurer et à mettre en œuvre avec une implication minimale de l'IT.

Inconvénients : Nécessite une maintenance importante si des mises à jour sont nécessaires, peu réutilisable et manuel.

La sécurité RLS dynamique est plus complexe et nécessite la définition de la logique dans le fichier PBIX et le modèle de données à l’aide de relations (explication plus détaillée à suivre).

 

Quand utiliser la RLS dynamique ?

 

Utilisez la sécurité RLS dynamique si :

 

  • Vous devez restreindre la visibilité des données pour un groupe d'utilisateurs spécifique qui nécessite différents niveaux d'information (par exemple, l'équipe de ventes régionale doit consulter les données pour ses territoires spécifiques).
  • Votre rapport comporte un grand nombre d'utilisateurs et nécessite de nombreux rôles.
  • Les exigences de sécurité des utilisateurs changent fréquemment (les rôles et les membres des rôles sont régulièrement modifiés).
  • La logique RLS dans le rapport est complexe.
  • Les utilisateurs sont ajoutés ou supprimés fréquemment.

Avantages : La solution est conçue pour être réutilisable, nécessite peu de maintenance et fonctionne de manière automatisée.

Inconvénients : Mise en place chronophage, nécessitant des tables de dimensions et une plus grande implication de l'IT.

 

 Comment mettre en place la RLS

 

Mettre en place la RLS statique

 

Instructions pour configurer et tester la sécurité RLS dans Power BI :

  1. Ouvrir le rapport Power BI :Ouvrez votre rapport Power BI.
  2. Accéder à la gestion des rôles :Sélectionnez Modélisation dans le ruban supérieur.
    Cliquez ensuite sur Gérer les rôles.3. Créer un rôle:Sélectionnez Créer et attribuez un nom au nouveau rôle (par exemple, « France », « Allemagne », « Italie »).
    4. Ajouter un filtre
    :
  • Sous Sélectionner des tables, sélectionnez la table pour laquelle vous voulez filtrer des lignes (Dim_pays au hasard 😉).
  • Cliquez sur Nouveau.

          5. Appliquer la logique de filtrage :

  • Ajoutez la logique que vous souhaitez appliquer au champ (par exemple, Pays = France, Pays = Allemagne, Pays = Italie).
  • Cliquez sur le coche (Vérifier l'expression DAX).
  • Ensuite, cliquez sur Enregistrer.
  • Notez que vous avez une option no-code. Voici 2 screens qui montrent la manière de faire pour l’option sans code et l’option DAX.

             6. Vérifier la configuration :

  • Sélectionnez l’onglet Modélisation puis cliquez sur Voir comme.• Choisissez le rôle que vous venez de configurer.
    • Cliquez sur OK et vérifiez que les données sont bien filtrées comme prévu.7. Enregistrer et publier le rapport Power BI :
  • Enregistrez votre rapport et publiez-le dans un espace de travail Power BI.
    8. Accéder à l'espace de travail Power BI :
  • Accédez à votre espace de travail Power BI9. Gérer la sécurité des rôles :
  • Dans l’espace de travail, à côté du modèle sémantique, cliquez sur les trois petits points (…).
  • Sélectionnez Sécurité.10. Ajouter des utilisateurs aux rôles :
  • Ajoutez les utilisateurs aux rôles que vous avez créés (« France », « Allemagne », « Italie »).
  • Cliquez sur Enregistrer.11. Tester les rôles de sécurité :
  • Sélectionnez les trois petits points (…) à côté du rôle.
  • Cliquez sur Tester comme rôle pour vérifier que la sécurité RLS fonctionne comme prévu.On constate qu'on a seulement les données liées à la France : ça fonctionne !

    Mettre en place la RLS dynamique

    Vous utiliserez une table de dimensions (par exemple, dim_utilisateur) pour identifier les lieux (ou régions) dont chaque responsable est chargé.

    L'avantage d'utiliser une table de dimensions est qu'elle reflétera toujours les données les plus récentes et ne nécessitera pas de modifications manuelles des rôles si elle est correctement mise à jour dans la source.

    Je vous invite à cliquer sur ce lien pour avoir la méthode guidée pas à pas : RLS dynamique. On a aussi réalisé une super vidéo sur le sujet : Voir la vidéo tuto sur la RLS dynamique. Je vous donne quand même les principales étapes pour faire la RLS dynamique ci-dessous.

    Instructions pour configurer et tester la sécurité RLS avec un filtre basé sur l'e-mail utilisateur dans Power BI :

     

    1. Importer la table de dimensions dans Power BI :

     

  • Importez votre table de dimensions dans le rapport Power BI.2. Créer une relation entre la table de dimensions et la table de faits :
  • Établissez une relation entre la table de dimensions et la table de faits (assurez-vous que la table de dimensions filtre correctement la table de faits).

    3. Accéder à la gestion des rôles : 

  • Dans le ruban supérieur, sélectionnez Modélisation puis cliquez sur Gérer les rôles.

    4. Créer un nouveau rôle :

  • Cliquez sur Créer et donnez un nom à votre rôle (par exemple, « Utilisateurs »).

    5. Ajouter un filtre sur le champ utilisateur :

  • Sous Sélectionner des tables, cliquez sur la table à filtrer.
  • Cliquez sur Nouveau et choisissez le champ à filtrer (par exemple, mail_utilisateur).

    6. Appliquer la logique de filtrage : 

  • Ajoutez la logique de filtrage suivante :
    mail_utilisateur = USERPRINCIPALNAME().
  •  Cliquez sur la coche (Vérifier l'expression DAX).
  • Cliquez sur Enregistrer.7. Vérifier la configuration : 
  • Sélectionnez Modélisation, puis cliquez sur Voir comme.
  • Choisissez le rôle que vous venez de créer.
  • Cliquez sur OK et vérifiez que les données sont filtrées correctement en fonction de l’utilisateur.

    8. Enregistrer et publier le rapport Power BI :

  • Enregistrez votre rapport Power BI.
  • Publiez-le dans un espace de travail Power BI.

    9. Accéder à l’espace de travail Power BI :

  • Allez dans votre espace de travail Power BI.

    10. Gérer les rôles de sécurité :

  • A côté du modèle sémantique, cliquez sur les trois petits points (…) .
  • Sélectionnez Sécurité


     11. Ajouter des utilisateurs au rôle :

  • Ajoutez les utilisateurs au rôle « Utilisateurs » que vous avez créé.
  • Cliquez sur Enregistrer.

    Configuration et modification de la RLS directement dans l'espace de travail de Power BI Service

    Microsoft a récemment publié une mise à jour qui permet à ceux ayant un accès de type Contributeur, Membre ou Administrateur de modifier le modèle de données d'un jeu de données Power BI dans le cloud (Power BI Service). Avant cette mise à jour, les développeurs devaient soit retélécharger le fichier PBIX, soit utiliser un outil tiers comme Tabular Editor.

    Cette fonctionnalité doit être activée dans les paramètres de l’espace de travail.
    Ouvrez la page Général des paramètres de l’espace de travail et assurez-vous que la case à côté de « Les utilisateurs peuvent modifier les modèles de données dans Power BI » sous Paramètres du modèle de données est cochée. Voici comment faire pas à pas.

    1. Cliquez sur Paramètres d’espace de travail à droite dans votre espace de travail et cochez la case "Les utilisateurs peuvent modifier les modèles de données dans Power BI" dans  Paramètres du modèle de données après avoir cliqué sur Général dans Power BI à gauche.

    2. Cliquez sur Modifier en haut à droite.

    3. Cliquez sur le 4ème onglet :  Ouvrir le modèle de données.

    4. Vous n’avez plus qu’à reproduire les étapes citées précédemment dans cet article après avoir cliqué sur Gérer les rôles dans l’onglet Accueil.

     

    Attention : Toutes les modifications apportées lors de l'édition du modèle de données dans Power BI Service sont automatiquement enregistrées. Utilisez cette fonctionnalité avec prudence !

    II/ OLS

    La sécurité au niveau des objets (SNO ou plus couramment OLS, Object-level Security) est une autre fonctionnalité de sécurité de Power BI qui permet de contrôler l’accès aux différents objets d’un rapport. Pour rappel, les objets sont les visualisations, les onglets et les mesures d’un rapport. Avec l’OLS, vous pouvez spécifier quels sont les utilisateurs qui peuvent voir ou modifier certains objets.

    Comment mettre en place l’OLS

    1. Installez Tabular Editor et redémarrez Power BI : Tabular 3.xx (payant)  ou Tabular 2.xx (gratuit, donc idéal si vous êtes un raton comme moi). Voici le lien pour Tabular 2 : Télécharger la dernière version de Tabular Editor 2.
    Pour Tabular 3 : https://tabulareditor.com/.

    2. Cliquez sur Tabular Editor dans l’onglet Outils externes.

     


    3. Cliquez sur Tabular Editor dans l’onglet Outils externes.

     

    4. Enregistrer.

    5. Republiez votre rapport dans l’espace de travail souhaité sur Power BI service et attribuez les utilisateurs au rôle.

    Maintenant les utilisateurs ayant le rôle France n’ont plus accès à la table Infomax et donc aux visuels faisant appel à cette table.

    Les données de la table de fait en question Infomax sont inaccessibles au niveau des visuels.
    On voit bien que ça fonctionne !

    III/ PLS

     

    Il serait intéressant de restreindre l’accès aux pages contenant les données du département RH. Effectivement, il est évident que ces données ne devraient pas tomber entre les mains de n’importe quel département dans l’entreprise. Il n’est pas souhaitable que tous les employés commencent à sortir leur torche pour analyser les différences de salaire entre eux.

    D’où l’intérêt de la mise en place d’une PLS (Page-level Security et non Position latérale de sécurité hein).

    Bien que Power BI ne dispose pas d'une fonctionnalité native de sécurité au niveau des pages, vous pouvez obtenir cet effet en utilisant une combinaison de sécurité au niveau des lignes (RLS), de segments (filtres) et de boutons de navigation. Voyons comment faire !

     

    Comment mettre en place la PLS

    1. Création d'une table de sécurité

    Nous devons créer une table appelée Security avec une colonne nommée Utilisateur contenant l'ID de messagerie de tous les utilisateurs et une autre colonne Page contenant le nom des pages auxquelles cet utilisateur doit avoir accès. Ensuite, chargez cette table dans votre modèle Power BI.

    2. Créer des rôles utilisateurs

    Ensuite, créez des rôles pour gérer l'accès au niveau des pages. Allez dans l'onglet Modélisation et sélectionnez Gérer les rôles. Cliquez sur Créer, puis nommez le rôle Sécurité Page. Appliquez un filtre à la table Securite. Dans cet exemple, ajoutez un filtre pour la colonne Utilisateur et implémentez la sécurité au niveau des lignes dans la table Securite en utilisant la fonction DAX USERPRINCIPALNAME(). Cette configuration garantit que les utilisateurs ne peuvent voir que les données correspondant à leur rôle assigné.

    3. Créer un sélecteur (Slicer) et un bouton de navigation

    Pour faciliter la navigation, créez une mesure nommée Navigation qui capture la valeur sélectionnée dans le sélecteur de pages.

    Navigation = SELECTEDVALUE(Securite[Page])

    Ensuite, ajoutez un filtre (Segment) en utilisant la colonne Page de la table Securite. Placez une image ou un bouton à côté du filtre, comme un bouton flèche droite, et configurez-le pour exécuter une action de navigation entre les pages. Utilisez la mesure Navigation pour le formatage conditionnel afin de contrôler la visibilité du bouton.

    4. Masquer toutes les pages sauf la page d'accueil principale et ajouter un bouton "Retour" sur les pages masquées

     

    Définir la visibilité initiale des pages :

    Masquez toutes les pages sauf la page d'accueil principale pour garantir que seule la page d'accueil soit visible lorsque les utilisateurs accèdent au rapport pour la première fois.

    Ajouter un bouton "Retour" :

    • Sur chaque page masquée, insérez un bouton "Retour".

     

    • Allez dans l'onglet Insertion, sélectionnez Boutons, puis choisissez un style de bouton (par exemple, flèche Précédent).

     

    • Configurez l'action du bouton en activant Action et en définissant l'action sur Navigation de page, puis liez-le à la page d'accueil principale.

     

    Cela permettra aux utilisateurs de revenir facilement à la page principale en cliquant sur le bouton "Retour" depuis les pages masquées.

    5. Tester la configuration du point de vue du rôle

    Modélisation ->Voir comme

    Augustin ne devait avoir accès qu'à la page Influenceur_clé_par_pays.
    C'est le cas et on voit bien que la navigation entre la page principale et la page autorisée fonctionne !

    6. Publier et partager

    Publiez le rapport sur le service Power BI et partagez-le avec les utilisateurs respectifs, en vous assurant que les rôles sont correctement attribués.
    C'est comme ce qu'on a fait dans les étapes de la RLS et l'OLS : On va dans l'espace de travail, on cherche le modèle sémantique de notre rapport, puis Sécurité, puis on attribue le rôle aux personnes, on teste en cliquant sur les 3 petits points à côté du rôle et c'est fini !

    Limitations de la PLS :

    Absence de prise en charge native :

    Power BI ne propose pas de solution prête à l'emploi pour la sécurité au niveau des pages, ce qui nécessite une utilisation créative des fonctionnalités existantes. Somme toute, c’est du bricolage.

     

    Maintenance :

    La gestion de rapports complexes avec plusieurs rôles et signets peut devenir lourde, en particulier si la structure du rapport change fréquemment.

     

    Problèmes avec la fonctionnalité "Extraction" :

    La sécurité au niveau des pages ne fonctionne pas comme prévu lorsqu'on utilise la fonctionnalité "Extraction" dans le rapport.

     

    Accès via URL :

    Si un utilisateur reçoit l'URL d'une page masquée d'une autre personne, il peut accéder au contenu restreint.

     

    Expérience utilisateur :

    Cette approche peut ajouter des étapes supplémentaires de navigation pour les utilisateurs, ce qui peut affecter l'expérience utilisateur globale.

     

    Risques de sécurité :

    Si elle n'est pas correctement implémentée, des utilisateurs peuvent accéder à des pages ou des données restreintes. Il est crucial de s'assurer que toutes les pages sont correctement masquées et que les contrôles de navigation sont bien gérés pour maintenir la sécurité.

     

    Impact sur les performances :

    L'utilisation extensive des signets et de la navigation dynamique peut affecter les performances du rapport, surtout s'il contient de nombreux éléments interactifs ou de grands ensembles de données.

    La mise en œuvre de la PLS dans Power BI est essentielle pour les organisations qui doivent garantir la confidentialité des données et l'accès basé sur les rôles au sein d'un même rapport. Bien que cela nécessite une solution de contournement impliquant la sécurité au niveau des lignes, le filtre et la navigation dynamique, le résultat est une expérience de reporting personnalisée et sécurisée pour vos utilisateurs. Bref, on espère quand même que Microsoft va ajouter cette fonctionnalité !

    Conclusion

    Nous espérons que vous comprenez maintenant ce que sont la RLS, l’OLS et la PLS, pourquoi elles sont importantes et comment vous pouvez les mettre en œuvre de différentes manières. En tant que développeurs Power BI, nous sommes responsables de la protection des données sensibles et de garantir qu'elles sont utilisées de manière appropriée !

    Si vous avez besoin d'aide supplémentaire ou si vous êtes curieux d'en savoir plus sur l'optimisation de l'utilisation de Power BI, contactez notre équipe d'experts dès aujourd'hui pour obtenir de l'aide, des conseils et des bonnes pratiques !

     

Articles en relation

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram