Rôles

S’applique à : SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Les rôles dans les modèles tabulaires définissent les autorisations de membre pour un modèle. Les membres du rôle peuvent effectuer des actions sur le modèle, comme défini par l'autorisation du rôle. Les rôles définis avec des autorisations de lecture peuvent également fournir une sécurité supplémentaire au niveau de la ligne grâce à l'utilisation de filtres au niveau de la ligne.

Pour Azure Analysis Services et les jeux de données Power BI, les utilisateurs doivent être dans votre ID de Microsoft Entra et les noms d’utilisateur et les groupes spécifiés doivent être par adresse e-mail ou UPN de l’organisation. Pour SQL Server Analysis Services, les rôles contiennent des membres utilisateur par nom d’utilisateur Windows ou par groupe Windows, et des autorisations (lecture, processus, administrateur). Pour Azure Analysis Services et les modèles sémantiques Power BI, les utilisateurs doivent se trouver dans votre annuaire Azure Active Directory, et les noms d’utilisateur et les groupes spécifiés doivent être par adresse e-mail ou UPN de l’organisation. Pour SQL Server Analysis Services, les rôles contiennent des membres utilisateur par nom d’utilisateur Windows ou par groupe Windows, et des autorisations (lecture, processus, administrateur).

Important

Lorsque vous utilisez Visual Studio pour créer des rôles et ajouter des utilisateurs d’organisation à un projet de modèle tabulaire qui sera déployé sur Azure Analysis Services ou Power BI, utilisez l’espace de travail intégré.

Important

Pour que les utilisateurs se connectent à un modèle déployé à l’aide d’une application cliente de création de rapports, vous devez créer au moins un rôle avec au moins l’autorisation de lecture dont ces utilisateurs sont membres.

Les informations de cet article sont destinées aux auteurs de modèles tabulaires qui définissent des rôles à l’aide de la boîte de dialogue Gestionnaire de rôles dans SSDT. Les rôles définis lors de la création de modèles s'appliquent à la base de données model de l'espace de travail. Une fois qu’une base de données de modèle a été déployée, les administrateurs de base de données de modèle peuvent gérer (ajouter, modifier, supprimer) les membres de rôle à l’aide de SSMS.

Présentation des rôles

Les rôles sont utilisés dans Analysis Services pour gérer l’accès aux données du modèle. Il existe deux types de rôles :

  • Rôle serveur, rôle fixe qui fournit un accès administrateur à un serveur Analysis Services instance. Les rôles serveur ne s’appliquent pas à Power BI. Au lieu de cela, Power BI utilise des rôles d’espace de travail.

  • les rôles de base de données, les rôles définis par les créateurs de modèles et les administrateurs pour contrôler l'accès des utilisateurs qui ne sont pas administrateurs aux données et à une base de données model.

Les rôles définis pour un modèle tabulaire sont des rôles de bases de données. Autrement dit, les rôles contiennent des membres constitués d’utilisateurs ou de groupes disposant d’autorisations spécifiques qui définissent l’action que ces membres peuvent effectuer sur la base de données modèle. Un rôle est créé en tant qu’objet distinct dans la base de données et s’applique uniquement à la base de données dans laquelle ce rôle est créé. Les utilisateurs et les groupes sont inclus dans le rôle par l’auteur du modèle, qui dispose par défaut des autorisations d’administrateur sur le serveur de base de données de l’espace de travail ; pour un modèle déployé, par un administrateur.

Les rôles dans les modèles tabulaires peuvent être définis plus en détail avec des filtres de lignes, également appelés sécurité au niveau des lignes. Les filtres de lignes utilisent des expressions DAX pour définir les lignes d'une table, ainsi que toutes les lignes associées dans la direction « plusieurs », qu'un utilisateur peut interroger. Les filtres de lignes utilisant des expressions DAX ne peuvent être définis que pour les autorisations de lecture et de lecture et de traitement. Dans Power BI, les rôles de modèle sont définis dans Power BI Desktop et s’appliquent uniquement à la sécurité au niveau des lignes. Pour plus d’informations, consultez Filtres de lignes plus loin dans cet article.

