Ce que permet la plateforme hébergée

Une grille de questions à poser à un hébergeur Keycloak managé, comme Cloud-IAM, pour savoir ce qu'il gère, ce qu'il autorise et ce qui reste à votre charge, avec pour chaque point ce que Keycloak permet en auto-hébergé.

Keycloak essentiel Cours 11 sur 17 de Keycloak Academy 35 min 5 questions de quiz Cours suivant : Organisations et délégation d'administration

Sur cette page
  1. Le périmètre géré
  2. Les extensions
  3. Joindre un annuaire interne
  4. Les environnements
  5. Le domaine personnalisé
  6. Les journaux et le SOC
  7. Les limites et la réversibilité
  8. Le tableau « qui fait quoi »
  9. À retenir
  10. Natif, extension ou hébergeur
  11. Quiz

Avec un Keycloak hébergé par un tiers comme Cloud-IAM, une partie des décisions d’architecture ne vous appartient plus : elle dépend de ce que l’hébergeur gère, autorise ou facture. Sa documentation interne n’est pas publique, et ce cours ne prétend pas la décrire. Il fournit une grille de questions à dérouler en séance avec l’hébergeur. Pour chaque point, il explique pourquoi la réponse change l’architecture et ce que Keycloak permet de base quand on l’héberge soi-même, pour savoir ce qui est une limite du produit et ce qui est une limite de l’offre.

Le périmètre géré

Un hébergeur managé prend en charge l’infrastructure. La question est où s’arrête cette prise en charge.

QuestionPourquoi elle compteEn auto-hébergé
Qui opère l’infrastructure (calcul, base de données, réseau, répartition de charge) et dans quelle région ?Localisation des données, exigences de souveraineté et de qualificationTout est à votre charge ; Keycloak a besoin d’une base relationnelle et de ses caches distribués
Quelle disponibilité est garantie, avec quelles pénalités ? Y a-t-il un mode multi-site ?L’IdP est un point de passage unique pour toutes les applicationsKeycloak sait fonctionner en cluster et propose une architecture multi-site documentée, au prix d’une exploitation exigeante
Comment se passent les montées de version : calendrier, préavis, recette, possibilité de différer ?Une nouvelle version peut casser une extension ou un thèmeLa branche 26 a reçu plusieurs versions mineures et de nombreux correctifs ; en pratique, la communauté ne corrige que la dernière version
Quelle supervision est en place, et vous donne-t-on accès aux métriques et à l’état de santé ?Diagnostiquer une lenteur de connexion sans accès aux métriques est difficileEndpoints de santé et métriques Prometheus activables (--health-enabled, --metrics-enabled), exposés sur le port de management (9000 par défaut)
Quelles sauvegardes : fréquence, rétention, RPO, RTO, test de restauration ? Peut-on restaurer un seul realm ?Une erreur d’administration (realm supprimé) doit être réparableSauvegarde de la base ; l’export de realm ne remplace pas une sauvegarde, il ne couvre pas tout l’état
Qui détient les droits d’administration, notamment sur le realm master ?Le compte le plus privilégié doit être connu et tracéVous détenez tout

Les extensions

Le projet aura probablement besoin d’au moins un thème, et peut-être d’extensions Java : authenticator, protocol mapper, event listener, user storage (voir le cours sur les points d’extension).

En auto-hébergé, une extension est un JAR déposé dans le dossier providers/ de Keycloak, suivi d’une reconstruction (kc.sh build) pour une image optimisée. Un thème se livre de la même façon ou dans le dossier themes/. Rien n’est limité par le produit.

Sur une plateforme managée, l’hébergeur doit accepter du code tiers dans son infrastructure. Questions à poser :

  • Existe-t-il un catalogue d’extensions fournies et maintenues par l’hébergeur ? Lesquelles, et qui les maintient à chaque version ?
  • Peut-on déployer ses propres extensions et ses thèmes ? Par quel canal (dépôt, pipeline, ticket) ? Avec quelle revue de code ou de sécurité ?
  • Qui reteste les extensions lors d’une montée de version, et que se passe-t-il si l’une d’elles casse ?
  • Les features désactivées par défaut ou en preview (par exemple certaines fonctions d’échange de jetons) peuvent-elles être activées ?
  • Peut-on modifier les flux d’authentification librement, y compris avec des authenticators fournis par extension ?
