Sécurité au niveau des lignes avec Power BI

La sécurité au niveau des lignes (RLS) limite l’accès aux données pour des utilisateurs spécifiques. Les filtres limitent les données au niveau de la ligne et vous définissez des filtres au sein des rôles. Dans le service Power BI, les utilisateurs ayant accès à un espace de travail peuvent accéder aux modèles sémantiques qui se trouvent dans cet espace de travail. SNL restreint l’accès aux données uniquement pour les utilisateurs disposant des autorisations Lecteur. Cela ne s’applique pas aux administrateurs, aux membres et aux contributeurs.

Pour implémenter RLS, suivez ce flux de travail de haut niveau :

  1. Define rôles et règles dans Power BI Desktop à l’aide d’expressions de filtre DAX.
  2. Publish le modèle sémantique et rapportez-le au service Power BI.
  3. Ajouter des membres aux rôles dans le service Power BI.
  4. Validez à l’aide de la fonctionnalité Test en tant que rôle pour confirmer que le filtrage des données fonctionne comme prévu.

Vous pouvez configurer RLS pour les modèles sémantiques importés dans Power BI Desktop ou le service Power BI. Vous pouvez également configurer la SNL sur les modèles sémantiques qui utilisent DirectQuery, comme SQL Server. Pour les connexions en direct à Analysis Services ou Azure Analysis Services, la sécurité au niveau des lignes est configurée dans le modèle, et non dans Power BI. L’option de sécurité ne s’affiche pas pour les modèles sémantiques de connexion active.

Remarque

Cet article traite spécifiquement des lignes RLS pour les modèles sémantiques Power BI. Pour la sécurité des données dans d’autres éléments Fabric, consultez Security dans Microsoft Fabric.

Remarque

Pour les modèles sémantiques Direct Lake dans Microsoft Fabric, RLS est pris en charge. Toutefois, si une requête DAX revient en mode DirectQuery en raison de fonctionnalités non prises en charge, les filtres RLS s’appliquent toujours, mais les caractéristiques de performances peuvent changer. Surveillez le comportement de secours des requêtes dans l’application de métriques de capacité Fabric.

Définir des rôles et des règles dans Power BI Desktop

Vous pouvez définir des rôles et des règles dans Power BI Desktop. Avec cet éditeur, vous pouvez basculer entre l’utilisation de l’interface déroulante par défaut et une interface DAX. Lorsque vous publiez sur Power BI, les définitions de rôles sont également publiées.

Pour définir des rôles de sécurité :

  1. Importez les données dans votre rapport Power BI Desktop ou configurez une connexion DirectQuery.

    Remarque

    Vous ne pouvez pas définir de rôles dans Power BI Desktop pour les connexions actives Analysis Services. Vous devez le faire dans le modèle Analysis Services.

  2. Sous l’onglet Modélisation , sélectionnez Gérer les rôles.

  3. Dans la fenêtre Gérer les rôles, sélectionnez Nouveau pour créer un rôle.

  4. Sous Rôles, fournissez un nom pour le rôle, puis sélectionnez Entrée.

    Remarque

    Vous ne pouvez pas définir un rôle avec une virgule, par exemple London,ParisRole.

  5. Sous Sélectionner des tables, sélectionnez la table à laquelle vous souhaitez appliquer un filtre de sécurité au niveau des lignes.

  6. Sous Filtrer les données, utilisez l’éditeur par défaut pour définir vos rôles. Les expressions créées retournent une valeur true ou false.

    Remarque

    Tous les filtres de sécurité au niveau des lignes pris en charge dans Power BI ne peuvent pas être définis à l’aide de l’éditeur par défaut. Les limitations incluent des expressions qui peuvent aujourd’hui être définies uniquement à l’aide de DAX, notamment des règles dynamiques telles que username() ou userprincipalname(). Pour définir des rôles à l’aide de ces filtres, basculez vers l’éditeur DAX.

  7. Si vous le souhaitez, sélectionnez Basculer vers l’éditeur DAX pour passer à l’aide de l’éditeur DAX pour définir votre rôle. Les expressions DAX renvoient une valeur true ou false. Par exemple : [Entity ID] = “Value”. L’éditeur DAX est complet avec la saisie semi-automatique pour les formules (IntelliSense). Vous pouvez sélectionner la coche au-dessus de la zone d’expression pour valider l’expression et la touche X au-dessus de la zone d’expression pour rétablir les modifications.

    Remarque

    Vous pouvez utiliser username() dans cette expression. N’oubliez pas que username() a le format domain\username dans Power BI Desktop. Dans le service Power BI et Power BI Report Server, c’est le nom d’utilisateur principal (UPN) de l’utilisateur qui est employé. En outre, dans cette zone d’expression, utilisez des virgules pour séparer les arguments des fonctions DAX, même si vous utilisez des paramètres régionaux qui utilisent normalement des points-virgules comme séparateurs, tels que le français ou l’allemand.

  8. Vous pouvez revenir à l’éditeur par défaut en sélectionnant Basculer vers l’éditeur par défaut. Toutes les modifications apportées dans l’une ou l’autre interface de l’éditeur sont conservées lors du changement d’interface dans la mesure du possible. Lorsque vous définissez un rôle à l’aide de l’éditeur DAX qui ne peut pas être défini dans l’éditeur par défaut, si vous tentez de basculer vers l’éditeur par défaut, vous êtes invité à indiquer que le changement d’éditeur peut entraîner la perte de certaines informations. Pour conserver ces informations, sélectionnez Annuler et poursuivez la modification de ce rôle dans l’éditeur DAX.

    Remarque

    Dans cette zone d’expression, utilisez des virgules pour séparer les arguments des fonctions DAX, même si vous utilisez des paramètres régionaux qui utilisent normalement des points-virgules comme séparateurs, tels que le français ou l’allemand.

  9. Cliquez sur Enregistrer.

