Le Blog Amazon Web Services
Inclure des analyses multi-tenants dans vos applications avec Amazon QuickSight
Amazon QuickSight fournit des analyses intégrées, des espaces de noms pour les environnements multi-tenants, des autorisations utilisateurs personnalisées, ainsi que les personnalisations de compte – qui, avec l’intégration des tableaux de bord et les possibilités offertes par les API disponibles dans la version Entreprise, vous permettent d’intégrer de puissantes fonctions de tableau de bord et d’informatique décisionnelle dans vos applications SaaS. Les développeurs ainsi que les fournisseurs indépendants de logiciels (ou bien ISV pour “Independent Software Vendors”, en anglais) qui construisent ces applications peuvent maintenant proposer des tableaux de bord intégrés et pré-configurés à tous leurs utilisateurs finaux, tout en fournissant des fonctions avancées d’exploration des données et de construction de tableaux de bord en libre service.
Dans cet article, nous montrons comment QuickSight permet d’intégrer simplement des analyses dans une application sans avoir besoin de déployer ou gérer des infrastructures pour un ISV, permettant de supporter jusqu’à des centaines de milliers d’utilisateurs.
Fonctionnalités clés
- Intégration dans vos applications – Vous pouvez intégrer l’expérience utilisateur complète – incluant la création de tableaux de bord, les pages d’accueil, de recherche et la navigation dans les données – au sein même de vos portails ou applications. Cela permet aux développeurs ou aux ISV de fournir des capacités d’exploration de données et de création aux utilisateurs avancés d’une application, qui pourront ainsi naviguer dans les données et créer leur propres tableaux de bord et les partager avec d’autres utilisateurs ou groupes d’utilisateurs au sein de leur organisation. Cela libère les ISV de la contrainte de fournir des solutions sur mesure à chaque demande de leurs clients, tandis que les clients peuvent rapidement disposer des informations et données qui leurs sont utiles.
- Espaces de noms – Avec les espaces de noms, vous pouvez grouper logiquement et isoler des ensembles d’utilisateurs au sein d’un compte QuickSight. Avant les espaces de noms, tous les utilisateurs QuickSight faisaient partie d’un seul et même espace de noms par défaut, et par conséquent, étaient visibles les uns des autres (par exemple, lors du partage de contenu). Vous pouvez maintenant créer des auteurs et des lecteurs appartenant à une organisation au sein de leur propre espace de noms, leur offrant la visibilité à l’intérieur de leur espace mais une complète isolation vis-à-vis des autres espaces de noms au sein du compte QuickSight. Les espaces de noms ne sont pas strictement requis pour les scénarios avec des utilisateurs lecteurs uniquement, mais sont cruciaux pour fournir des fonctionnalités multi-tenants sécurisées lorsqu’on utilise l’intégration des fonctionnalités de création, de manière à ce que les auteurs ne puissent collaborer et partager qu’avec leurs collègues de travail respectifs.
- Autorisations utilisateur personnalisées – Cette fonctionnalité vous permet de personnaliser les autorisations des auteurs, en retirant par exemple la possibilité de créer/éditer des sources ou des jeux de données. Cela permet aux administrateurs de fournir un ensemble restreint de fonctionnalités aux auteurs, qu’ils utilisent l’interface native de QuickSight ou bien l’intégration des fonctions de création, et ainsi de proposer une expérience contrôlée pour les auteurs qui disposeront ainsi uniquement des jeux et sources de données qui leurs sont nécessaires.
- Personnalisation de compte – Vous pouvez désactiver les exemples d’analyses ainsi que le contenu vidéo d’introduction dans QuickSight et vous pouvez aussi spécifier un thème par défaut au niveau de l’espace de nom.
Une architecture multi-tenant intégrée
Le diagramme suivant illustre comment les différents types d’utilisateurs s’intègrent dans les espaces de noms et comment ils sont connectés à l’environnement AWS.
Sans les espaces de noms, les développeurs pourraient bien sûr construire eux-mêmes des tableaux de bord intégrés et les mettre à disposition des utilisateurs QuickSight. Par exemple, le tableau de bord suivant pour notre compagnie fictive Octank Analytica.
Avec les espaces de noms, vous pouvez étendre ces possibilités et fournir des fonctionnalités de création/édition de tableaux de bord en libre-service cette fois-ci, s’appuyant sur des jeux de données préparés spécifiques pour chaque client, créés et partagés par les développeurs ou bien les ISV. Cela est illustré dans la copie écran suivante :
Cas d’usage
Avec ce résultat en tête, voyons comment Oktank Analytica, notre ISV fictif, implémente ce genre d’environnement analytique multi-tenant dans son application SaaS existante, avec à la fois des tableaux de bord pré-configurés et des analyses en libre service associées aux fonctionnalités de création/édition de tableaux de bord. Pour des raisons de simplicité, nous supposerons qu’Oktank Analytica a deux clients, avec deux auteurs et deux lecteurs pour chaque client. Ils disposent aussi d’une équipe de développement qui utilise l’espace de noms par défaut pour développer leur contenu.
Si Oktank Analytica fournissait seulement des tableaux de bord intégrés pour l’ensemble des utilisateurs, nous pourrions simplifier l’implémentation en utilisant un seul espace de noms pour tous. En effet, les tableaux de bord sont en lecture seule, donc les lecteurs de chaque client ne peuvent voir que les données exposées dans ces mêmes tableaux de bord. Il suffirait alors simplement d’utiliser la sécurité au niveau des lignes (article en anglais) pour s’assurer que les données appropriées sont affichées aux bons utilisateurs et groupes, en l’occurrence aux différents clients d’Oktank Analytica. Pour plus d’information sur ce sujet, vous pouvez consulter Utilisation de la sécurité au niveau des lignes (RLS) pour restreindre l’accès à un ensemble de données.
Le tableau suivant résume les espaces de noms mis en place par Oktank Analytica :
Espace de noms par défaut | EspaceMaCompagnie | EspaceMaCompagnie2 | |
Lecteurs | Effoé Marie |
Paul Davide |
Julie Thomas |
Auteurs | Pierre Aline |
Jeanne Emma |
Jean Fatiha |
Administrateurs | Mohamed Annie |
– | – |
Notes | Equipe de développement | Utilisateurs MaCompagnie | Utilisateurs MaCompagnie2 |
Lors de la création des comptes utilisateurs, Oktank Analytica utilisera l’espace de noms par défaut (qui est créé pendant la configuration du compte QuickSight) pour ses propres utilisateurs, équipes de développement, administrateurs, auteurs et lecteurs comme d’habitude. Les comptes utilisateurs pour les clients d’Oktank Analytica seront en revanche configurés après avoir créé les espaces de noms correspondants. Dans cet article, nous nous attarderons sur l’exemple de MaCompagnie qui est un des client, toujours fictif, d’Oktank Analytica.
Les utilisateurs dans l’espace de noms par défaut sont donc des auteurs et administrateurs QuickSight réguliers car ils sont membres d’Oktank Analytica qui est l’ISV ici. Cependant, Oktank Analytica veut empêcher les utilisateurs de MaCompagnie de pouvoir découvrir ou accéder à un quelconque élément à l’intérieur du compte et les limiter strictement aux ensembles de données qui sont spécifiquement partagés avec eux.
Créer un espace de noms
Pour mettre en place cette solution, nous devons tout d’abord créer un espace de noms pour MaCompagnie, que nous appellerons EspaceMaCompagnie, ce que l’on peut faire avec le code suivant, en précisant que l’id du compte AWS (fictif) est 111122223333 et qu’on utilisera l’authentification via QuickSight pour simplifier l’exemple :
L’opération est asynchrone, donc il faut patienter et vérifier que la création de l’espace de noms est effective :
Personnalisation du compte QuickSight
Maintenant que l’espace de noms est créé, nous pouvons personnaliser QuickSight pour nous assurer qu’il fonctionne correctement dans cet environnement multi-tenant.
En premier lieu, nous désactivons les vidéos d’introduction et les jeux de données exemple, car Oktank Analytica a ses propres vidéos d’introduction personnalisées et souhaite que ses clients les utilisent en priorité. Les administrateurs QuickSight peuvent accéder à ces fonctionnalités via la page de Personnalisation du compte.
Personnalisation des autorisations utilisateurs
Ensuite, nous utilisons les autorisations personnalisées pour bloquer la création de nouvelles sources ou jeux de données par les utilisateurs. Cela permet à Oktank Analytica de créer des utilisateurs qui peuvent explorer les données et créer des tableaux de bord sans pouvoir se connecter à des sources de données en dehors de celles qui leurs sont partagées dans leur application.
Pour cela, il suffit de créer une stratégie d’autorisation utilisateur personnalisée. Sur la page Gérer les utilisateurs, choisissez Gérer les autorisations.
Dans la stratégie, limitez l’utilisateur à seulement les jeux de données qui sont partagés par Oktank analytica en bloquant la création/édition des jeux et sources de données. La stratégie est appelé ici DataExploration.
Créer un compte utilisateur et un groupe
Maintenant que nous avons une stratégie d’autorisation à disposition, nous pouvons créer un compte utilisateur pour Jeanne qui est autrice chez MaCompagnie, à l’aide du code suivant :
Pour le côté pratique, nous allons aussi créer des groupes pour les auteurs et les lecteurs à l’intérieur de l’espace de noms EspaceMaCompagnie :
Partager du contenu
Oktank Analytica peut maintenant utiliser ce groupe pour partager du contenu avec les utilisateurs/auteurs chez MaCompagnie. Par exemple, si Oktank Analytica veut partager un jeu de données avec ces derniers, on pourra utiliser le code suivant :
aws quicksight update-data-set-permissions --cli-input-json file://datapermissions.json
Où le fichier datapermissions.json
contient les informations suivantes, qui décrivent les permissions accordées :
De manière similaire, Oktank Analytica peut partager un tableau de bord pré-construit, ici oktank-supply-chain-dashboard, avec ce groupe :
aws quicksight update-dashboard-permissions --cli-input-json file://dbpermissions.json
Où le fichier dbpermissions.json contient les informations suivantes :
Si nécessaire, vous pouvez aussi partager le tableau de bord avec l’espace de noms au complet ce qui assurera de manière simple que l’accès soit toujours accordé aux nouveaux utilisateurs dans l’espace de noms. Il suffira pour cela de modifier le Principal
dans le fichier précédent.
Créer et partager un thème par défaut
Avant que nous puissions commencer à travailler sur l’intégration des fonctions de création, nous pouvons configurer un thème par défaut pour les auteurs dans l’espace de noms de MaCompagnie. L’éditeur de thème de QuickSight vous permet de changer les couleurs, les polices de caractères et la dispositions des éléments qui sont utilisés dans le tableau de bord, comme on peut le voir dans l’illustration suivante.
Une fois le thème personnalisé créé, vous pouvez le partager avec l’espace de noms de manière à ce que tous les utilisateurs qui en font partie puissent y accéder.
Tout d’abord, on récupère l’identifiant du thème tout juste créé, qui s’appelle ici Oktank Theme :
Pour ensuite partager ce dernier :
Le fichier permissions.json contient les éléments suivants :
Et enfin, vous pouvez aussi le configurer comme thème par défaut pour l’ensemble de l’espace de noms, via le code suivant :
Mettre en place l’expérience de création intégrée à l’application
Maintenant que nous avons créé notre espace de nom et nos utilisateurs, personnalisé QuickSight, activé un nouveau thème par défaut et partagé un jeu de données, nous pouvons passer à la configuration de l’intégration des fonctions de création à l’application.
Premièrement, assurez-vous que le domaine dans lequel vous intègrerez QuickSight est autorisé dans vos paramètres d’administration QuickSight. Vous pouvez vérifier cela dans la page Domaines et intégration.
Ensuite, assurez-vous que votre serveur d’application web a les autorisations nécessaires pour invoquer les commandes get-dashboard-embed-embed-url et get-session-embed-url, dont vous aurez besoin pour intégrer respectivement les tableaux de bord et l’interface complète de création. Bien évidemment, on se tournera dans ce cas vers la notion de rôle IAM pour accorder les autorisations à l’application. On pourra aussi consulter un autre article de blog de l’équipe AWS sur l’intégration de tableaux de bord dans des applications existantes pour voir cette partie du processus en détail.
Pour l’authentification utilisateur, QuickSight supporte à la fois les utilisateurs fédérés avec AWS Identity and Access Management (IAM) et la fédération directe QuickSight. Cela signifie que dans les deux cas, vos utilisateurs finaux ne verront jamais une page d’authentification QuickSight et seront simplement authentifiés par votre serveur. Dans notre exemple, nous utilisons la fédération QuickSight car nous avons utilisé une identité de type QuickSight pour nos utilisatrices Jeanne et Emma.
On utilisera ensuite, le code suivant pour générer l’URL à intégrer :
Avec l’aide du SDK JavaScript, nous pouvons simplement générer et intégrer cette URL dans l’application SaaS d’Oktank Analytica et ainsi permettre à Jeanne d’accéder directement, au travers de cette application, à la page d’accueil affichant les analyses spécialement préparées pour elle. A partir de là, Jeanne pourra naviguer vers la page des jeux de données où elle aura accès à l’ensemble des données qui sont à sa disposition, et démarrer des analyses de zéro si elle le souhaite. Parce que nous avons désactivé la création/édition des sources et jeux de données précédemment, l’interface de création ne montrera pas les options de connexion à de nouvelles sources de données, mais présentera uniquement le ou les jeux de données spécifiques qui sont partagés.
Quand Jeanne explore les données disponibles, QuickSight applique le thème par défaut que nous avons configuré précédemment, et lui permet d’explorer les données et de créer des tableaux de bord, en fonction de ses besoins.
Tandis qu’elle travaille sur son tableau de bord, Jeanne peut décider de le partager avec Emma, et collaborer ainsi sur celui-ci, et décider vers qui le publier à l’intérieur de MaCompagnie. Avec les espaces de noms, Oktank Analytica sait que Jeanne ne peut voir aucun autre auteur à l’exception d’Emma.
En résumé, cet ensemble de fonctionnalités Amazon QuickSight permet à Oktank Analytica de fournir une expérience d’informatique décisionnelle (ou BI, de Business Analysis en anglais) de premier ordre au sein de leur propre portail SaaS, tout en s’assurant que seuls les utilisateurs légitimes ont accès aux données partagées. QuickSight fournit des fonctionnalités d’informatique décisionnelle multi-tenant puissantes que vous pouvez configurer et mettre en production en quelques jours. Si vous souhaitez avoir de plus amples détails sur cette intégration applicative, je vous recommande le workshop QuickSight Session Embedding.
Conclusion
La combinaison des fonctionnalités d’intégration et de création de tableaux de bord, associée aux espaces de noms pour la gestion multi-tenant ainsi que les options de personnalisation du compte, permettent aux développeurs et aux ISV de rapidement mettre en place des solutions d’informatique décisionnelle avancées pour leurs utilisateurs applicatifs, tout cela sans aucune infrastructure à déployer ou gérer, et qui peuvent croître jusqu’à des millions d’utilisateurs. Pour plus d’information sur l’intégration des analyses QuickSight, consultez le guide de l’utilisateur Amazon QuickSight.
Ressources additionnelles
Pour plus d’informations, vous pouvez consulter les ressources suivantes :
- Amazon QuickSight Embedded Analytics Demo (Video)
- Amazon QuickSight Gallery (Exemples d’intégration)
- Working with Embedded Analytics (Documentation)
- Supporting Multitenancy with Isolated Namespaces (Documentation)
- Customizing Access to the Amazon QuickSight Console (Documentation)
- QuickSight Workshops
- Outils pour créer sur AWS (AWS SDK)
- Amazon QuickSight Embedding SDK (JavaScript SDK)
Article original par Jose Kunnackal, Principal Product Manager pour Amazon QuickSight chez AWS. Article adapté par Stephen Roux, Solution Architect chez AWS, France région Sud-Est.