Par défaut, lorsque vous créez un projet de modèle tabulaire, le projet n’a aucun rôle. Les rôles peuvent être définis à l’aide de la boîte de dialogue Gestionnaire de rôles dans SSDT. Lorsque les rôles sont définis lors de la création d'un modèle, ils sont appliqués à la base de données model de l'espace de travail. Lorsque le modèle est déployé, les mêmes rôles sont appliqués au modèle déployé. Une fois qu’un modèle a été déployé, les membres du rôle serveur ([Administrateur Analysis Services) et les administrateurs de base de données peuvent gérer les rôles associés au modèle et les membres associés à chaque rôle à l’aide de SSMS.

Autorisations

Les autorisations de rôle décrites dans cette section s’appliquent uniquement aux Azure Analysis Services et SQL Server Analysis Services. Dans Power BI, les autorisations sont définies pour le modèle sémantique. Pour plus d’informations, consultez Gérer l’accès au modèle sémantique.

Chaque rôle a une seule autorisation de base de données définie (sauf l'autorisation combinée de lecture et de traitement). Par défaut, un nouveau rôle aura l'autorisation Aucune. Autrement dit, une fois que les membres sont ajoutés au rôle avec l'autorisation Aucune, ils ne peuvent pas modifier la base de données, exécuter une opération de traitement, interroger des données, ni voir la base de données, sauf si une autre autorisation leur est octroyée.

Un groupe ou un utilisateur peut être membre d’un nombre quelconque de rôles, chaque rôle disposant d’une autorisation différente. Lorsqu'un utilisateur est membre de plusieurs rôles, les autorisations définies pour chaque rôle se cumulent. Par exemple, si un utilisateur est membre d'un rôle bénéficiant d'un accès en lecture, et qu'il est également membre d'un rôle avec une autorisation Aucune, cet utilisateur disposera d'autorisations de lecture.

Chaque rôle peut avoir l'une des autorisations suivantes définies :

Autorisations Description Filtres de lignes à l’aide de DAX
None Les membres ne peuvent pas apporter de modifications au schéma de la base de données model et ne peuvent pas interroger les données. Les filtres de lignes ne s'appliquent pas. Aucune donnée n'est visible par les utilisateurs de ce rôle
Lire Les membres sont autorisés à interroger des données (selon les filtres au niveau de la ligne), mais ils ne peuvent pas modifier la base de données model dans SSMS, apporter des modifications au schéma de la base de données model et l'utilisateur ne peut pas traiter le modèle. Des filtres de lignes peuvent être appliqués. Seules les données spécifiées dans la formule DAX de filtre de lignes sont visibles par les utilisateurs.
Lire et traiter Les membres sont autorisés à interroger des données (selon les filtres au niveau de la ligne) et à exécuter des opérations de traitement à l'aide d'un script ou d'un package contenant une commande Traiter, mais ne peuvent pas apporter des modifications à la base de données. Impossible d’afficher la base de données de modèle dans SSMS. Des filtres de lignes peuvent être appliqués. Seules les données spécifiées dans la formule DAX de filtre de lignes peuvent être interrogées.
Processus Les membres peuvent effectuer des opérations de traitement en exécutant un script ou un package qui contient une commande Traiter. Impossible de modifier le schéma de la base de données model. Ne peuvent pas interroger les données. Impossible d’interroger la base de données de modèle dans SSMS. Les filtres de lignes ne s'appliquent pas. Aucune donnée ne peut être interrogée dans ce rôle
Administrateur Les membres peuvent apporter des modifications au schéma du modèle et interroger toutes les données dans le concepteur de modèles, le client de création de rapports et SSMS. Les filtres de lignes ne s'appliquent pas. Toutes les données peuvent être interrogées dans ce rôle.

Notes

Les membres disposant des autorisations Lecture et Lecture et Traitement peuvent interroger des données en fonction des filtres de lignes, mais ne peuvent pas voir la base de données modèle dans SSMS. Les membres ne peuvent pas apporter de modifications au schéma de base de données du modèle et ne peuvent pas traiter le modèle. Toutefois, dans SQL Server Analysis Services 2019 et versions antérieures, les membres peuvent utiliser des vues de gestion dynamique pour déterminer les définitions de mesure. SQL Server Analysis Services 2022 et versions ultérieures bloquent l’accès aux DMV pour améliorer la sécurité.

Filtres de lignes

Les filtres de lignes, communément appelés sécurité au niveau des lignes dans Power BI, définissent les lignes d’une table qui peuvent être interrogées par les membres d’un rôle particulier. Les filtres de lignes sont définis pour chaque table dans un modèle à l'aide de formules DAX.

Les filtres de lignes peuvent être définis uniquement pour les rôles avec des autorisations de Lecture et de Lecture et processus. Par défaut, si un filtre de lignes n'est pas défini pour une table particulière, les membres d'un rôle disposant de l'autorisation de lecture ou de lecture et traitement peuvent interroger toutes les lignes de la table, sauf si le filtrage croisé s'applique à partir d'une autre table.

Une fois qu'un filtre de lignes est défini pour une table particulière, une formule DAX, qui doit correspondre à une valeur TRUE/FALSE, définit les lignes qui peuvent être interrogées par les membres de ce rôle particulier. Les lignes non incluses dans la formule DAX ne peuvent pas être interrogées. Par exemple, pour les membres du rôle Sales, la table Customers avec l’expression de filtres de ligne suivante, =Customers [Country] = « USA », membres du rôle Sales, ne peut voir les clients qu’aux États-Unis.

Les filtres de lignes s'appliquent aux lignes spécifiées ainsi qu'aux lignes connexes. Si une table possède plusieurs relations, les filtres appliquent la sécurité de la relation qui est active. Les filtres de lignes se croisent avec d'autres filtres de ligne définis pour les tables associées, par exemple :

Table de charge de travail Expression DAX
Région =Region[Country]="USA"
ProductCategory =ProductCategory[Name]="Bicycles"
Transactions =Transactions[Année]=2020

L’effet net de ces autorisations sur la table Transactions est que les membres seront autorisés à interroger des lignes de données où le client se trouve aux États-Unis, et où la catégorie de produit est des bicyclettes, et que l’année est 2020. Les utilisateurs ne peuvent pas interroger les transactions en dehors des États-Unis, ni les transactions qui ne sont pas des bicyclettes, ou les transactions qui ne sont pas effectuées en 2020, sauf s’ils sont membres d’un autre rôle qui accorde ces autorisations.

Vous pouvez utiliser le filtre, = FALSE() , pour refuser l’accès à toutes les lignes pour une table entière.

Pour en savoir plus sur les rôles de modèle dans Power BI, consultez Sécurité au niveau des lignes dans Power BI.

Sécurité dynamique

La sécurité dynamique permet de définir la sécurité au niveau des lignes en fonction du nom d’utilisateur de l’utilisateur actuellement connecté ou de la propriété CustomData renvoyée par un chaîne de connexion. Pour implémenter la sécurité dynamique, vous devez inclure dans votre modèle une table avec des valeurs de connexion (nom d'utilisateur Windows) pour les utilisateurs, ainsi qu'un champ qui peut être utilisé pour définir une autorisation particulière ; par exemple, une table dimEmployees avec un ID de connexion (domaine\nom utilisateur) ainsi qu'une valeur de service pour chaque employé.

Pour implémenter la sécurité dynamique, vous pouvez utiliser les fonctions suivantes dans le cadre d'une formule DAX pour retourner le nom de l'utilisateur actuellement connecté, ou la propriété CustomData dans une chaîne de connexion :

Fonction Description
Fonction USERNAME (DAX) Retourne le domaine\nom d'utilisateur de l'utilisateur actuellement connecté.
Fonction CUSTOMDATA (DAX) Retourne la propriété CustomData dans une chaîne de connexion.

Vous pouvez utiliser la fonction LOOKUPVALUE pour retourner les valeurs d'une colonne dans laquelle le nom d'utilisateur Windows est le même que le nom d'utilisateur retourné par la fonction USERNAME ou une chaîne retournée par la fonction CustomData. Les requêtes peuvent ensuite être restreintes de sorte que les valeurs retournées par LOOKUPVALUE correspondent aux valeurs de la même table ou de la table associée.

Par exemple, si vous utilisez cette formule :

='dimDepartment'[DepartmentId]=LOOKUPVALUE('dimEmployees'[DepartmentId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartment'[DepartmentId])

La fonction LOOKUPVALUE retourne des valeurs pour la colonne dimEmployees[DepartmentId] où dimEmployees[LoginId] est identique à l’ID de connexion de l’utilisateur actuellement connecté, retourné par USERNAME, et les valeurs de dimEmployees[DepartmentId] sont identiques aux valeurs de dimDepartment[DepartmentId]. Les valeurs de DepartmentId retournées par LOOKUPVALUE sont ensuite utilisées pour restreindre les lignes interrogées dans la table dimDepartment, puis dans toute table associée à DepartmentId. Seules les lignes où DepartmentId est également une valeur de DepartmentId retournée par la fonction LOOKUPVALUE sont retournées.

dimEmployees

LastName FirstName LoginId DepartmentName DepartmentId
Brown Kevin Adventure-works\kevin0 Marketing 7
Bradley David Adventure-works\david0 Marketing 7
Dobney JoLynn Adventure-works\JoLynn0 Production 4
Baretto DeMattos Paula Adventure-works\Paula0 Human Resources 2

dimDepartment

DepartmentId DepartmentName
1 Entreprise
2 Direction générale et administration
3 Gestion des stocks
4 industrie.
5 Assurance qualité
6 Recherche et développement
7 Ventes et marketing

Rôles de test

Lors de la création d’un projet de modèle dans Visual Studio, vous pouvez utiliser la fonctionnalité Analyser dans Excel pour tester l’efficacité des rôles que vous avez définis. Dans le menu Modèle du générateur de modèles, lorsque vous cliquez sur Analyser dans Excel, avant qu'Excel ne s'ouvre, la boîte de dialogue Choisir les informations d'identification et la perspective s'affiche. Dans cette boîte de dialogue, vous pouvez spécifier le nom d'utilisateur actuel, un nom d'utilisateur différent, un rôle et une perspective que vous utiliserez pour vous connecter au modèle de l'espace de travail en tant que source de données. Pour en savoir plus, consultez Analyser dans Excel.

Rôles de script

Les rôles pour les modèles déployés et les modèles sémantiques peuvent être scriptés à l’aide du langage TMSL (Tabular Model Scripting Language) pour créer ou modifier l’objet Roles. Les scripts TMSL peuvent être exécutés dans SSMS ou avec l’applet de commande PowerShell Invoke-ASCmd.

Voir aussi

Créer et gérer des rôles
Perspectives
Analyser dans Excel
Fonction USERNAME (DAX)
LOOKUPVALUE, fonction (DAX)
Fonction CUSTOMDATA (DAX)