Aller au contenu

SSO et identités (Kanidm)

Kanidm 🡕 est le fournisseur d’identité du réseau : une identité unique ouvre tous les services (SSO). Le service idm tourne sur le HCS (et, en option, en réplica dans chaque zone).

Comptes et groupes sont provisionnés dans Kanidm depuis etc/config.yaml :

etc/config.yaml
users:
alice:
profile: "nix-admin"
groups: ["idm-admins", "idm-devs", "global"]
  • Les groupes pilotent les accès aux services.
  • Deux groupes spéciaux : idm-admins (administration), idm-devs (développement).

Les services compatibles OIDC sont reliés au SSO automatiquement : Kanidm provisionne un client OAuth2 par service, et son secret est géré par sops. Rien à configurer à la main.

Un service sans authentification propre (page d’accueil, site statique) se protège en plaçant une mire de connexion Kanidm devant lui (oauth2-proxy + Caddy). Pour la page d’accueil, deux réglages sur l’hôte passerelle (usr/machines/<passerelle>/) :

darkone.service.homepage.protect = true; # exige une session Kanidm
darkone.service.homepage.protectExternalOnly = true; # interne libre, externe authentifié
OptionDéfautEffet
protecttruePage d’accueil réservée aux utilisateurs Kanidm (groupe users)
protectExternalOnlyfalseLAN/VPN sans connexion, login requis depuis l’extérieur

Le mode est déduit de l’endroit où idm est déclaré :

  1. idm sur le HCS seul → instance unique, pas de réplication.
  2. idm sur une passerelle sans HCS → instance autonome dans la zone.
  3. idm sur le HCS et des passerelles → réplication : le HCS fournit, chaque passerelle est un réplica en lecture seule.
Diagram

L’administration se fait en ligne de commande sur le HCS :

Fenêtre de terminal
just enter hcs
kanidm person credential create-reset-token <login> --name idm_admin

Voir Créer un compte utilisateur et Réinitialiser un mot de passe.