Lire l'article
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.
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.
Par exemple, les commerciaux de la région parisienne ont seulement accès aux données de cette région.
Il existe 2 types de RLS : la RLS statique et la RLS dynamique.
Utilisez la RLS statique si :
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).
Utilisez la sécurité RLS dynamique si :
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.
Instructions pour configurer et tester la sécurité RLS dans Power BI :
5. Appliquer la logique de filtrage :
6. Vérifier la configuration :
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 :
3. Accéder à la gestion des rôles :
4. Créer un nouveau rôle :
5. Ajouter un filtre sur le champ utilisateur :
6. Appliquer la logique de filtrage :
8. Enregistrer et publier le rapport Power BI :
9. Accéder à l’espace de travail Power BI :
10. Gérer les rôles de sécurité :
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 !
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.
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 !
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 !
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" :
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 !
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é !
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 !