Rôles

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

Les rôles dans les modèles tabulaires définissent des 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 les jeux de données Azure Analysis Services et Power BI, les utilisateurs doivent se trouver dans votre Azure Active Directory et les noms d’utilisateur et les groupes spécifiés doivent être par adresse de messagerie d’organisation ou UPN. par SQL Server Analysis Services, les rôles contiennent des membres utilisateur en Windows nom d’utilisateur ou par Windows groupe et les autorisations (lecture, traitement, 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 pour laquelle ces utilisateurs sont membres.

Les informations contenues dans 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 model a été déployée, les administrateurs de la base de données model peuvent gérer (ajouter, modifier, supprimer) les membres du rôle à l’aide de SSMS.

Fonctionnement 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 de serveur, rôle fixe qui fournit un accès administrateur à une instance de serveur Analysis Services.

  • 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 qui ont des autorisations spécifiques qui définissent l’action que ces membres peuvent effectuer sur la base de données model. Un rôle de bases de données est créé en tant qu’objet distinct dans la base de données et s’applique uniquement à la base de données dans laquelle il est créé. Les utilisateurs et les groupes sont inclus dans le rôle par l’auteur du modèle, qui, par défaut, dispose 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 précisément avec des filtres de 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. 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 de modèle 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 des 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

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 model 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.
Process 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 model 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 de modèle et interroger toutes les données dans le générateur de modèles, le client de création de rapports et les SSMS. Les filtres de lignes ne s'appliquent pas. Toutes les données peuvent être interrogées dans ce rôle.

Filtres de lignes

Les filtres de lignes définissent les lignes d’une table qui peuvent être interrogées par les membres d’un rôle donné. 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 lignes suivante, = Customers [Country] = "USA", les membres du rôle Sales, ne peuvent voir que les clients 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 [Year] = 2020

L’effet net de ces autorisations sur la table transactions est que les membres sont autorisés à interroger des lignes de données où le client se trouve aux États-Unis, et la catégorie de produit des bicyclettes et l’année 2020. Les utilisateurs ne sont pas en mesure d’interroger les transactions situées en dehors des États-Unis, ni les transactions qui ne sont pas des vélos, ou toute transaction non comprise dans 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.

Sécurité dynamique

La sécurité dynamique permet de définir la sécurité au niveau de la ligne en fonction du nom de l'utilisateur actuellement connecté ou de la propriété CustomData retournée par une 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 VALRECH retourne des valeurs pour la colonne dimEmployees [DepartmentId] où dimEmployees [LoginId] est le même que le LoginID de l’utilisateur actuellement connecté, renvoyé par USERNAME, et les valeurs de dimEmployees [DepartmentId] sont les mêmes que celles 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

Test des rôles

lorsque vous créez 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 et les jeux de données déployés 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
Différente
Analyser dans Excel
Fonction USERNAME (DAX)
Fonction VALRECH (DAX)
Fonction CUSTOMDATA (DAX)