Power BI – créer des pack contenus sécurisés pour votre entreprise

Power BI = BI Self-Service + Mobile + Agile + Collaborative.

Mais que ce cache derrière le mot collaboratif ? Le partage c’est bien, mais les données sont-elles dépendantes de l’utilisateur qui les visualise ? 

Il faut bien comprendre Power BI est avant tout un outil de BI personnelle. Lorsqu’un utilisateur modélise une solution, il le fait avec ses propres credentials. Et lorsque qu’il va partager un dashboard, ce sont ses données qu’il partage.

Si vous travaillez sur des données sensibles qui sont dépendantes des credentials de l’utilisateur qui les consulte il faudra:

  1. Mettre en place un cube Analysis Services implémentant le filtrage des données en fonction des credentials utilisateurs
  2. Télécharger, installer et paramétrer la Power BI Enterprise Gateway de façon à pouvoir explorer votre cube en direct depuis le service SaaS Power BI tout en garantissant la propagation de l’identité de l’utilisateur
  3. A l’aide de Power BI Desktop créer un rapport sur le cube
  4. Publier le rapport sur votre espace personnel
  5. Créer un pack de contenu

Pour la mise en place du cube et l’implémentation de la sécurité, c’est nous les BI Pros qui nous en chargeons avec une très forte implication des utilisateurs métiers. Le mieux étant d’utiliser Power BI comme outil de BI agile. On forme les métiers pour qu’ils soient autonomes et qu’ils puissent :

  • soit répondre à un besoin jetable qui ne doit en aucun solliciter l’IT
  • soit maquetter un besoin, commencer à produire son reporting puis solliciter l’IT qui se chargera de réindustrialiser la solution, d’en garantir la pérennité, la qualité, l’accessibilité, la sécurité, etc…

Prenons le cas d’un datamart de vente à partir duquel nous devons pouvoir analyser les ventes par article, client, date, tranche horaire et que les clients sont gérés par des commerciaux en fonction de leur répartition géographique. Nous travaillerons dans cet exemple un cube Analysis Services Tabular dont le modèle est le suivant :

ModelCubeVente

Afin de pouvoir filtrer les données par responsable de secteur, commencez par créer dans mon entrepôt :

  • une table me permettant de lister les utilisateurs [Utilisateur] = {UtilisateurSKEY int identity(1,1), UtilisateurNomPrenom(nvarchar(255) , UtilisateurLogin nvarchar(255)
  • une table permettant d’associer un utilisateur à 0..n commercial [SecuriteDirectionCommerciale] = {SecuriteDirectionCommerciale int identity(1,1), UtilisateurSKEY int, DirectionCommercialeSKEY}

Alimentez ces tables pour déterminer le périmètre de sécurité de chaque utilisateur. Pour mes tests, j’ai créé un utilisateur qui a le droit de tout visualiser et un second avec un périmètre restreint à 2 commerciaux.

Intégrez ces deux tables dans le modèle tabular et masquez les car il ne s’agit que de tables techniques.

ModelCubeVenteSecurite

Au niveau de la table SecuriteDirectionCommerciale, ajoutez la colonne calculée [UtilisateurLogin] permettant de récupérer, pour chaque ligne, le login de l’utilisateur

=RELATED(Utilisateur[UtilisateurLogin])

Il ne reste plus qu’à gérer le Row Level Security dans le cube par l’intermédiaire des Roles et d’un peu de code DAX.

Pour gérer les roles, il suffit d’aller dans le menu [Model]->[Roles]

Filtrez les données de la table ‘Direction commerciale’ en ne prenant que les lignes dont la clé [Direction commerciale SKEY] a une existence dans la table ‘SecuriteDirectionCommerciale’ pour l’utilisateur connecté. Pour récupérer l’utilisateur connecté, il suffit d’utiliser la fonction DAX USERNAME() et LOOKUPVALUE() pour effectuer des recherches table à table

='Direction commerciale'[Direction commerciale SKEY]=
LOOKUPVALUE(
	'SecuriteDirectionCommerciale'[Direction commerciale SKEY];
	'SecuriteDirectionCommerciale'[Utilisateur login];
	USERNAME();
	'SecuriteDirectionCommerciale'[Direction commerciale SKEY];
	'Direction commerciale'[Direction commerciale SKEY]
)

Déployez la solution sur votre instance SSAS Tabular et processez votre cube.

Télécharger, installez et paramétrez l’Enterprise Gateway  en suivant la documentation disponible ici.

Commencez par créer un premier rapport à l’aide de Power BI Desktop, en prenant bien soin de vous connectez en cube en précisant le mode « Connexion Directe »

PowerBiDesktopSsasDirectConnect

Construisez le rapport puis publier le sur votre espace de travail PowerBI.Com

PowerBiDesktopSurCube.png

Connectez-vous au site Power.com vérifiez l’accès au cube via le dataset, vérifiez le bon fonctionnement du rapport et créer à partir de celui-ci un dashboard. Pour mes tests, j’ai épinglé le rapport en totalité.

Pour créer votre pack de contenu, cliquez sur Paramètres puis Pack de Contenu

Et renseigner les différents éléments qui compose votre pack

PowerBIContentPack

Pour testez, la sécurité mise en place, connectez-vous à Power BI avec un autre compte et récupérer le pack de contenu (Obtenir les données-> Mon Organisation-> <votre pack de contenu>). Les données visualisées devraient être filtrées en fonction de la sécurité utilisateur propagée jusqu’au cube (On-Premise ou bien IaaS).

PowerBiDashboardSecurise

Magique !

 

 

Laisser un commentaire