Vous ne pouvez pas attribuer d’utilisateurs à un rôle dans Power BI Desktop. Vous les assignez dans le service Power BI. Vous pouvez activer la sécurité dynamique dans Power BI Desktop en utilisant les fonctions DAX de nom d’utilisateur ou userprincipalname() et en utilisant les relations appropriées configurées.

Modèles de filtre DAX courants

Les exemples suivants montrent les expressions de filtre DAX courantes que vous pouvez utiliser lors de la définition des rôles RLS :

  • RLS statique : limite les données à une valeur fixe :

    [Region] = "West"
    
  • RLS dynamique avec UPN : limite les données en fonction de l’adresse e-mail de l’utilisateur connecté :

    [UserEmail] = USERPRINCIPALNAME()
    
  • SRLS dynamique avec nom d’utilisateur : limite les données en fonction du domaine et du nom d’utilisateur de l’utilisateur :

    [UserDomain] = USERNAME()
    
  • RLS dynamique avec CUSTOMDATA : restreint les données en fonction d’une chaîne personnalisée transmise à partir de l’application d’incorporation :

    [AppRole] = CUSTOMDATA()
    

    Remarque

    CUSTOMDATA() est principalement utilisé dans les scénarios incorporés où l’application transmet une chaîne d’identité efficace personnalisée via l’API REST Power BI.

L’RLS dynamique est l’approche la plus courante. Elle permet à une définition de rôle unique de filtrer les données différemment pour chaque utilisateur, en fonction d’une table de mappage utilisateur dans votre modèle de données.

Filtrage croisé bidirectionnel

Par défaut, le filtrage de sécurité au niveau des lignes utilise des filtres unidirectionnels, que les relations soient définies comme unidirectionnelles ou bidirectionnelles.

Pour activer manuellement le filtrage croisé bidirectionnel avec la sécurité au niveau des lignes, sélectionnez la relation et cochez la case Appliquer le filtre de sécurité dans les deux directions. Sélectionnez cette option quand vous avez également implémenté, au niveau du serveur, la sécurité dynamique au niveau des lignes, qui s’appuie sur un nom d’utilisateur ou un ID de connexion. Si une table prend part à plusieurs relations bidirectionnelles, vous ne pouvez sélectionner cette option que pour l’une de ces relations.

Avertissement

L’activation du filtrage de sécurité bidirectionnel peut avoir un impact négatif sur les performances des requêtes, en particulier dans les modèles avec de nombreuses relations ou jeux de données volumineux. Testez soigneusement avant le déploiement en production.

