Gestion dynamique des droits d'accès aux données avec SSAS

Gestion dynamique des droits d’accès aux données avec SSAS

Avec l’avènement de la Self-Service BI et des outils comme Power BI, les métiers veulent désormais gérer les droits d’accès et les périmètres pour chaque utilisateur eux-mêmes.

 

La gestion de sécurité SSAS est basée sur un modèle robuste par filtrage en utilisant les rôles.

Un rôle permet d’associer des autorisations sur différents objets de la base multidimensionnelle aux différents utilisateurs.

L’idée est donc de dynamiser l’accès aux données du cube en fonction de l’utilisateur connecté.

 

Pour ce faire, il faudrait ajouter ces éléments dans le datawarehouse ainsi que le cube :

  1. Au niveau du datawarehouse
  • Une table contenant la liste des utilisateurs avec leur identifiant AD
  • Une table de relation (Bridge) entre la table des utilisateurs et la dimension à sécuriser

 

  1. Au niveau du cube
  • Une dimension Utilisateur créée à partir de la table utilisateur du datawarehouse
  • Un groupe de mesure basé sur la table de relation (Bridge)

 

Exemple

Considérons ce cas de figure :

  • On a trois tables de faits (Facture, Commande et Tournée)
  • Ces tables de faits sont liées à la dimension Implantation
  • On crée la table Utilisateurs qui recense tous les utilisateurs qui devraient accéder aux données
  • On crée la table relation (Bridge) Droit_Utilisateur qui mappe les implantations aux utilisateurs

 

  1. Après avoir créé la dimension Utilisateur et le groupe de mesure Droit_Utilisateur dans le cube, on doit définir l’utilisation de la dimension comme suit :

 

  1. Après avoir traité le cube, on crée un nouveau rôle auquel on affecte le droit en lecture

 

  1. Puis on rajoute les utilisateurs ou un groupe d’utilisateurs à l’adhésion du rôle

 

  1. Dans « Données de la dimension », on sélectionne la dimension Implantation, on clique sur l’onglet « Avancé », puis on ajoute ce code :

 

NonEmpty (

[Dim Implantation].[Code Implantation].[Code Implantation].Members,

(

StrToMember (« [Dim Utilisateur].[Description Utilisateur].[Description Utilisateur].&[« + UserName () + »] »),

[Measures].[Droit Utilisateur Nombre]

)

)

 

StrToMember (« [Dim Utilisateur].[Description Utilisateur].[Description Utilisateur].&[« + UserName () + »] »)

à C’est ce bout de code qui filtre la dimension Implantation en fonction de l’utilisateur

 

  1. Maintenant, le rôle est créé et les permissions sont en place

 

  1. Pour tester, on clique sur l’icône « changer l’utilisateur » puis on sélectionne un autre utilisateur