Keycloak multi-tenant [fr]

June 11, 2024

Dans une infrastructure cloud, une architecture multi-tenant signifie qu’une installation est partagée pour plusieurs clients. C’est une mutualisation qui permet généralement des économies d’échelle.

En premier, nous comparerons avec l’approche simple tenant, puis nous détaillerons les avantages et les limites des types d’architectures multi-tenant avec Keycloak. Enfin, nous présenterons comment des solutions SaaS d’hébergement de Keycloak peuvent répondre à ces enjeux.

Rappel sur l’architecture simple tenant

Dans cette architecture, une installation Keycloak est associé à un seul tenant et application. Chacun de ces déploiements à son propre domaine et thème de connexion.

Avantage : 

  • Simplicité, c’est le cas d’usage standard de Keycloak.

Inconvénients :

  • Le coût de mise à l’échelle (scaling) d’une architecture simple tenant. Pour chaque nouvelle application, il faut maintenir une nouvelle stack entière de Keycloak. Des serveurs, des bases de données, des réseaux… Pour rappel, Keycloak en 2023, c’est 18 versions dont 3 majeures, donc c’est autant d’opérations de maintenance à multiplier par tenants. Pour 3 tenants, cela représente 54 mises à jour de Keycloak!

  • La duplication des identités d’un même utilisateur. Si ce dernier doit avoir accès à différentes organisations, la gestion centralisée de ses identités devient complexe. L’expérience de ce dernier est également dégradée: l’utilisateur doit jongler avec plusieurs mots de passe différents pour la même adresse email. Pour pallier cela, il est nécessaire de développer une surcouche de synchronisation

L’approche multi-royaumes

L’architecture multi-royaume consiste à avoir dans une seule instance Keycloak, un royaume par tenant.

Avantages : 

  • Mutualisation des efforts et des coûts en rassemblant tous vos tenants et vos utilisateurs au sein du même déploiement.

  • Les utilisateurs n’ont accès qu’à leur royaume et ne voient pas les clients des autres royaumes

  • C’est l’approche la plus simple, l’architecture multi-royaumes demande moins de temps de développement pour une mise en place fonctionnelle. 

Inconvénients : 

  • Pour chaque royaume, un utilisateur va avoir une identité distincte. Si un utilisateur partage plusieurs identités dans de multiples royaumes, il devient très complexe de les relier.

  • Comme tout logiciel, Keycloak a des limites connues. Au-delà de la centaine de royaumes, les performances sont dégradées : démarrage, usage de la console d’administration, la création d’entité tels les royaumes… Ce problème est un enjeu identifié par le projet.
  • Les effets de charge d’un tenant vont affecter tous les autres: I/O, mémoire, réseau, tout est partagé.

L’approche multi-clients

L’architecture multi-client, c’est un seul royaume pour l’ensemble des utilisateurs et des tenants. Avec cette architecture, la gestion des rôles des utilisateurs est déléguée à l’applicatif. Par défaut, tous les utilisateurs sont en capacité de “voir” tous les clients au sein du royaume.

Avantages: 

  • Mutualisation des efforts et des coûts en rassemblant tous les tenants et les utilisateurs au sein du même déploiement.

  • Meilleure scalabilité : Il est possible d’avoir plusieurs milliers de clients dans un royaume, contrairement aux royaumes qui se limitent à une centaine pour des problèmes de performance.

Inconvénients: 

  • Une partie de la gestion de droits des utilisateurs est déléguée au client, cela demande de la customisation du déploiement Keycloak, afin d’avoir un cloisonnement plus stricte.

  • La configuration des rôles se fait via la notion de label dans Keycloak, mais il n’est pas possible de configurer des rôles pour chaque tenant.

  • L’application doit réagir à chaque label, doit vérifier les droits attribués et gérer les accès des utilisateurs en fonction de leurs droits. Il faut être capable de bloquer totalement l’accès à l’application, pour les utilisateurs n'ayant pas les bons droits d’accès.

Alternative prometteuse pour Keycloak v25

Keycloak v25 va introduire un concept d'organisation au sein des royaumes qui feront office de tenant.

Le concept d’organisation renforce le cloisonnement au sein d’un déploiement. Les tenants contenant des utilisateurs peuvent être regroupés au sein d’une organisation. Il sera possible de créer plusieurs organisations au sein d’un même royaume, cela va ajouter un niveau de profondeur supplémentaire aux royaumes. 

Le SaaS Cloud IAM, meilleur des deux mondes ?

Pour des raisons évidentes de sécurité, notre architecture est en simple tenant, cela permet d’entièrement isoler nos clients. En cas de problème ou de coupure, cela n’impactera pas tous nos clients. Notre produit et notre expertise nous permettent de déployer, d’observer et de maintenir des centaines de Keycloak en conditions opérationnelles quotidiennement.

En ce qui concerne le multi-tenant chez Cloud-IAM, deux options :

  • La simplicité : certains de nos clients préfèrent recourir à plusieurs déploiements avec Cloud IAM. La gestion du Keycloak étant entièrement à notre charge. Ils apprécient les avantages du simple tenant sans ses problèmes, le tout pour un coût très compétitif.

  • Sur-mesure : certains de nos clients élaborent leur propre configuration basée sur une architecture multi-tenant / multi-client mentionnée plus haut. Nos experts les aident à configurer et à déployer l’architecture dans leur cas spécifique.

Written by
Last update :
William
June 11, 2024