Pour plus d’informations, consultez Filtrage croisé bidirectionnel avec DirectQuery dans Power BI et Sécurisation du modèle sémantique BI tabulaire.

Capture d’écran du paramètre de relation de modèle pour appliquer le filtre de sécurité dans les deux sens.

Gérer la sécurité sur votre modèle

Pour gérer la sécurité de votre modèle sémantique, ouvrez l’espace de travail dans lequel vous avez enregistré votre modèle sémantique dans Fabric, puis procédez comme suit :

  1. Dans Fabric, sélectionnez le menu Plus d’options pour un modèle sémantique. Ce menu s’affiche lorsque vous pointez sur un nom de modèle sémantique.

    Capture d’écran montrant le menu Plus d’options dans le menu de navigation.

  2. Sélectionnez Sécurité.

    Capture d’écran montrant le menu Plus d’options avec l’option Sécurité sélectionnée.

En cliquant sur Sécurité, vous accédez à la page Sécurité au niveau des rôles, à partir de laquelle vous pouvez ajouter des membres à un rôle que vous avez créé. Les utilisateurs disposant de rôles contributeur ou supérieur d’espace de travail voient l’option Sécurité et peuvent affecter des utilisateurs à un rôle. La propriété du modèle sémantique ou l’autorisation Build peut également être requise en fonction du scénario.

Remarque

Vous pouvez uniquement gérer la sécurité sur les modèles qui ont des rôles de sécurité au niveau des lignes déjà définis dans Power BI Desktop ou lors de la modification de votre modèle de données dans le service Power BI. Si votre modèle n’a pas de rôles déjà définis, vous ne pouvez pas gérer la sécurité dans le service Power BI.

Gérer l’appartenance aux rôles

Ajouter des membres

Dans le service Power BI, vous pouvez ajouter un membre au rôle en entrant l’adresse e-mail ou le nom de l’utilisateur ou du groupe de sécurité. Il n’est pas possible d’ajouter des groupes créés dans Power BI. Vous pouvez ajouter des membres externes à votre organisation. Pour obtenir des conseils sur le fonctionnement de RLS avec les utilisateurs invités B2B externes, consultez Considérations relatives aux utilisateurs externes (invités B2B).

Vous pouvez utiliser les groupes suivants pour configurer la sécurité au niveau des lignes.

Important

Les groupes Microsoft 365 ne sont pas pris en charge et ne peuvent pas être ajoutés à un rôle. Seuls les types de groupes répertoriés ci-dessus sont pris en charge pour l’appartenance au rôle RLS.

Capture d’écran montrant comment ajouter un membre.

Vous pouvez voir combien de membres font partie du rôle par le nombre entre parenthèses à côté du nom du rôle ou à côté de Membres.

Capture d’écran montrant les membres dans leur rôle.

Supprimer des membres

Vous pouvez supprimer des membres en cliquant sur la croix correspondant à leur nom.

Capture d’écran montrant comment supprimer un membre.

Validation du rôle au sein du service Power BI

Vous pouvez vérifier que le rôle que vous avez défini fonctionne correctement dans le service Power BI en testant le rôle.

  1. Sélectionnez Plus d’options (...) en regard du rôle.
  2. Sélectionnez Tester en tant que rôle.

Capture d’écran de l’option Tester en tant que rôle.

Remarque

Il n’y a pas de tableaux de bord disponibles pour les tests avec l’option Tester en tant que rôle. Vous êtes redirigé vers le rapport publié à partir de Power BI Desktop avec ce modèle sémantique, s'il en existe un.

Lorsque le rapport se charge, vérifiez les éléments suivants :

  • Le rapport affiche uniquement les lignes de données qui correspondent à l’expression de filtre définie dans le rôle.
  • Les visuels, les tableaux et les graphiques reflètent les données filtrées, et non le jeu de données complet.
  • Si vous utilisez la RLS dynamique, les données correspondent à l’identité affichée dans l’en-tête Maintenant affiché comme.

