Sécurité au niveau des lignes avec Power BIRow-level security (RLS) with Power BI

La sécurité au niveau des lignes avec Power BI peut être utilisée pour restreindre l’accès aux données pour certains utilisateurs.Row-level security (RLS) with Power BI can be used to restrict data access for given users. Les filtres limitent l’accès aux données au niveau des lignes, et vous pouvez définir des filtres dans des rôles.Filters restrict data access at the row level, and you can define filters within roles. Dans le service Power BI, les membres d’un espace de travail ont accès aux jeux de données de l’espace de travail.In the Power BI service, members of a workspace have access to datasets in the workspace. La sécurité au niveau des lignes (SNL) ne restreint pas cet accès aux données.RLS doesn't restrict this data access.

Vous pouvez configurer la sécurité au niveau des lignes (SNL) pour les modèles de données importés dans Power BI avec Power BI Desktop.You can configure RLS for data models imported into Power BI with Power BI Desktop. Vous pouvez également configurer la sécurité au niveau des lignes sur les jeux de données qui utilisent DirectQuery, tels que SQL Server.You can also configure RLS on datasets that are using DirectQuery, such as SQL Server. En ce qui concerne les connexions actives 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 Desktop.For Analysis Services or Azure Analysis Services lives connections, you configure Row-level security in the model, not in Power BI Desktop. L’option de sécurité ne s’affiche pas pour les jeux de données d’une connexion active.The security option will not show up for live connection datasets.

Définir des rôles et des règles dans Power BI DesktopDefine roles and rules in Power BI Desktop

Vous pouvez définir des rôles et des règles dans Power BI Desktop.You can define roles and rules within Power BI Desktop. Quand vous publiez sur Power BI, les définitions de rôles sont aussi publiées.When you publish to Power BI, it also publishes the role definitions.

Pour définir des rôles de sécurité, effectuez les étapes suivantes.To define security roles, follow these steps.

  1. Importez les données dans votre rapport Power BI Desktop ou configurez une connexion DirectQuery.Import data into your Power BI Desktop report, or configure a DirectQuery connection.

    Notes

    Vous ne pouvez pas définir de rôles dans Power BI Desktop pour les connexions actives Analysis Services.You can't define roles within Power BI Desktop for Analysis Services live connections. Vous devez le faire dans le modèle Analysis Services.You need to do that within the Analysis Services model.

  2. Sous l’onglet Modélisation, sélectionnez Gérer les rôles.From the Modeling tab, select Manage Roles.

    Sélectionner Gérer les rôles

  3. Dans la fenêtre Gérer les rôles, sélectionnez Créer.From the Manage roles window, select Create.

    Sélectionner Créer

  4. Sous Rôles, entrez un nom pour le rôle.Under Roles, provide a name for the role.

  5. Sous Tables, sélectionnez la table à laquelle vous souhaitez appliquer une règle DAX.Under Tables, select the table to which you want to apply a DAX rule.

  6. Dans la zone Expression DAX de filtre de table, entrez les expressions DAX.In the Table filter DAX expression box, enter the DAX expressions. Cette expression retourne la valeur true ou false.This expression returns a value of true or false. Par exemple : [Entity ID] = “Value”.For example: [Entity ID] = “Value”.

    Fenêtre Gérer les rôles

    Notes

    Vous pouvez utiliser username() dans cette expression.You can use username() within this expression. N’oubliez pas que username() est au format DOMAINE\nom_utilisateur dans Power BI Desktop.Be aware that username() has the format of DOMAIN\username within 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é.Within the Power BI service and Power BI Report Server, it's in the format of the user's User Principal Name (UPN). Vous pouvez également utiliser userprincipalname() , qui retourne systématiquement l’utilisateur au format de son nom d’utilisateur principal, username@contoso.com.Alternatively, you can use userprincipalname(), which always returns the user in the format of their user principal name, username@contoso.com.

  7. Une fois l’expression DAX créée, cochez la case au-dessus de la zone d’expression pour valider l’expression.After you've created the DAX expression, select the checkmark above the expression box to validate the expression.

    Valider l’expression DAX

    Notes

    Dans cette zone d’expression, vous 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 (par exemple le français ou l’allemand).In this expression box, you use commas to separate DAX function arguments even if you're using a locale that normally uses semicolon separators (e.g. French or German).

  8. Sélectionnez Enregistrer.Select Save.