Réponse de l’hébergeurConséquence pour l’architecture
Extensions du projet acceptées, déploiement outilléParamétrage et extension sont tous deux possibles ; arbitrer sur le coût de maintenance
Catalogue fermé de l’hébergeurTout besoin hors catalogue doit être couvert par paramétrage ou porté par l’hébergeur ; à identifier tôt
Thèmes seulementLes besoins de mappers ou d’authenticators spécifiques deviennent des contraintes de conception

Joindre un annuaire interne

La fédération LDAP ou Active Directory (voir le cours sur les sources d’utilisateurs) fonctionne ainsi : Keycloak ouvre la connexion vers l’annuaire, s’y authentifie avec un compte de service, cherche l’utilisateur et vérifie son mot de passe par un bind. Le flux va donc de la plateforme vers le réseau du client. Avec Keycloak hébergé hors de ce réseau, ce flux entrant est souvent refusé par la sécurité.

Trois familles de réponses existent en général : un VPN ou un lien privé entre la plateforme et le réseau du client ; un agent installé dans le réseau du client, qui ouvre une connexion sortante vers la plateforme et relaie les requêtes LDAP ; ou l’absence de fédération directe (import, synchronisation poussée par le client, ou brokering vers un IdP interne). Questions :

  • L’hébergeur propose-t-il un agent ? N’ouvre-t-il que des connexions sortantes, vers quelles adresses et quels ports ?
  • Comment l’agent se met-il à jour, qui le supervise, peut-on en installer plusieurs pour la haute disponibilité ?
  • Que se passe-t-il si l’agent est coupé ? En mode avec import, Keycloak garde une copie des comptes, mais la vérification du mot de passe passe toujours par l’annuaire ; en mode sans import, l’utilisateur est inconnu tant que l’annuaire est injoignable. Dans les deux cas, les connexions par mot de passe LDAP échouent.
  • Quelle latence ajoute le relais ? Elle s’ajoute à chaque connexion.
  • Le LDAPS est-il de bout en bout ? Où sont les certificats ?
  • L’écriture vers l’annuaire (mode d’édition « WRITABLE ») et la synchronisation périodique passent-elles par l’agent ?

En auto-hébergé dans le réseau du client, aucune de ces questions ne se pose : Keycloak joint l’annuaire directement, avec les délais de connexion et le pool de connexions réglables dans le provider LDAP.

Les environnements

QuestionPourquoi elle compteEn auto-hébergé
Combien d’environnements (développement, recette, préproduction, production), à quel coût ?Les tests d’intégration et la recette des applications ont besoin d’un environnement stable hors productionAutant que vous voulez opérer
Sont-ils isolés (instances, bases, réseaux) ou partagent-ils une instance avec des realms distincts ?Un realm de recette dans l’instance de production partage ses ressources et ses montées de versionÀ vous de choisir
Les versions sont-elles alignées ? La montée de version passe-t-elle d’abord par la préproduction ?Recetter une montée de version avant la productionÀ vous d’organiser
Comment promouvoir une configuration d’un environnement à l’autre : export et import, Admin REST API, Terraform ?Le choix d’outillage de configuration en code en dépendAdmin REST API, kcadm.sh, export et import de realm, outils tiers
Les données de production peuvent-elles être copiées en recette ?Données personnelles, empreintes de mots de passeVotre politique

Le domaine personnalisé