Dans l’en-tête de page est indiqué le rôle en cours d’application. Testez d’autres rôles, une combinaison de rôles ou d’une personne spécifique en sélectionnant Affichage actuel en tant que. Ici, vous voyez des détails importants sur les autorisations relatives à l’individu ou au rôle testé. Pour plus d’informations sur la façon dont les autorisations interagissent avec RLS, consultez Expérience utilisateur RLS.

Capture d’écran de la liste déroulante actuellement affichée pour une personne spécifique.

Testez d’autres rapports connectés au modèle sémantique en sélectionnant Affichage dans l’en-tête de page. Vous pouvez uniquement tester les rapports situés dans le même espace de travail que votre modèle sémantique.

Capture d’écran de Affichage pour sélectionner un autre rapport à tester.

Pour revenir à l’affichage normal, sélectionnez Retour à la sécurité au niveau des lignes.

Remarque

La fonctionnalité Tester comme rôle ne fonctionne pas pour les modèles DirectQuery avec l’authentification unique (SSO) activée. En outre, tous les aspects d’un rapport ne peuvent pas être validés dans la fonctionnalité Tester comme rôle, notamment les visualisations Questions et réponses, les visualisations Quick insights et Copilot.

Tip

Si test en tant que rôle n’affiche pas les résultats attendus, essayez ce qui suit :

  • Vérifiez que la syntaxe de l’expression de filtre DAX est correcte et fait référence aux noms de colonnes appropriés.
  • Vérifiez que vous avez sélectionné le rôle approprié à tester.
  • Pour la RLS dynamique, vérifiez que la table de mappage utilisateur contient des valeurs correspondantes pour USERPRINCIPALNAME() ou USERNAME().
  • Pour les modèles DirectQuery avec l’authentification unique activée, test comme rôle n’est pas pris en charge. Au lieu de cela, connectez-vous en tant qu’utilisateur de rôle d’observateur réel pour valider le filtrage des données.

Utilisation des fonctions DAX username() et userprincipalname()

Vous pouvez utiliser les fonctions DAX username() et userprincipalname() dans votre jeu de données. Dans Power BI Desktop, celles-ci peuvent être utilisées dans des expressions. Une fois votre modèle publié, il est utilisé dans le service Power BI.

Dans Power BI Desktop, username() retourne un utilisateur au format DOMAINE\Utilisateur tandis que userprincipalname() le retourne au format user@contoso.com.

Dans le service Power BI, les fonctions username() et userprincipalname() retournent toutes les deux le nom d’utilisateur principal (UPN) de l’utilisateur. Celui-ci est similaire à une adresse e-mail.

Utilisation de la SNL (sécurité au niveau des lignes) avec des espaces de travail dans Power BI

Si vous publiez votre rapport Power BI Desktop dans un espace de travail du service Power BI, les rôles SNL sont appliqués aux membres auxquels le rôle Lecteur a été attribué dans l’espace de travail. Même si des personnes ayant le rôle Visionneurs disposent d’autorisations de construire le modèle sémantique, RLS s’applique toujours. Par exemple, si les lecteurs avec des permissions de création se servent de la fonctionnalité Analyser dans Excel, leur vue des données est restreinte par la SNL. Les membres de l’espace de travail affectés comme Admin, Member ou Contributor disposent d’autorisations de modification pour le modèle sémantique et, par conséquent, RLS ne s’applique pas à eux. Si vous souhaitez appliquer la sécurité au niveau des lignes (SNL) aux personnes d’un espace de travail, vous ne pouvez leur attribuer que le rôle Lecteur. En savoir plus sur les rôles dans les espaces de travail.

Considérations relatives aux utilisateurs externes (invités B2B)

Si vous partagez du contenu Power BI avec des utilisateurs externes via Microsoft Entra B2B, il est important de comprendre comment RLS interagit avec les identités des utilisateurs invités.

Résolution UPN pour les invités B2B

Lorsqu’un utilisateur invité B2B externe accède à un rapport de Power BI, la fonction USERPRINCIPALNAME() DAX retourne généralement un identificateur de type e-mail (par exemple, user@partner.com). Dans certaines configurations, il peut retourner un UPN invité au #EXT# format (par exemple). user_partner.com#EXT#@yourtenant.onmicrosoft.com

