Club Power BI

Please login or click SIGN UP FOR FREE to create your PowerBIUG account to join this user group.
Expand all | Collapse all

Power BI embedded et authentification App-only

  • 1.  Power BI embedded et authentification App-only

    Bronze Contributor
    Posted Apr 27, 2019 07:09 AM
    Salut,

    J'ai suivi avec attention la présentation ci-dessous concernant l'utilisation de Power BI embedded utilisant l'authentification App-only

    Using App-only Authentication with Power BI Embedding with Ted Pattison
    YouTube remove preview
    Using App-only Authentication with Power BI Embedding with Ted Pattison
    In this live event Microsoft MVP, Ted Pattison, will teach you how to leverage the new app-only authentication support currently in preview for Power BI embedding and the Power BI Service API. Ted will also discuss emerging best practices with Microsoft's App-Owns-Data model and explain why you should migrate away from older application designs based on authentication with a Master User Account.
    View this on YouTube >


    Cela soulève quelques questions pour moi maintenant :

    - Pour commencer, est-ce qu'une entreprise qui développe sur Azure utilise obligatoirement Azure Active Directory ? Sinon, ça remet en cause la suite de ma réflexion…

    - Comment savoir quelle version de Licence Power BI embedded utiliser, j'ai cru comprendre qu'il existait des environnements de test justement pour déterminer le bon niveau de licence. Est-ce quelque chose de simple à réaliser ? (Pour les développeurs au moins  ?)

    - Est-ce qu'il existe des limitations concernant Power BI embedded, par exemple le nombre de rafraîchissement des données, la taille des Datasets etc… ou est-ce que ce sont les mêmes que pour une version Pro ou une version Premium ?

    - Je ne suis pas développeur, je ne sais donc pas exactement ce que les développeurs de l'entreprise savent faire ou non mais est-ce que, par exemple, l'utilisation de Power Shell et des scripts comme dans cette vidéo est quelque chose de faisable ou faut-il un développeur spécialisé dans cet environnement ?

    Plus globalement, l'entreprise utilise actuellement une version free en faisant des publications vers le web. Je pense que ce n'est pas judicieux puisque s'ils ont 1000 clients, ils doivent filtrer les données du rapport et publier 1000 rapports différents… le jour où il faudra effectuer la moindre modification ce sera mission impossible…

    Je souhaiterais avancer un argument de poids concernant la sécurité des données, en plus de l'argument précédent, est-ce que quelqu'un aurait un exemple concret de risques auxquels ils s'exposent en utilisant cette façon de faire ? Je sais que, par exemple, on peut scanner des URL avec des logiciels jusqu'à trouver des liens vers des serveurs non sécurisés, est-ce que ce ne serait pas identique avec des liens publics créés en utilisant cette fonctionnalité « publier vers le web » ?

    Pour finir, une fois l'authentification App-only mise en place, j'imagine qu'on peut alors paramétrer la sécurité à la ligne comme pour une utilisation de Power BI embedded traditionnelle. Quelle est la principale différence entre l'authentification App-only est l'utilisation standard de Power BI embedded ?

    Merci d'avance pour votre aide, je suis preneur de tous les liens utiles concernant la mise en place de Power BI embedded de façon générale car je pense que c'est vraiment ce qu'il faut mettre en place dans ce cas précis.

    Bon week-end à tous,

    Jonathan




    ------------------------------
    Jonathan CHANAL
    Comptable
    ------------------------------


  • 2.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 01, 2019 03:43 AM
    Bonjour Jonathan,

    beaucoup de questions :) ! Je reprends le corps de ton message :

    - Pour commencer, est-ce qu'une entreprise qui développe sur Azure utilise obligatoirement Azure Active Directory ? Sinon, ça remet en cause la suite de ma réflexion…

    Paul : Disons que si l'entreprise utilise le service Power BI elle a forcément un Azure Active Directory. Le scénario le plus simple est que l'AD local soit synchronisé avec l'Azure AD. Si ce n'est pas le cas, il y aura sûrement quelques difficultés à contourner. Mais pour de l'embedded, l'authentification Azure AD ne sera nécessaire que pour le compte de service réalisant la publication des rapports (scénario app owns data).


    - Comment savoir quelle version de Licence Power BI embedded utiliser, j'ai cru comprendre qu'il existait des environnements de test justement pour déterminer le bon niveau de licence. Est-ce quelque chose de simple à réaliser ? (Pour les développeurs au moins ?)

    Paul : Je me suis penché sur des tests de charge et ceux-ci peuvent être monitorés sous Azure où l'on aura choisi au préalable entre les plans A1 à A6. Il faut faire attention à la RAM et au CPU, en cas de saturation l'évaluation des mesures s'arrête immédiatement. Si l'on dépasse le "peak render" autorisé, c'est alors un ralentissement des temps de réponses.

    - Est-ce qu'il existe des limitations concernant Power BI embedded, par exemple le nombre de rafraîchissement des données, la taille des Datasets etc… ou est-ce que ce sont les mêmes que pour une version Pro ou une version Premium ?

    Paul : Là encore, c'est la caractéristique du plan A qui définit la limite. Par exemple en A1, le dataset en mémoire ne doit pas dépasser 3Go.
    Pour le rafraichissement, par appel à l'API, on ne peut dépasser 8 par jour en pro, 48 en premium.

    - Je ne suis pas développeur, je ne sais donc pas exactement ce que les développeurs de l'entreprise savent faire ou non mais est-ce que, par exemple, l'utilisation de Power Shell et des scripts comme dans cette vidéo est quelque chose de faisable ou faut-il un développeur spécialisé dans cet environnement ?

    Paul : A mon avis, c'est surtout la partie web et l'authentification (surtout si RLS) qui nécessitera les compétences d'un développeur Web, avec quelques connaissances Azure.

    Plus globalement, l'entreprise utilise actuellement une version free en faisant des publications vers le web. Je pense que ce n'est pas judicieux puisque s'ils ont 1000 clients, ils doivent filtrer les données du rapport et publier 1000 rapports différents… le jour où il faudra effectuer la moindre modification ce sera mission impossible…

    Je souhaiterais avancer un argument de poids concernant la sécurité des données, en plus de l'argument précédent, est-ce que quelqu'un aurait un exemple concret de risques auxquels ils s'exposent en utilisant cette façon de faire ? Je sais que, par exemple, on peut scanner des URL avec des logiciels jusqu'à trouver des liens vers des serveurs non sécurisés, est-ce que ce ne serait pas identique avec des liens publics créés en utilisant cette fonctionnalité « publier vers le web » ?


    Paul : En effet, ce n'est pas sécurisé et c'est aussi en ressources partagées donc susceptibles de ne pas répondre ou très lentement.

    Pour finir, une fois l'authentification App-only mise en place, j'imagine qu'on peut alors paramétrer la sécurité à la ligne comme pour une utilisation de Power BI embedded traditionnelle. Quelle est la principale différence entre l'authentification App-only est l'utilisation standard de Power BI embedded ?

    Paul : Fais-tu référence à "app owns data" versus "user owns data" ?

    Il faut qu'on remette le sujet embedded et REX au programme d'un club Power BI sur Nantes prochainement.

    ------------------------------
    Paul PETON
    Lead Data Scientist
    infeeny
    NANTES
    ------------------------------



  • 3.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 01, 2019 05:01 AM
    Bonjour Paul,

    Oui désolé pour la quantité de question, c'était aussi pour organiser mes idées. Merci beaucoup pour tes réponses, j'ai l'impression d'être sur la bonne voie !

    Depuis ce week-end j'ai récupéré des tonnes d'infos sur tout cela et je suis en train de construire mon projet. Ce qui est bien c'est que je serai en équipe avec des développeurs qui, à mon avis, connaissent parfaitement Azure d'après ce que j'ai compris donc ça devrait bien se passer.

    "Apps owns data vs user owns data"... non, j'ai dû me mélanger un peu les pinceaux. C'est juste que j'ai cru comprendre en regardant cette vidéo que l'authentification en utilisant les logins et mots de passe de l'application était une nouveauté et que ce n'était pas forcément comme ça avant... du coup je ne voyais pas la différence entre de l'embedded "classique" et cette vidéo. Entre temps, je pense avoir compris que c'est comme ça qu'on doit s'authentifier en faisant de l'embedded tout simplement. Et ça se comprend puisque les utilisateurs n'ont pas de compte Power BI dans cette configuration.

    Je vais continuer à préparer mon projet. J'essayerai d'apporter ici quelques éléments qui pourront servir à tout le monde quand ce sera plus clair pour moi :D Si mon projet se concrétise, je pourrais également en faire un retour d'expérience (je dois déjà en faire un concernant la formation Microsoft Professional Program for Data Analysis si c'est validé).

    Ce qui m'embête dans tout ça c'est que je suis convaincu que c'est la bonne solution car le système actuel n'est pas viable (ni sécurisé) et en même temps, je ne sais pas si j'aurai toutes les compétences nécessaires pour finaliser le projet... La certification Power BI, c'est très bien mais ce n'est pas suffisant, il manque toujours une compétence, un coup Azure, un coup du développement, un coup du DAX poussé... la vie est trop dure avec moi :D Mais comme je suis un bosseur légèrement acharné, je vais me lancer quand même !

    Merci encore en tout cas et à bientôt,


    ------------------------------
    Jonathan CHANAL
    Comptable
    ------------------------------



  • 4.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 01, 2019 04:23 PM
    Petit bilan d'une journée productive !

    Je vais me répondre un peu à moi-même, ça pourra peut-être aider d'autres personnes (Vous me corrigerez si je dis des bêtises !).

    Cette fonctionnalité est en preview pour le moment. Visiblement elle devrait être finalisée avant la fin de l'année. Il y a donc des choses qui ne fonctionnent pas parfaitement pour le moment, par exemple, on doit utiliser l'API AsAdmin alors qu'elle n'est pas supportée par le token App Only. Il a fait la manip dans la vidéo en utilisant un tour de passe passe que je n'ai pas réussi à reproduire…

    Les étapes pour mettre en place ce système :

    1. Souscrire un abonnement Power BI Embedded A1 minimum
    2. Enregistrer son application sur Azure - Un site dédié a été mis en place pour faciliter la démarche et récupérer les tokens https://app.powerbi.com/embedsetup
    3. Créer un AppWorkspace car il ne faut pas publier ces applications dans MyWorkspace
    4. Importer un premier fichier pbix, un exemple est fourni
    5. Accorder les permissions à l'API

    Au fur et à mesure de la procédure, on récupère les ID nécessaires au paramétrage.

    1. Ensuite il faut se rendre dans Azure pour créer le Principal de Service (ID Objet). Il faut qu'il soit reconnu comme un admin.
    2. Il faut ensuite créer un Groupe de sécurité avec comme seul membre le Principal de Service.
    3. A travers un script, il faut ajouter le principal de service comme admin du Workspace (ce que je n'ai pas réussi à faire…).
    4. Il faut créer un certificat à partir d'un script, le copier et le coller dans l'application puis il faut ensuite l'importer dans Azure pour créer une clé de sécurité. Il apportera une couche supplémentaire de sécurité entre l'application et Azure (d'un côté une clé publique et de l'autre une clé privée).


    Je n'ai pas compris pourquoi il nous montre différentes façons de faire puisqu'il semble que ce soit la dernière la plus efficace… Mon anglais n'est pas excellent et je ne suis pas développeur, j'ai eu du mal à suivre sur la fin même en regardant pendant 12h la vidéo.

    Pour finir, si j'ai bien compris, il a saisi directement dans l'application, les identifiants de connexion des utilisateurs et il s'en sert pour modifier l'interface pour l'utilisateur, si c'est un admin il a des options pour modifier le rapport, sinon, il ne peut que consulter le rapport... Du coup, je n'ai toujours pas compris avec quoi la sécurité des données va être faite vu qu'il n'utilise pas les autorisations d'Azure Active Directory. Si quelqu'un peut m'expliquer plus clairement le fonctionnement, je suis preneur.

    Au moins, ça m'aura permis de découvrir Visual Studio et Azure un peu plus. C'est pas gagné :D !

    A plus tard, bonne soirée à tous.




    ------------------------------
    Jonathan CHANAL
    Comptable
    ------------------------------



  • 5.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 02, 2019 03:58 PM
    J'ai trouvé la dernière partie, la plus importante concernant la sécurité :

    • Il faut configurer RSL dans Power BI Desktop en s'appuyant sur la fonction USERNAME(). Il faut filtrer la table des utilisateurs avec cette fonction.
    • Comme Power BI embedded n'a pas d'informations spécifiques sur les utilisateurs, il faut transmettre les identités à travers un Token à l'aide de l'API Embed Token 
    • Cela doit comprendre, le nom d'utilisateur, le rôle et le jeu de données
    • Ensuite quand on appelle l'API REST, on récupère l'identité du client et c'est ce qui va filtrer les données
    La théorie c'est bien, l'action c'est mieux ! Plus qu'à mettre tout ça en place maintenant.

    ------------------------------
    Jonathan CHANAL
    Comptable
    ------------------------------



  • 6.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 10, 2019 10:31 AM
    Edited by Jonathan CHANAL May 10, 2019 10:32 AM
    Bonjour à tous,

    Je savais que ça allait être difficile mais là, Power BI Embedded, c'est du lourd ! Toute aide sera donc la bienvenue.

    J'ai quelques questions :

    • J'ai créé ma première application en utilisant cette procédure. J'y ai incorporé un rapport pour lequel j'ai paramétré la sécurité à la ligne. Tout semble fonctionner puisque je peux visualiser le rapport en fonction du nom d'utilisateur et du rôle qui lui est attribué. Cependant, comment l'application réelle va faire le lien entre l'authentification réelle de l'utilisateur de l'application et le nom d'utilisateur attribué dans Power BI ? Il y a toujours quelque chose qui m'échappe, comment l'application va savoir que tel utilisateur de l'application correspond à tel utliisateur paramétré dans Power BI Desktop ?
    • J'ai lu avec attention ce paragraphe à ce sujet :
      • Je vois bien le principe mais je ne comprends toujours pas comment, côté client, l'application va savoir de quel utilisateur il s'agit ?
    • Je ne comprends pas bien ce paragraphe également :
      • "Publiez-le dans les espaces de travail d'application. Ce processus diffère selon que vous utilisez un compte principal (licence Power BI Pro) ou un principal de service. Si vous utilisez un compte principal, vous pouvez publier votre rapport par le biais de Power BI Desktop. Par contre, si vous utilisez un principal de service, vous devez utiliser les API REST Power BI."
    • Quelle est la différence entre la publication du rapport via Power BI Desktop ou via l'API REST ?
    • Comment publier via l'API REST ? En utilisant PowerShell ?

    Merci d'avance pour votre aide et bon week-end à tous, moi je sors les rames et je continue d'avancer tranquillement dans mes recherches !


    ------------------------------
    Jonathan CHANAL
    Comptable
    ------------------------------



  • 7.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 14, 2019 12:57 AM
    Bonjour Jonathan,

    Embedeed reste encore malheureusement un vrai chemin de croix :( et je ne saurai pas répondre à ta première question concernant le principe de diffusion des rôles. En effet, c'est bien le rôle du client web que de reconnaître l'utilisateur puis de faire une demande correspondante au service Power BI. Il s'agit là de développement Web et le code auquel tu fais référence me semble bien répondre à ce besoin.

    Pour le second sujet, une première précision : ce qu'on lit en français comme "principal de service" correspond à l'anglais "service principal" et surtout à l'action de faire une "app registration" dans l'Azure Active Directory. Cette app peut (sous réserve d'avoir les bons droits) permettre l'utilisation de commandes PowerShell pour réaliser des actions grâce à l'API REST. Pour moi, la seule différence entre les deux processus est le degré d'automatisation que l'on veut donner.

    Bon courage !

    ------------------------------
    Paul PETON
    Lead Data Scientist
    infeeny
    NANTES
    ------------------------------



  • 8.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 14, 2019 03:16 AM
    Bonjour Paul,

    Merci beaucoup. C'est clair que ça n'a pas l'air simple du tout mais je serai d'autant plus fier quand j'aurai réussi ! Je pense qu'avec l'aide des développeurs ce sera déjà plus simple, j'ai compris les grandes lignes, j'ai fait des tests, il ne manque plus grand chose pour que ce soit fonctionnel.

    J'espère que mon projet va aboutir et quand j'aurai plus d'éléments concrets, je les partagerai volontier ici si ça peut aider certain d'entre nous. La documentation Microsoft est hyper complète mais pour certains points, il faut vraiment être développeur pour comprendre (ou alors elle n'est pas si complète que ça pour ces cas précis...).

    Bonne journée et à bientôt,

    ------------------------------
    Jonathan CHANAL
    Comptable
    ------------------------------



  • 9.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 19, 2019 05:45 PM
    Bonjour Jonathan,

    Pour le RLS et embedded tu auras selon moi deux options :

    1) Le gérer "en amont"  dans un cube data source tabulaire
    et donc passer l'@ Power BI dans la requête API afin d'obtenir l'accès token

    Dans ce cas tu places le login Power BI dans le champs Username  de la requête API Rest/Post  et tu peux formater le rôle à blanc

    A' voir si on ne peut pas passer directement un effective user name (login  AD) ,  afin d'éviter de souscrire des licences PBI ? 
    Du coup , je pense qu'un seul compte power BI PRO est nécessaire pour l'inscription de l'application Power BI Embedded sur Azure
    Mais certainement qu'il faut  cependant , provisionner de la capacité Embedded pour le tenant afin de gérer les sessions multiples

    2)  Le gérer dans Power BI via les rôles intrinsèque

    a) Tu modélise une table des accès ( Un username donne accès à X clés)
    b)  Tu remplies les valeurs rôle & usersername de l'API Rest/Post (obtention de l'accès token)

    Du coup , je pense qu'un seul compte power BI PRO est nécessaire pour l'inscription de l'application Power BI Embedded sur Azure
    Mais certainement qu'il faut cependant ,  provisionner de la capacité Embedded pour le tenant afin de gérer les sessions  multiples

    Potentiellement , tu peux mettre la valeur que tu souhaite pour username

    Bon courage et merci pour ton feedback,  car comme le dit  Paul , tout n'est pas évident

    ------------------------------
    christophe hervouet
    Consultant/CP BI
    aaaa
    Paris
    ------------------------------



  • 10.  RE: Power BI embedded et authentification App-only

    Bronze Contributor
    Posted May 20, 2019 03:51 AM
    Bonjour Christophe,

    Merci beaucoup pour ces infos. Depuis quelques temps, nous ne sommes plus obligés d'avoir recours à une licence Power BI pro. On doit utiliser le service principal à la place pour gérer les autorisations.

    En théorie, ce que je pense faire c'est exactement ce dont tu parles dans ta deuxième possibilité, faire le lien avec une table dans laquelle il y aura tous les rôles et usernames. Ce que je voulais savoir mais en fait ce n'est pas de mon niveau, c'est comment mettre en place le code dans l'application... Mais les développeurs du logiciel seront là pour ça. Je n'avais pas la prétention de vouloir le faire à leur place, je voulais juste pouvoir leur amener la solution pour éviter de leur faire perdre du temps.

    Je pense avoir suffisamment d'éléments maintenant pour mettre en place mon premier système embedded. Quoi qu'il en soit, je ferai un retour dès que j'en saurai plus, ce sera toujours intéressant.

    Bonne semaine à tous et merci encore.

    ------------------------------
    Jonathan CHANAL
    Comptable
    ------------------------------