L’URL de Keycloak devient l’issuer des jetons (https://sso.example.org/realms/agents) et l’adresse des métadonnées SAML. Les applications la valident. La changer après le raccordement des applications oblige à reconfigurer chacune d’elles : c’est une décision à prendre avant la première mise en production.

En auto-hébergé, l’option --hostname fixe l’URL publique, et --hostname-admin permet de servir la console d’administration sur une autre adresse, par exemple uniquement sur le réseau interne. Questions :

  • Peut-on utiliser un domaine du client (sso.client.fr) plutôt qu’un sous-domaine de l’hébergeur ? Qui gère le DNS et le certificat, et son renouvellement ?
  • Peut-on avoir un domaine distinct par environnement ?
  • La console d’administration est-elle exposée sur Internet ? Peut-on la restreindre (adresse distincte, filtrage IP) ?
  • Les en-têtes de sécurité et le pare-feu applicatif sont-ils configurables ?

Les journaux et le SOC

Keycloak produit deux familles de traces.

  • Les événements : connexions réussies et échouées, déconnexions, changements de mot de passe, enrôlements MFA (événements utilisateur), et actions dans la console ou l’API (événements d’administration). On les active par realm, ils sont stockés en base avec une durée d’expiration, et consultables dans la console ou par l’API.
  • Les journaux serveur : activité technique de Keycloak. Le handler console peut écrire en JSON (--log-console-output=json), et un handler syslog existe (--log=syslog). L’event listener jboss-logging, actif par défaut, recopie les événements utilisateur dans ces journaux : les erreurs au niveau WARN, les succès au niveau DEBUG (donc invisibles avec le niveau de log par défaut).

Pour alimenter un SIEM, on s’appuie soit sur les journaux serveur (en JSON ou en syslog), soit sur un event listener spécifique développé en extension. Le détail est traité dans le cours sur les événements et le SOC. Questions à l’hébergeur :

  • Quels flux pouvez-vous exporter : événements utilisateur, événements d’administration, journaux serveur, journaux d’accès HTTP du proxy ?
  • Par quel transport (syslog, HTTPS, connecteur vers un SIEM précis), dans quel format, avec quel délai ?
  • Avec quelle rétention côté hébergeur, et avez-vous vous-mêmes accès aux journaux serveur en cas d’incident ?
  • Peut-on activer les événements d’administration avec le détail des représentations (attention aux données personnelles) ?
  • Qui investigue un incident de sécurité sur la plateforme, et sous quel délai êtes-vous notifiés ?

Les limites et la réversibilité

Les limites se découvrent souvent trop tard. Demandez-les explicitement :

Limite à demanderPourquoi
Nombre de realms par instanceLe découpage en realms en dépend (voir le cours sur les realms)
Volumétrie : comptes, sessions simultanées, connexions par seconde, picsDimensionnement, campagnes de connexion massives (rentrée, bascule)
Limitation de débit sur l’API d’administration et les endpoints de jetonsProvisionnement en masse, batchs en client credentials
Accès à l’Admin REST API et à kcadm.shConfiguration en code, automatisation
Durées de session et sessions persistantesKeycloak 26 conserve par défaut les sessions utilisateur en base ; l’hébergeur peut l’avoir modifié
Envoi des e-mails (serveur SMTP, domaine expéditeur)Vérification d’adresse, réinitialisation de mot de passe, codes par e-mail

Et la réversibilité : si vous quittez l’hébergeur, que récupérez-vous ? La configuration des realms s’exporte. Les comptes avec leurs empreintes de mots de passe, leurs facteurs MFA enrôlés (secrets TOTP, clés WebAuthn) et leurs liens vers les fournisseurs d’identité externes sont une autre affaire. Sans eux, chaque usager devra réinitialiser son mot de passe et réenrôler son facteur. En auto-hébergé, l’export complet (kc.sh export avec les utilisateurs) inclut ces données.

Le tableau « qui fait quoi »

À l’issue de la séance, remplissez un tableau de ce type. Les colonnes sont des responsabilités, pas des hypothèses : toute case non confirmée reste marquée « à vérifier ».

ActivitéHébergeurÉquipe projet IAMÉquipes applicatives
Infrastructure, disponibilité, sauvegardesà vérifier
Montées de version Keycloakà vérifierrecette des extensions et thèmesrecette des applications
Configuration des realms, flux, clientsà vérifier
Extensions et thèmesdéploiement : à vérifierdéveloppement, maintenance
Agent ou lien vers l’annuaireà vérifier
Export des journaux vers le SOCà vérifier
Raccordement d’une applicationvalidationconfiguration côté application

Préparer la séance avec l'hébergeur

40 min

Installer le lab
  1. Relisez les grilles de ce cours et marquez les questions qui changent une décision déjà prise ou à prendre (découpage en realms, sources d’utilisateurs, MFA). Ce sont les questions à poser en premier.

  2. Sur le Keycloak du lab, listez ce qui est configurable au niveau serveur, pour savoir quelles options vous demanderez à l’hébergeur d’activer :

docker compose exec keycloak /opt/keycloak/bin/kc.sh start --help | grep -E -- '--(hostname|log|metrics|health|features)'
  1. Dans la console du lab, realm de votre choix, ouvrez Realm settings, onglet Events. Activez « Save events » pour les événements utilisateur et les événements d’administration, connectez-vous avec un utilisateur, puis consultez Events. Notez les champs disponibles : ce sont ceux que le SOC voudra recevoir.

  2. Regardez les journaux du conteneur Keycloak après une connexion échouée (docker compose logs keycloak | grep -i LOGIN_ERROR) et notez si l’événement y apparaît, et sous quelle forme.

  3. Vérifiez que le dossier des extensions est vide sur une image de base (docker compose exec keycloak ls /opt/keycloak/providers). Listez les extensions et thèmes que le projet risque de demander, avec la raison de chacun.

  4. Décrivez en trois lignes la situation réseau de l’annuaire du client : où il est, quels flux sont autorisés, qui les accorde. Préparez la question de l’agent à partir de cette description.

  5. Préparez le tableau « qui fait quoi » avec toutes les cases à « à vérifier » et envoyez la liste de questions à l’hébergeur avant la séance, pour qu’il vienne avec les bonnes personnes.

  6. Après la séance, remplacez chaque « à vérifier » par la réponse obtenue et sa source (compte rendu, contrat, documentation fournie), et reportez les limites dans les entrées « plateforme » des autres cours.

À retenir

  • Tout ce que dit ce cours sur l’hébergeur est une question, pas une réponse : les réponses viennent de la séance.
  • Distinguez ce que Keycloak ne sait pas faire de ce que l’offre ne permet pas : la seconde catégorie se négocie.
  • Quatre sujets changent l’architecture : extensions acceptées ou non, accès à l’annuaire interne, domaine définitif, export des journaux.
  • Posez la question de la réversibilité, empreintes et facteurs MFA compris, avant de signer.

Natif, extension ou hébergeur

Natif : fourni par Keycloak, à configurer. Extension : demande du code à maintenir (un SPI, le mécanisme de plugin de Keycloak). Hébergeur : dépend de la plateforme qui héberge Keycloak, à vérifier avec elle.

CapacitéVerdictPrécision
Hébergement, montées de version, supervision et sauvegardesHébergeurPérimètre, calendrier de montée de version et objectifs de restauration à obtenir de l'hébergeur.
Déploiement d'extensions (providers, thèmes) développées par l'équipe projetHébergeurKeycloak les accepte nativement (dossier providers) ; l'hébergeur décide si, comment et à quelles conditions.
Accès à un annuaire LDAP ou AD situé dans le réseau du clientHébergeurKeycloak ouvre lui-même la connexion LDAP ; un agent à connexion sortante, un VPN ou un lien privé dépend de l'offre de l'hébergeur.
Environnements (développement, recette, préproduction, production)HébergeurNombre, isolation, alignement des versions et coût à confirmer.
Domaine personnalisé et certificatHébergeurKeycloak le permet (option hostname) ; la gestion du DNS et du certificat dépend de l'hébergeur.
Export des journaux et des événements vers un SOCHébergeurFormats, transport, délai et rétention à obtenir de l'hébergeur ; un event listener spécifique serait une extension.
Événements de connexion et d'administrationNatifEnregistrés par realm et consultables dans la console ou par l'Admin REST API, quelle que soit la plateforme.

Vérifier ce que vous avez retenu

5 questions

  1. L'hébergeur annonce qu'il « gère les montées de version ». Quelle question complémentaire est la plus utile pour le document d'architecture ?

  2. L'annuaire des agents est dans le réseau interne, sans flux entrant autorisé depuis Internet. L'hébergeur propose un agent installé côté client. Quel point vérifier en priorité ?

  3. Pourquoi fixer le domaine personnalisé avant la mise en production des premières applications ?

  4. Le SOC veut recevoir les échecs de connexion en quasi temps réel. Que demander à l'hébergeur ?

  5. Quel point de réversibilité est le plus souvent oublié lors du choix d'un hébergeur Keycloak ?