Partager via


Accorder un accès personnalisé aux 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 autorisent ou refusent explicitement l’accès aux membres de dimension (y compris les mesures contenues dans la dimension 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 des données pour un type d’entreprise spécifique. L’illustration suivante montre la conséquence avant et après la suppression de l’accès au type d’entreprise Entrepôt dans la dimension Revendeur.

Tableaux croisés dynamiques avec et sans membre de dimension

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 membres de dimension associés à ce cube. Bien que ce comportement puisse être suffisant pour de nombreux scénarios, les exigences de sécurité appellent parfois une stratégie d’autorisation plus segmentée, avec différents niveaux d’accès pour différents utilisateurs, sur la même dimension.

Vous pouvez restreindre l’accès en choisissant les membres à autoriser (AllowedSet) ou refuser l’accès (DenySet). Pour ce faire, sélectionnez ou désélectionnez les membres de dimension à inclure ou exclure du rôle.

La sécurité de dimension de base est la plus simple ; vous sélectionnez simplement 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 expertise en matière de script MDX. Les deux approches sont décrites ci-dessous.

Conditions préalables

Toutes les mesures ou membres de dimension ne peuvent pas être utilisés dans des 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 restreint l’accès aux mesures qui font partie d’expressions de mesure.

Rechercher les obstacles à la sécurité de dimension : mesures par défaut, membres par défaut et mesures utilisées dans les expressions de mesure

  1. Dans SQL Server Management Studio, cliquez avec le bouton droit sur un cube, puis sélectionnez Script Cube as | ALTER To | New Query Editor Window.

  2. Recherchez DefaultMeasure. Vous devez en trouver un pour le cube et un pour chaque perspective. Lors de la définition de la sécurité de dimension, évitez de restreindre l’accès aux mesures par défaut.

  3. Ensuite, recherchez MeasureExpression. Une expression de mesure est une mesure, basée sur un calcul, où le calcul 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, veillez simplement à exclure toutes les références à cette mesure tout au long du cube.

  4. Enfin, recherchez DefaultMember. Notez tous les attributs qui servent de membre par défaut d’un attribut. Évitez de mettre des restrictions sur ces attributs lors de la configuration de la sécurité de dimension.

Sécurité de la dimension de base

  1. Dans SQL Server Management Studio, connectez-vous à l’instance d’Analysis Services, développez Rôles pour la base de données appropriée dans l’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 un accès en lecture au cube. Consultez Accorder des autorisations de cube ou de modèle (Analysis Services) si vous avez besoin d’aide pour cette étape.

  2. Dans Dimension Data | Basic, sélectionnez la dimension pour laquelle vous définissez des autorisations.

  3. Choisissez la hiérarchie d’attributs. Tous les attributs ne seront pas disponibles. Seuls ces attributs ayant AttributeHierarchyEnabled apparaissent dans la liste Hiérarchie d’attributs .

  4. Choisissez les membres à autoriser ou refuser l’accès. Autoriser l’accès, via l’option Sélectionner tous les membres , est la valeur par défaut. Nous vous suggérons de conserver cette valeur par défaut, puis d’effacer les membres individuels qui ne doivent pas être visibles par les comptes d’utilisateur et de groupe Windows dans le volet Appartenances via ce rôle. L’avantage est que les nouveaux membres ajoutés dans les futures opérations de traitement sont automatiquement disponibles pour les personnes qui se connectent via ce rôle.

    Vous pouvez également désélectionner tous les membres pour révoquer l’accès global, puis sélectionner les membres à autoriser. Dans les prochaines opérations de traitement, les nouveaux membres ne sont pas visibles tant que vous n’avez pas modifié manuellement la sécurité des données de dimension pour leur permettre d’y accéder.

  5. Facultativement, cliquez sur Avancé pour activer Visual Totals cette hiérarchie d'attributs. Cette option recalcule les agrégations en fonction des membres disponibles via le rôle.

    Remarque

    Lorsque vous appliquez des autorisations qui suppriment les membres de dimension, les totaux agrégés ne sont pas recalculés automatiquement. 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 nombreuses. Pour éviter de confondre les consommateurs de votre cube, vous pouvez configurer le membre All pour qu'il soit l'agrégation uniquement des membres auxquels les membres de rôle sont associés, plutôt que l'agrégation de tous les membres de la hiérarchie des attributs. Pour appeler ce comportement, vous pouvez activer Visual Totals sous l’onglet Avancé lors de la configuration de la sécurité de dimension. Une fois activé, l’agrégat est calculé au moment de la requête plutôt que récupéré à partir d’agrégations précalculées. Cela peut avoir un effet notable sur les performances des requêtes. Utilisez-le uniquement si 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 dimension. Cette section explique comment refuser l’accès aux métadonnées d’objet d’une mesure.

  1. Dans Dimension Data | Basic, faites défiler la liste Dimension jusqu’à atteindre les dimensions du cube, puis sélectionnez Dimension mesures.

  2. Dans la liste des mesures, désactivez la case à cocher pour les mesures qui ne doivent pas apparaître pour les utilisateurs qui se connectent via ce rôle.

Remarque

Vérifiez les conditions préalables pour savoir comment identifier les mesures qui peuvent interrompre la sécurité des rôles.

Sécurité avancée des dimensions

Si vous avez une expertise MDX, une autre approche consiste à écrire des expressions MDX qui définissent les critères pour lesquels les membres sont autorisés ou refusés. Cliquez sur Créer un rôle | Dimension Data | Avancé 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é propose les options suivantes :

Attribut
Sélectionnez l’attribut pour lequel vous souhaitez gérer la sécurité des membres.

Jeu de membres autorisé
AllowedSet peut ne pas inclure de membres (valeur par défaut), inclure tous les membres, ou inclure certains membres. Si vous autorisez l’accès à un attribut et que vous ne définissez aucun membre du jeu autorisé, l’accès à tous les membres est accordé. Si vous autorisez l’accès à un attribut et définissez un ensemble spécifique de membres d’attribut, seuls les membres explicitement autorisés sont visibles.

La création d’un AllowedSet a un effet d’onde lorsque l’attribut participe à une hiérarchie multiniveaux. Par exemple, supposons qu’un rôle autorise l’accès à l’état de Washington (supposons un scénario dans lequel le rôle accorde des autorisations à la division des ventes de l’État de Washington d’une entreprise). Pour les personnes qui se connectent via ce rôle, les requêtes qui incluent les ancêtres (États-Unis) ou les descendants (Seattle et Redmond) verront uniquement les membres d’une chaîne incluant l’État de Washington. Étant donné que d’autres états ne sont pas explicitement autorisés, l’effet sera le même que s’ils étaient refusés.

Remarque

Si vous définissez un jeu vide ({}) de membres d’attribut, aucun membre de l’attribut ne sera visible pour le rôle de la base de données. L'absence d'un ensemble autorisé n'est pas interprétée comme un ensemble vide.

Ensemble de membres interdit
La propriété DeniedSet peut être résolue en aucun membre, tous les membres (par défaut) ou certains membres d’attribut. Lorsque l'ensemble refusé contient uniquement un ensemble spécifique de membres d'attribut, le rôle de base de données se voit refuser l'accès uniquement à ces membres spécifiques, ainsi qu'à leurs descendants si l'attribut se trouve dans une hiérarchie à plusieurs niveaux. Prenons l’exemple de la division des ventes de l’État de Washington. Si Washington est placé dans le DeniedSet, les personnes qui se connectent via ce rôle verront tous les autres États sauf Washington et ses attributs descendants.

Rappelez-vous que, comme mentionné dans la section précédente, l'ensemble refusé est une collection fixe. Si le traitement introduit par la suite de nouveaux membres qui doivent également être refusés d’accès, 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 lorsqu’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 défini pour l’attribut lui-même. Le membre par défaut d’un attribut, sauf indication contraire, est le All membre (sauf si l’attribut est défini comme non aggregatable).

Par exemple, supposons qu’un rôle de base de données spécifie Male comme membre par défaut de l’attribut Gender . Sauf si 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 incluait uniquement les clients masculins. Pour plus d’informations sur la définition du membre par défaut, consultez Définir un membre par défaut.

Activer Le Total Visuel
La propriété VisualTotals indique si les valeurs de cellule agrégées affichées sont calculées en fonction de toutes les valeurs de cellule ou uniquement en fonction des valeurs de cellule visibles par le rôle de base de données.

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 rapidement calculer le total de toutes les valeurs de cellule, au lieu de devoir passer du temps à sélectionner les valeurs de cellules à calculer.

Toutefois, la désactivation de la propriété VisualTotals peut créer un problème de sécurité si un utilisateur peut utiliser les valeurs de cellule agrégées pour déduire les valeurs des membres d’attribut auxquels le rôle de base de données de l’utilisateur n’a pas accès. 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 a accès à deux sur ces trois éléments d'attribut. À l’aide de 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 d’attribut.

La définition de la propriété VisualTotals à True élimine ce risque. Lorsque vous activez la propriété VisualTotals, un rôle de base de données ne peut afficher que les totaux agrégés pour les membres de dimension auxquels le rôle est autorisé.

Vérification
Cliquez pour tester la syntaxe MDX définie sur cette page.

Voir aussi

Accorder des autorisations pour le cube ou le modèle (Analysis Services)
Accorder un accès personnalisé aux données de cellule (Analysis Services)
Accorder des autorisations sur les structures et modèles d’exploration de données (Analysis Services)
Donner des droits d'accès sur un objet de source de données (Analysis Services)