Vous ne pouvez pas attribuer d’utilisateurs à un rôle dans Power BI Desktop.You can't assign users to a role within Power BI Desktop. Vous devez le faire dans le service Power BI.You assign them in the Power BI service. Dans Power BI Desktop, vous pouvez activer la sécurité dynamique en utilisant les fonctions DAX username() ou userprincipalname() et en configurant les relations appropriées.You can enable dynamic security within Power BI Desktop by making use of the username() or userprincipalname() DAX functions and having the proper relationships configured.

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.By default, row-level security filtering uses single-directional filters, whether the relationships are set to single direction or bi-directional. 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.You can manually enable bi-directional cross-filtering with row-level security by selecting the relationship and checking the Apply security filter in both directions checkbox. 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.Select this option when you've also implemented dynamic row-level security at the server level, where row-level security is based on username or login ID.

Pour plus d’informations, consultez Filtrage croisé bidirectionnel avec DirectQuery dans Power BI Desktop et Sécurisation du modèle sémantique BI tabulaire.For more information, see Bidirectional cross-filtering using DirectQuery in Power BI Desktop and the Securing the Tabular BI Semantic Model technical article.

Appliquer un filtre de sécurité

Valider les rôles dans Power BI DesktopValidate the roles within Power BI Desktop

Après avoir créé vos rôles, vous pouvez tester les résultats de ces rôles dans Power BI Desktop.After you've created your roles, test the results of the roles within Power BI Desktop.

  1. Sous l’onglet Modélisation, sélectionnez Afficher comme rôles.From the Modeling tab, select View as Roles.

    Sélectionner Afficher comme rôles

    Dans la fenêtre Afficher comme rôles qui s’ouvre, vous voyez les rôles que vous avez créés.The View as roles window appears, where you see the roles you've created.

    Fenêtre Afficher comme rôles

  2. Sélectionnez un rôle que vous avez créé, puis OK pour l’appliquer.Select a role you created, and then select OK to apply that role.

    Le rapport affiche les données pertinentes pour ce rôle.The report renders the data relevant for that role.

  3. Vous pouvez également sélectionner Autre utilisateur et indiquer un utilisateur spécifique.You can also select Other user and supply a given user.

    Sélectionner Autre utilisateur

    Il est préférable de fournir le nom d’utilisateur principal (UPN), celui-ci étant utilisé par le service Power BI et Power BI Report Server.It's best to supply the User Principal Name (UPN) as that's what the Power BI service and Power BI Report Server use.

    Dans Power BI Desktop, Autre utilisateur montre des résultats différents uniquement si vous utilisez la sécurité dynamique basée sur vos expressions DAX.Within Power BI Desktop, Other user displays different results only if you're using dynamic security based on your DAX expressions.

  4. Sélectionnez OK.Select OK.

    Le rapport est affiché en fonction de ce que cet utilisateur peut voir.The report renders based on what that user can see.

Gérer la sécurité sur votre modèleManage security on your model

Pour gérer la sécurité sur votre modèle de données, procédez comme suit :To manage security on your data model, do the following steps:

  1. Dans le service Power BI, sélectionnez le menu Plus d’options pour un jeu de données.In the Power BI service, select the More options menu for a dataset. Ce menu s’affiche lorsque vous pointez sur un nom de jeu de données, que vous le sélectionniez dans le menu de navigation ou sur la page de l’espace de travail.This menu appears when you hover on a dataset name, whether you select it from the navigation menu or the workspace page.

    Menu Plus d’options dans l’espace de travail

    Menu Plus d’options dans le menu de navigation

  2. Sélectionnez Sécurité.Select Security.

    Sélection de Sécurité dans le menu Plus d’options

En cliquant sur Sécurité, vous accédez à la page SNL, sur laquelle vous pouvez ajouter des membres à un rôle que vous avez créé dans Power BI Desktop.Security will take you to the RLS page where you add members to a role you created in Power BI Desktop. L’option Sécurité n’apparaît que pour les propriétaires du jeu de données.Only the owners of the dataset will see Security. Si le jeu de données se trouve dans un groupe, seuls les administrateurs de ce groupe la verront.If the dataset is in a Group, only administrators of the group will see the security option.

Vous pouvez uniquement créer ou modifier des rôles dans Power BI Desktop.You can only create or modify roles within Power BI Desktop.

Utilisation des membresWorking with members

Ajouter des membresAdd members

