Set-OPS-Public/roles/serveur_keycloak/meta/acces.yml
Daniel Allaire 1b16e67cdc keycloak : realm-admin par appartenance, et la boucle de mot de passe
`realm-admin` (role du client `realm-management`) est attache au GROUPE sysadmin.
Administrer le realm ne passe plus par le compte local. Portee : CE realm, jamais
`master` — le compte de secours reste hors d'atteinte du groupe, et c'est le sens
meme d'un acces de secours (D-40).

Les roles de CLIENT sont un espace de noms distinct : la declaration gagne
`roles_client`. L'API attend l'UUID du client, pas son clientId — interroger par
le nom rendait une erreur, la verification echouait toujours et la tache se
declarait `changed` a chaque passage. Deux passages consecutifs a changed=0.

La boucle de changement de mot de passe : `pwdMustChange: TRUE` signifie « quand
un ADMINISTRATEUR pose un mot de passe, l'utilisateur doit le changer ». Keycloak
ecrit en tant qu'administrateur — chaque changement relaye etait vu comme une
reinitialisation. Incompatible par construction avec un IdP qui relaie.

La contrainte est deplacee la ou l'utilisateur la voit : pwdMustChange FALSE cote
annuaire, action `UPDATE_PASSWORD` posee par Keycloak. J'avais eprouve pwdReset
au niveau LDAP, ou il marche, sans parcourir le chemin complet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 19:47:10 -04:00

28 lines
1.3 KiB
YAML

---
# Keycloak n'est pas un CONSOMMATEUR d'habilitations : il les PROJETTE (D-65).
# LDAP porte les groupes, Keycloak les traduit en roles de realm que les services
# lisent dans le jeton. Sa declaration a donc une autre forme.
#
# `projette` decrit la traduction attendue ; `porte_par` dit ce qui la realise.
acces_projection:
# `group-ldap-mapper` importe les groupes de l'annuaire dans le realm, et le
# ROLE EST ATTACHE AU GROUPE — pas a une personne (D-66). Ajouter quelqu'un a
# `cn=sysadmin,ou=groups` lui ouvre Grafana en Admin, sans deploiement.
# `serveur_keycloak_groupes_roles` declare la correspondance.
- groupe: sysadmin
projette: [grafana-admin]
porte_par: group-ldap-mapper
raison: >-
Le groupe d'administration devient le role de realm que Grafana lit dans le
claim `roles`.
# Ce que Keycloak accorde SUR LUI-MEME (sa propre console d'administration).
acces:
- groupe: sysadmin
accorde: realm-admin
# Role de CLIENT (`realm-management`), attache au GROUPE. Portee : ce realm
# seulement, jamais `master` — le compte de secours reste hors de portee du
# groupe, ce qui est le sens meme d'un acces de secours (D-40).
porte_par: role-client
raison: >-
Administration du realm : clients, mappers, politiques, utilisateurs.