Cette distinction est importante pour le RLS dynamique. Si votre table de mappage d’utilisateurs stocke un format d’identificateur différent de ce qui USERPRINCIPALNAME() retourne, l’expression de filtre ne correspond pas et l’utilisateur invité peut ne voir aucune donnée ni données incorrectes.

Comportement USERNAME() pour les invités B2B

La USERNAME() fonction DAX retourne l’identificateur de domaine\nom d’utilisateur de l’utilisateur. Pour les utilisateurs invités B2B, cette fonction retourne généralement l’UPN du locataire d’accueil de l’invité (par exemple) user@partner.complutôt qu’un format domaine\nom d’utilisateur. Étant donné que USERNAME() et USERPRINCIPALNAME() retournent souvent la même valeur pour les clients B2B, la plupart des implémentations utilisent USERPRINCIPALNAME() pour la cohérence.

Tip

Si votre RLS dynamique existante utilise USERNAME(), vérifiez la valeur retournée pour les utilisateurs invités dans votre environnement avant de partager du contenu en externe. Vous pouvez vérifier en ajoutant une carte visuelle affichant USERNAME() dans un rapport de test. Approche recommandée : Stockez et utilisez de manière cohérente le même format d’identificateur dans votre table de mappage utilisateur que la valeur retournée par USERPRINCIPALNAME(). Dans la plupart des cas, l’utilisation d’adresses e-mail simplifie la gestion :

[UserEmail] = USERPRINCIPALNAME()

Où la UserEmail colonne contient des adresses e-mail comme user@partner.com pour les utilisateurs internes et externes.

Remarque

La valeur retournée par USERPRINCIPALNAME() est l’identificateur de connexion de l’utilisateur (UPN), pas nécessairement son adresse e-mail. Pour la plupart des utilisateurs, ils sont identiques, mais ils peuvent différer (par exemple, quand l’e-mail d’un utilisateur est un alias). Lors de la création de votre table de mappage utilisateur, utilisez la valeur retournée par USERPRINCIPALNAME() plutôt que l’attribut mail de Microsoft Entra ID.

Important

Si vous utilisez la RLS dynamique avec USERPRINCIPALNAME(), testez toujours avec des utilisateurs invités externes réels. La fonctionnalité Test en tant que rôle utilise votre propre identité et ne révèle pas les problèmes de résolution UPN de l’utilisateur externe.

Remarque

Le comportement de résolution UPN pour les invités B2B peut varier en fonction de votre configuration de Microsoft Entra ID, comme les paramètres d’accès interlocataire et le type d’utilisateur invité. Validez toujours le comportement dans votre environnement spécifique.

Résolution des problèmes : l’invité externe ne voit aucune donnée

Si un utilisateur invité B2B voit un rapport vide ou reçoit un message « aucune donnée », procédez comme suit :

  1. Vérifiez le format UPN retourné : créez une mesure de test en utilisant USERPRINCIPALNAME() et affichez-la dans un visuel de carte. L’utilisateur invité affiche le rapport pour voir la valeur réelle retournée.
  2. Vérifiez la table de mappage utilisateur : vérifiez que la table de mappage contient une ligne avec une valeur qui correspond exactement à ce qui USERPRINCIPALNAME() retourne pour cet invité.
  3. Vérifiez la sensibilité à la casse : par défaut, les comparaisons de chaînes DAX ne sont pas sensibles à la casse, mais vérifiez que votre source de données n’a pas introduit de valeurs qui le sont.
  4. Review des paramètres d’accès entre locataires : si votre organisation utilise des stratégies d’accès interlocataires , elles peuvent affecter le format UPN présenté à Power BI.
  5. Testez avec l’utilisateur invité réel : la fonctionnalité Test en tant que rôle utilise votre propre identité. Validez toujours avec le compte invité externe réel. Pour plus d’informations sur le partage de contenu Power BI avec des utilisateurs externes, consultez Distribute Power BI contenu aux utilisateurs invités externes avec Microsoft Entra B2B.

Considérations et limitations