Ajoutez un membre au rôle en entrant l’adresse e-mail ou le nom de l’utilisateur ou du groupe de sécurité.Add a member to the role by typing in the email address or name of the user or security group. Il n’est pas possible d’ajouter des groupes créés dans Power BI.You can't add Groups created in Power BI. Vous pouvez ajouter des membres externes à votre organisation.You can add members external to your organization.

Ajouter un membre

Le nombre de membres du rôle est indiqué entre parenthèses à côté du nom du rôle ou de Membres.You can also see how many members are part of the role by the number in parentheses next to the role name, or next to Members.

Membres du rôle

Supprimer des membresRemove members

Vous pouvez supprimer des membres en cliquant sur la croix correspondant à leur nom.You can remove members by selecting the X next to their name.

Supprimer un membre

Validation du rôle au sein du service Power BIValidating the role within the Power BI service

Vous pouvez vérifier que le rôle que vous avez défini fonctionne correctement en le testant.You can validate that the role you defined is working correctly by testing the role.

  1. Sélectionnez Plus d’options (...) en regard du rôle.Select More options (...) next to the role.
  2. Sélectionnez Tester les données comme rôleSelect Test data as role

Tester comme rôle

Les rapports disponibles pour ce rôle s’affichent.You'll see reports that are available for this role. Les tableaux de bord n’apparaissent pas dans cette vue.Dashboards aren't shown in this view. Dans l’en-tête de page est indiqué le rôle en cours d’application.In the page header, the role being applied is shown.

Affichage actuel en tant que <rôle>

Testez d’autres rôles, ou une combinaison de rôles, en sélectionnant Affichage actuel comme.Test other roles, or a combination of roles, by selecting Now viewing as.

Tester d’autres rôles

Vous pouvez choisir d’afficher les données comme pour une personne donnée ou sélectionner une combinaison de rôles disponibles pour vérifier qu’ils fonctionnent.You can choose to view data as a specific person or you can select a combination of available roles to validate they're working.

Pour revenir à l’affichage normal, sélectionnez Retour à la sécurité au niveau des lignes.To return to normal viewing, select Back to Row-Level Security.

Utilisation des fonctions DAX username() et userprincipalname()Using the username() or userprincipalname() DAX function

Vous pouvez utiliser les fonctions DAX username() et userprincipalname() dans votre jeu de données.You can take advantage of the DAX functions username() or userprincipalname() within your dataset. Dans Power BI Desktop, celles-ci peuvent être utilisées dans des expressions.You can use them within expressions in Power BI Desktop. Une fois votre modèle publié, il est utilisé dans le service Power BI.When you publish your model, it will be used within the Power BI service.

Dans Power BI Desktop, username() retourne un utilisateur au format DOMAINE\Utilisateur tandis que userprincipalname() le retourne au format user@contoso.com.Within Power BI Desktop, username() will return a user in the format of DOMAIN\User and userprincipalname() will return a user in the format of 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.Within the Power BI service, username() and userprincipalname() will both return the user's User Principal Name (UPN). Celui-ci est similaire à une adresse e-mail.This looks similar to an email address.

Utilisation de la sécurité au niveau des lignes (SNL) avec des espaces de travail dans Power BIUsing RLS with workspaces in Power BI

Si vous publiez votre rapport Power BI Desktop dans un espace de travail du service Power BI, les rôles sont appliqués aux membres en lecture seule.If you publish your Power BI Desktop report to a workspace in the Power BI service, the roles will be applied to read-only members. Vous devez alors indiquer dans les paramètres de l’espace de travail que les membres peuvent uniquement afficher du contenu Power BI.You'll need to indicate that members can only view Power BI content in the workspace settings.

Avertissement

Si vous avez configuré l’espace de travail de sorte que les membres disposent d’autorisations de modification, les rôles SNL ne leur sont pas appliqués.If you have configured the workspace so that members have edit permissions, the RLS roles won't be applied to them. Les utilisateurs voient toutes les données.Users can see all of the data.

Paramètres de groupe

LimitesLimitations

