Octroyer un accès personnalisé à des données de dimension (Analysis Services)
Après avoir activé l'accès en lecture à un cube, vous pouvez définir des autorisations supplémentaires qui accordent ou refusent explicitement l'accès aux membres de dimension (y compris les mesures contenues dans la dimension de mesures contenant toutes les mesures utilisées dans un cube). Par exemple, étant donné plusieurs catégories de revendeurs, vous pouvez définir des autorisations pour exclure les données d'un type spécifique. L'illustration suivante est une représentation avant/après du refus de l'accès au type d'entreprise Warehouse dans la dimension Reseller.
Par défaut, si vous pouvez lire des données à partir d’un cube Analysis Services, vous disposez automatiquement d’autorisations de lecture sur toutes les mesures et tous les membres de dimension associés à ce cube. Ce comportement peut être suffisant pour de nombreux scénarios, cependant parfois des exigences de sécurité demandent une stratégie d'autorisation segmentée, avec différents niveaux d'accès pour différents utilisateurs dans la même dimension.
Vous pouvez limiter l’accès en choisissant les membres auxquels accorder (AllowedSet) ou refuser (DeniedSet) l’accès. Pour ce faire, vous sélectionnez ou désélectionnez les membres de la dimension à inclure ou exclure du rôle.
La sécurité de base de la dimension est la plus simple : il suffit de sélectionner les attributs de dimension et les hiérarchies d'attributs à inclure ou à exclure dans le rôle. La sécurité avancée est plus complexe et nécessite une connaissance des scripts MDX. Les deux approches sont décrites ci-dessous.
Prérequis
Vous ne pouvez pas utiliser toutes les mesures, ni tous les membres de dimension dans les scénarios d'accès personnalisés. Une connexion échoue si un rôle restreint l'accès à une mesure ou un membre par défaut, ou s'il restreint l'accès à des mesures qui font partie d'expressions de mesure.
Vérifier les obstructions en matière de sécurité des dimensions : mesures par défaut, membres par défaut et mesures utilisées dans les expressions de mesure
Dans SQL Server Management Studio, cliquez avec le bouton droit sur un cube et sélectionnez Script Cube comme | ALTER To | New Éditeur de requête Window.
Recherchez
DefaultMeasure
. Vous devriez en trouver une pour le cube, et une pour chaque perspective. Quand vous définissez la sécurité des dimensions, évitez de restreindre l'accès aux mesures par défaut.Recherchez ensuite
MeasureExpression
. Une expression de mesure est une mesure basée sur un calcul, qui inclut souvent d'autres mesures. Vérifiez que la mesure que vous souhaitez restreindre n'est pas utilisée dans une expression. Sinon, continuez et limitez l'accès. Toutefois, veillez à exclure également toutes les références à cette mesure dans l'ensemble du cube.Enfin, recherchez
DefaultMember
. Notez tous les attributs qui servent de membre par défaut à un attribut. Évitez d'appliquer des restrictions à ces attributs quand vous définissez la sécurité des dimensions.
Sécurité de base de la dimension
Dans SQL Server Management Studio, connectez-vous à la instance d’Analysis Services, développez Rôles pour la base de données appropriée dans Explorateur d'objets, puis cliquez sur un rôle de base de données (ou créez un rôle de base de données).
Le rôle doit déjà avoir l'accès en lecture sur le cube. Si vous avez besoin d’aide pour cette étape, consultez Accorder des autorisations de cube ou de modèle (Analysis Services ).
Dans Dimension Data | Basic, sélectionnez la dimension pour laquelle vous définissez des autorisations.
Choisissez la hiérarchie d'attribut. Tous les attributs ne seront pas disponibles. Seuls les attributs avec AttributeHierarchyEnabled s’affichent dans la liste Hiérarchie d’attribut .
Choisissez les membres auxquels autoriser ou refuser l'accès. L’autorisation d’accès, via l’option Sélectionner tous les membres , est l’option par défaut. Nous vous suggérons de conserver cette valeur par défaut, puis de désélectionner chaque membre individuel qui ne doit pas être visible aux comptes d’utilisateur et de groupe Windows dans le volet Appartenances via ce rôle. L'avantage de ce choix est que les nouveaux membres ajoutés dans des opérations de traitement futures sont automatiquement disponibles aux personnes qui se connectent via ce rôle.
Vous pouvez également Désélectionner tous les membres pour révoquer l’accès de façon globale, puis sélectionner les membres à autoriser. Dans les opérations de traitement futures, les nouveaux membres ne sont pas visibles tant que vous ne modifiez pas manuellement la sécurité des données de la dimension pour autoriser l'accès.
Si vous le souhaitez, cliquez sur Avancé pour activer
Visual Totals
cette hiérarchie d’attributs. Cette option recalcule les agrégations en fonction des membres disponibles via ce rôle.Notes
Lorsque vous appliquez des autorisations qui suppriment des membres de la dimension, les totaux agrégés ne sont pas automatiquement recalculés. Supposons que le
All
membre d’une hiérarchie d’attributs retourne un nombre de 200 avant l’application des autorisations. Après avoir appliqué des autorisations qui refusent l’accès à certains membres,All
retourne toujours 200, même si les valeurs de membre visibles pour l’utilisateur sont beaucoup moins. Pour éviter de confondre les consommateurs de votre cube, vous pouvez configurer leAll
membre comme étant uniquement l’agrégat de ces membres de rôle, plutôt que l’agrégat de tous les membres de la hiérarchie d’attributs. Pour appeler ce comportement, vous pouvez activerVisual Totals
sous l’onglet Avancé lors de la configuration de la sécurité de dimension. Une fois activé, l'agrégation est calculée au moment de la requête au lieu d'être extraite d'agrégations précalculées. Cela peut avoir un effet notable sur les performances de la requête, c'est pourquoi il est conseillé de l'utiliser uniquement lorsque cela est nécessaire.
Masquage des mesures
Dans Accorder un accès personnalisé aux données de cellule (Analysis Services), il a été expliqué que le masquage complet de tous les aspects visuels d’une mesure, et pas seulement ses données de cellule, nécessite des autorisations sur les membres de la dimension. Cette section explique comment refuser l'accès aux métadonnées d'objet d'une mesure.
Dans Dimension Data | Basic, faites défiler la liste Dimension jusqu’à atteindre les dimensions du cube, puis sélectionnez Mesures dimension.
Dans la liste des mesures, décochez la case pour les mesures qui ne doivent pas s'afficher aux utilisateurs qui se connectent via ce rôle.
Notes
Vérifiez les conditions préalables pour apprendre à identifier les mesures qui peuvent perturber la sécurité du rôle.
Sécurité avancée de la dimension
Si vous êtes familier de MDX, vous pouvez également écrire des expressions MDX qui définissent les critères pour les membres auxquels l'accès est autorisé ou refusé. Cliquez sur Créer desdonnées | avancées de dimension de rôle | pour fournir le script.
Vous pouvez utiliser le Générateur MDX pour écrire l'instruction MDX. Pour plus d’informations, consultez MdX Builder (Analysis Services - Données multidimensionnelles). L’onglet Avancé a les options suivantes :
Attribut
Sélectionnez l'attribut dont vous voulez gérer la sécurité des membres.
Jeu de membres autorisé
Le AllowedSet peut être résolu en : aucun membre (valeur par défaut), tous les membres ou certains membres. Si vous autorisez l'accès à un attribut et ne définissez pas les membres du jeu autorisé, tous les membres sont accessibles. Si vous autorisez l'accès à un attribut et définissez un jeu de membres d'attribut spécifique, seuls les membres autorisés explicitement sont visibles.
La création d’un AllowedSet a un effet de contagion quand l’attribut participe à une hiérarchie à plusieurs niveaux. Par exemple, supposons qu'un rôle autorise l'accès à l'état Washington (dans un scénario où le rôle accorde des autorisations au service des ventes d'une société dans l'état de Washington). Pour les personnes qui se connectent via ce rôle, les requêtes qui contiennent les ancêtres (United States) ou les descendants (Seattle et Redmond) ne verront que les membres dans une chaîne qui contient l'état Washington. Dans la mesure où d'autres états ne sont pas explicitement autorisés, l'effet sera le même que si l'accès leur avait été refusé.
Notes
Si vous définissez un jeu vide ({}) de membres d’attribut, aucun membre de l’attribut n’est visible pour le rôle de base de données. Un jeu autorisé absent ne correspond pas à un jeu vide.
Jeu de membres refusé
La propriété DeniedSet peut être résolue en : aucun membre, tous les membres (valeur par défaut) ou certains membres d’attribut. Quand le jeu refusé contient uniquement un jeu de membres d'attribut spécifique, le rôle de base de données n'a pas accès à ces membres spécifiques ainsi qu'à ses descendants si l'attribut se trouve dans une hiérarchie à plusieurs niveaux. Prenons l'exemple du service des ventes de l'état de Washington. Si Washington se trouve dans le DeniedSet, les personnes qui se connectent via ce rôle verront tous les autres états à l’exception de Washington et de ses attributs descendants.
Souvenez-vous que le jeu refusé est une collection fixe. Lors du traitement de nouveaux membres qui sont ajoutés ensuite et auxquels l'accès doit également être refusé, vous devez modifier ce rôle pour ajouter ces membres à la liste.
Membre par défaut
La propriété DefaultMember détermine le jeu de données retourné à un client quand un attribut n’est pas explicitement inclus dans une requête. Lorsque l’attribut n’est pas explicitement inclus, Analysis Services utilise l’un des membres par défaut suivants pour l’attribut :
Si le rôle de base de données définit un membre par défaut pour l’attribut, Analysis Services utilise ce membre par défaut.
Si le rôle de base de données ne définit pas de membre par défaut pour l’attribut, Analysis Services utilise le membre par défaut qui est défini pour l’attribut lui-même. Le membre par défaut d'un attribut, sauf indication contraire, est le membre
All
(si l'attribut n'est pas défini comme ne pouvant pas faire l'objet d'une agrégation).
Par exemple, supposez qu'un rôle de base de données spécifie Male
comme membre par défaut de l'attribut Gender
. À moins qu’une requête inclut explicitement l’attribut Gender
et spécifie un membre différent pour cet attribut, Analysis Services retourne un jeu de données qui inclut uniquement des clients masculins. Pour plus d’informations sur la définition du membre par défaut, consultez Définir un membre par défaut.
Activer les valeurs visibles
La propriété VisualTotals indique si les valeurs des cellules agrégées affichées sont calculées en fonction de toutes les valeurs des cellules ou en fonction des valeurs des cellules auxquelles le rôle de base de données peut accéder.
Par défaut, la propriété VisualTotals est désactivée (définie sur False
). Ce paramètre par défaut optimise les performances, car Analysis Services peut calculer rapidement le total de toutes les valeurs de cellule, au lieu de passer du temps à sélectionner les valeurs de cellules à calculer.
Cependant, la désactivation de la propriété VisualTotals peut créer un problème de sécurité si un utilisateur peut utiliser les valeurs des cellules agrégées pour en déduire les valeurs pour les membres d’attribut auxquels le rôle de base de données de l’utilisateur ne peut pas accéder. Par exemple, Analysis Services utilise les valeurs de trois membres d’attribut pour calculer une valeur de cellule agrégée. Le rôle de base de données peut afficher deux de ces membres. En utilisant la valeur de cellule agrégée, un membre de ce rôle de base de données peut déduire la valeur du troisième membre de l'attribut.
La définition de la propriété VisualTotals sur True
peut éliminer ce risque. Quand vous activez la propriété VisualTotals, un rôle de base de données peut afficher seulement les totaux agrégés des membres de la dimension sur lesquels il dispose d’une autorisation.
Vérification
Cliquez pour tester la syntaxe MDX définie dans cette page.
Voir aussi
Octroyer des autorisations de cube ou de modèle (Analysis Services)
Octroyer un accès personnalisé à des données de cellule (Analysis Services)
Octroyer des autorisations sur des modèles et des structures d'exploration de données (Analysis Services)
Octroyer des autorisations sur un objet de source de données (Analysis Services)