Vous pouvez voir les limitations actuelles de la sécurité au niveau des lignes sur les modèles cloud ici :

  • Si vous avez précédemment défini des rôles et des règles dans le service Power BI, vous devez les recréer dans Power BI Desktop.
  • Vous pouvez définir la SNL uniquement sur les modèles sémantiques créés avec Power BI Desktop. Pour activer la SNL pour les modèles sémantiques créés avec Excel, vous devez d’abord convertir vos fichiers au format PBIX (Power BI Desktop). Plus d’informations
  • Les principaux de services ne peuvent pas être ajoutés à un rôle SNL. Ainsi, la SNL ne s’applique pas aux applications qui utilisent un principal de service comme identité effective finale.
  • Seules les connexions Import et DirectQuery sont prises en charge. Les connexions actives à Analysis Services sont gérées dans le modèle local.
  • Avec la fonction RLS activée, l’utilisation de la fonction USERELATIONSHIP() dans les requêtes et les mesures DAX peut entraîner des erreurs inattendues. Pour contourner ce problème, reconcevoir vos expressions DAX pour éviter USERELATIONSHIP() et utiliser des relations au niveau du modèle ou d’autres modèles DAX à la place.
  • La fonctionnalité Tester comme rôle/Afficher comme rôle ne fonctionne pas pour les modèles DirectQuery avec l'authentification unique (SSO) activée.
  • La fonctionnalité Tester comme rôle/Afficher comme rôle présente uniquement les rapports de l’espace de travail des modèles sémantiques.
  • La fonctionnalité Tester comme rôle/Afficher comme rôle ne fonctionne pas sur les rapports paginés.

N’oubliez pas que si un rapport Power BI fait référence à une ligne avec la RLS configurée, le même message s’affiche que pour un champ supprimé ou inexistant. Pour ces utilisateurs, le rapport semble corrompu.

FAQ

Question : que se passe-t-il si j’ai déjà créé des rôles et des règles pour un jeu de données dans le service Power BI ? Continuent-ils de fonctionner si je ne fais rien ?
Réponse : Non, car les visuels ne seront pas rendus correctement. Vous devez recréer les rôles et les règles dans Power BI Desktop, puis les publier sur le service Power BI.

Question : Puis-je créer ces rôles pour des sources de données Analysis Services ?
Réponse : Oui, à condition que vous ayez importé les données dans Power BI Desktop. Si vous utilisez une connexion active, vous ne pouvez pas configurer la sécurité réseau au sein du service Power BI. Définissez la SNL dans le modèle Analysis Services local.

Question : Puis-je utiliser RLS pour limiter les colonnes ou les mesures accessibles par mes utilisateurs ?
Réponse : Non, si un utilisateur a accès à une ligne particulière de données, il peut voir toutes les colonnes de données pour cette ligne. Pour restreindre l’accès aux colonnes et aux métadonnées de colonne, envisagez d’utiliser la sécurité au niveau de l’objet.

Question : Le RLS me permet-il de masquer les données détaillées tout en accédant aux données résumées dans les visuels ?
Réponse : Non, vous sécurisez les lignes de données individuelles, mais les utilisateurs peuvent toujours voir les détails ou les données résumées.

Question : Ma source de données a déjà des rôles de sécurité définis (par exemple des rôles SQL Server ou des rôles SAP BW). Quelle est la relation entre ces rôles et RLS ?
Réponse : La réponse varie selon que vous importez des données ou que vous utilisez DirectQuery. Si vous importez des données dans votre jeu de données Power BI, les rôles de sécurité de votre source de données ne sont pas utilisés. Dans ce cas, vous devez définir RLS pour appliquer des règles de sécurité aux utilisateurs qui se connectent à Power BI. Si vous utilisez DirectQuery, les rôles de sécurité de votre source de données sont utilisés. Quand un utilisateur ouvre un rapport, Power BI envoie une requête à la source de données sous-jacente, qui applique des règles de sécurité aux données en fonction des informations d’identification de l’utilisateur.

Question : un utilisateur peut-il appartenir à plusieurs rôles ?
Réponse : un utilisateur peut appartenir à plusieurs rôles, et les rôles sont additifs. Par exemple, si un utilisateur appartient aux rôles « Ventes » et « Marketing », il peut voir les données de ces deux rôles.

Vous avez des questions ? Vous avez des suggestions ? Essayez d’interroger la communauté Power BI Envoyez-nous vos idées pour améliorer Power BI