Les limitations actuelles pour la sécurité au niveau des lignes sur les modèles cloud sont les suivantes :The current limitations for row-level security on cloud models are as follows:

  • 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.If you previously defined roles and rules in the Power BI service, you must re-create them in Power BI Desktop.

  • Vous pouvez définir la sécurité au niveau des lignes (SNL) uniquement sur les jeux de données créés à l’aide de Power BI Desktop.You can define RLS only on the datasets created with Power BI Desktop. Pour activer la sécurité au niveau des lignes pour les jeux de données créés avec Excel, vous devez d’abord convertir vos fichiers au format PBIX (Power BI Desktop).If you want to enable RLS for datasets created with Excel, you must convert your files into Power BI Desktop (PBIX) files first. En savoir plus.Learn more.

  • Seules les connexions Import et DirectQuery sont prises en charge.Only Import and DirectQuery connections are supported. Les connexions actives à Analysis Services sont gérées dans le modèle local.Live connections to Analysis Services are handled in the on-premises model.

Problèmes connusKnown issues

Il existe un problème connu : vous obtenez un message d’erreur quand vous tentez de publier un rapport déjà publié à partir de Power BI Desktop.There's a known issue where you'll get an error message if you try to publish a previously published report from Power BI Desktop. Le scénario est le suivant :The scenario is as follows:

  1. Anna possède un jeu de données publié sur le service Power BI et a configuré la sécurité au niveau des lignes.Anna has a dataset that is published to the Power BI service and has configured RLS.

  2. Anna met à jour le rapport dans Power BI Desktop et le republie.Anna updates the report in Power BI Desktop and republishes.

  3. Anna reçoit une erreur.Anna receives an error.

Solution de contournement : republiez le fichier Power BI Desktop à partir du service Power BI jusqu’à ce que ce problème soit résolu.Workaround: Republish the Power BI Desktop file from the Power BI service until this issue is resolved. Pour cela, sélectionnez Obtenir des données > Fichiers.You can do that by selecting Get Data > Files.

FORUM AUX QUESTIONSFAQ

Question : Que se passe-t-il si j’avais déjà créé des rôles et des règles pour un jeu de données dans le service Power BI ?Question: What if I had previously created roles and rules for a dataset in the Power BI service? Continuent-ils de fonctionner si je ne fais rien ?Will they still work if I do nothing?
Réponse : Non, car les visuels ne seront pas rendus correctement.Answer: No, visuals will not render properly. Vous devez recréer les rôles et les règles dans Power BI Desktop, puis les publier sur le service Power BI.You will have to re-create the roles and rules within Power BI Desktop and then publish to the Power BI service.

Question : Puis-je créer ces rôles pour des sources de données Analysis Services ?Question: Can I create these roles for Analysis Services data sources?
Réponse : Oui, à condition que vous ayez importé les données dans Power BI Desktop.Answer: You can if you imported the data into Power BI Desktop. Si vous utilisez une connexion active, vous n’êtes pas en mesure de configurer la sécurité au niveau des lignes (RLS) au sein du service Power BI.If you are using a live connection, you will not be able to configure RLS within the Power BI service. Celle-ci se définit localement dans le modèle Analysis Services.This is defined within the Analysis Services model on-premises.

Question : Puis-je utiliser SNL pour limiter les colonnes ou les mesures accessibles par mes utilisateurs ?Question: Can I use RLS to limit the columns or measures accessible by my users?
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.Answer: No, if a user has access to a particular row of data, they can see all the columns of data for that row.

Question : Avec SNL, puis-je masquer les données détaillées tout en donnant accès aux données résumées dans les visuels ?Question: Does RLS let me hide detailed data but give access to data summarized in visuals?
Réponse : Non, vous sécurisez des lignes de données individuelles, mais les utilisateurs peuvent toujours voir les détails ou les données résumées.Answer: No, you secure individual rows of data but users can always see either the details or the summarized data.

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).Question: My data source already has security roles defined (for example SQL Server roles or SAP BW roles). Quelle est la relation entre ces éléments et SNL ?What is the relationship between these and RLS?
Réponse : La réponse varie selon que vous importez des données ou que vous utilisez DirectQuery.Answer: The answer depends on whether you're importing data or using 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.If you're importing data into your Power BI dataset, the security roles in your data source aren't used. Dans ce cas, vous devez définir la sécurité au niveau des lignes pour appliquer des règles de sécurité aux utilisateurs qui se connectent dans Power BI.In this case, you should define RLS to enforce security rules for users who connect in Power BI. Si vous utilisez DirectQuery, les rôles de sécurité de votre source de données sont utilisés.If you're using DirectQuery, the security roles in your data source are used. 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.When a user opens a report Power BI sends a query to the underlying data source, which applies security rules to the data based on the user's credentials.

Étapes suivantesNext steps