Blog/Amazon web services
Amazon web services

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

Multi-tenant sur AWS : ce que change une architecture mutualisée pour un éditeur SaaS, et comment l'implémenter avec DynamoDB, Cognito et les politiques IAM.

Premaccess25 / 03 / 20204 min de lecture
Qu’est-ce que le multi-tenant et comment le mettre en oeuvre sur AWS ?

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.

TABLE DES MATIÈRES

  • Qu’est-ce qu’une infrastructure multi-tenant ?
  • Comment faire du multi-tenant avec AWS ?
  • Organisez vos bases de données avec DynamoDB
  • Créez vos utilisateurs
  • Définissez des règles de sécurité

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 :

  • Séparation franche entre chaque client, et donc entre chaque version de l’application.
  • Les données du client A ne sont pas mélangées avec celles du client B.
  • Chaque client possède sa propre base de données et son propre serveur d’application.
Qu’est-ce que le multi-tenant et comment le mettre en oeuvre sur AWS ?

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

  • Plus les clients vont être nombreux, plus il est difficile de gérer les différentes versions de l’application sur chaque infrastructure.
  • Le coût fixe pour chaque infrastructure peut être pénalisant pour les clients à faible trafic.
  • À partir de 100 clients, il est impératif d’automatiser la gestion des infrastructures, notamment avec des solutions comme BAM*.
  • À partir de 1 000 clients, ce n’est pratiquement plus gérable.

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. 

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

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

  • Il est plus facile d’en assurer la maintenance : lorsqu’une modification est apportée à un fichier, elle profite à tous les clients. Les mises à jour sont plus simples à assurer.
  • Vous réduisez vos coûts d’utilisation sur le Cloud.
  • Les temps de réponse sont bien plus rapides.
  • La gestion des clients est simplifiée, qu’ils soient au nombre de 10 ou 10 000. 

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.

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

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). 

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

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.

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

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 :

  • La gestion du multi-tenant est indépendante du reste du code.
  • Plus généralement, la gestion du contrôle d’accès aux données est ainsi indépendante du code de l’application SaaS.
  • Il est possible d’utiliser d’autres services pour réaliser des statistiques sur les données par clients, avec QuickSight notamment.

* 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. 

N'hésitez pas à nous contactez pour toutes questions ou projets !

Aller plus loin

Ce sujet vous concerne ? Découvrez notre conseil en architecture cloud, ou parlez à un expert (réponse sous 24 heures ouvrées).

Questions fréquentes
Quelle est la différence entre single-tenant et multi-tenant ?

En single-tenant, chaque client dispose de sa propre instance d'infrastructure. En multi-tenant, les clients partagent la même infrastructure et sont isolés logiquement par la donnée et les droits d'accès. Le multi-tenant réduit le coût par client, au prix d'une exigence d'isolation plus forte.

Le multi-tenant est-il moins sécurisé ?

Il déplace la sécurité de la frontière physique vers la couche logique. L'isolation repose alors sur la conception des clés de partition et sur des politiques d'accès qui restreignent chaque requête à son locataire. Correctement conçue, cette isolation est vérifiable ; mal conçue, elle est invisible jusqu'à l'incident.

Comment isoler les données de chaque client sur DynamoDB ?

En faisant entrer l'identifiant du locataire dans la clé de partition, puis en restreignant l'accès par des politiques qui conditionnent la lecture à cette clé. L'isolation est ainsi portée par le contrôle d'accès, pas seulement par le code applicatif.

Quand faut-il rester en single-tenant ?

Quand une contrainte réglementaire ou contractuelle impose une séparation physique, quand un client exige sa propre région ou son propre chiffrement, ou quand le nombre de clients est faible et la valeur unitaire élevée. Un modèle hybride, mutualisé par défaut et dédié à la demande, est fréquent.

P
PremaccessExperts Cloud · Franco-suisse depuis 2007
/ À lire aussi