premaccess

Qu’est-ce que le multi-tenant et comment le mettre en oeuvre sur AWS ?

Ajouter un titre 27

Ajouter un titre 27

Les éditeurs d’applications SaaS le savent bien : les infrastructures fixes, appelées single-tenant, sont faciles à déployer mais ont leurs limites notamment en terme de maintenance. C’est pourquoi nous vous conseillons vivement de passer au multi-tenant. Nombre d’entre vous hésitent à franchir le pas.
Votre crainte : que les données de vos clients ne soient pas sécurisées.
Pourtant, sur AWS, cela est possible grâce à l’alliance de trois microservices : Cognito, IAM et DynamoDB. 

Après avoir expliqué ce qu’est une architecture multi-tenant, nous vous présentons comment utiliser ces trois services sur AWS pour la mettre en œuvre.

Qu’est-ce qu’une infrastructure multi-tenant ?

Avant d’aller plus loin, expliquons le terme « Tenant » : en anglais, il signifie « Locataire », « Client ». Chaque client rassemblant un « groupe d’utilisateurs ».

Modèle single-tenant

Dans une architecture single-tenant, une seule application est utilisée par plusieurs clients, mais chacun a sa propre version de l’application installée dans une instance dédiée. 

Ce modèle a plusieurs avantages :

single-tenant : chaque client à sa propre infrastructure.

Mais, très vite, il peut être compliqué à administrer. En effet :

Modèle multi-tenant

À la différence, dans une architecture multi-tenant, une seule instance d’application va servir à plusieurs clients. Les ressources (et notamment les bases de données) y sont mutualisées. 

multi-tenant : une infrastructure pour plusieurs clients.

Avec une seule infrastructure globale, au lieu d’une par client :

En contrepartie, comme les données des clients sont mélangées, il faut que le logiciel soit développé pour séparer de manière logique les données des clients. Nous verrons plus loin que les technologies intégrées à AWS permettent de résoudre cette difficulté facilement. 

Modèle hybride

Il existe aussi une approche hybride qui permet d’optimiser son infrastructure sans avoir à faire beaucoup de modifications dans son application.

Approche hybride : mutualisation de l’application avec plusieurs bases de données dans la même instance.

Dans une approche hybride, seule l’application est mutualisée. Dans ce cas, chaque client dispose d’une base de données dédiée dans la même instance, ainsi que d’un login et d’un mot de passe.  Cette solution a l’avantage d’être facile à mettre en œuvre tout en commençant à faire des économies d’échelles sur les coûts d’infrastructures.

Comment faire du multi-tenant avec AWS ?

Lors de la création d’une architecture multi-tenant, l’enjeu crucial est, bien sûr, de sécuriser les datas afin qu’elles ne soient pas accessibles par tous.

Les développeurs d’applications SaaS doivent être en mesure d’identifier un utilisateur, de relier une donnée à son locataire, mais également un utilisateur à son locataire, et de savoir quels droits ont été concédés à tel ou tel user. 

Pour cela, sur le cloud d’AWS, nous vous conseillons d’associer les services DynamoDB, Cognito et IAM.

Organisez vos bases de données avec DynamoDB

Dans DynamoDB, chaque table, présente dans votre base de données, doit avoir une colonne permettant de stocker une référence au Tenant. En règle générale, il s’agit d’un identifiant client (organizationId). 

Dans cet exemple, la colonne “OrganizationId” permet de stocker la référence au Tenant.

Créez vos utilisateurs

En parallèle de cette gestion des tables, Amazon Cognito vous permet d’ajouter des utilisateurs à vos applications SaaS. Dans une infrastructure multi-tenant, ce service va lister les différents clients (et donc leurs utilisateurs et leurs groupes) ainsi que leurs identifiants. Par ailleurs, il va associer des attributs personnalisés à chaque utilisateur en fonction du locataire auquel il est lié afin de sécuriser son authentification, et gérer ses autorisations.

De plus, AWS gère pour vous toute la sécurité et la connexion. Tous les derniers standards, notamment les authentifications à multiples facteurs, sont disponibles sans développement de votre part.

Chaque utilisateur est membre d’un groupe. Vous pouvez ainsi gérer les accès aux données de manière fine en fonction des groupes.

Définissez des règles de sécurité

Enfin, avec IAM (Identity and Access Management), vous allez définir les règles de sécurité (polices) associées à chaque groupe. Grâce à ces règles, des filtres (LeadingKey) seront créés dans la base de données DynamoDB. Ainsi, l’utilisateur accédera exclusivement à la donnée liée au filtre. Il sera dans l’incapacité de voir le reste, comme s’il était dans une enclave dédiée.

Dans cet exemple, les règles limitent aux personnes membres du groupe l’accès aux données ayant comme clé d’accès le code du client.

Conclusion

Entre le single-tenant et le multi-tenant, nous vous conseillons de choisir le second modèle d’infrastructure car il présente des atouts considérables : maintenance facilitée, frais allégés, gestion des clients simplifiée…

Par ailleurs, grâce à l’association des trois services d’AWS (DynamoDB, Cognito et IAM), la sécurité des données y est garantie. Et la gestion des droits d’accès aux données des clients n’est pas à faire par le développeur dans son code. Elle est gérée de manière séparée avec AWS. Cela présente plusieurs avantages :

* BAM (Build Automation Machine) est une solution innovante créée par premaccess. Elle permet d’automatiser la gestion et le cycle de vie de vos infrastructures et leur déploiement chez AWS. 


A LIRE ÉGALEMENT

solution saaS comment isole Tenants IAM policies
Quitter la version mobile