Groupes d'annuaire
L'écran Groupes d'annuaire permet d'associer les groupes de l'annuaire d'entreprise transmis par Keycloak à un
projet, un rôle et un profil de quota facultatif, et de gérer ces profils de quota. Chemin dans le portail :
/admin/group-mappings. Il sert aux administrateurs du tenant (tenant_admin) ; les responsables sécurité et les
auditeurs le lisent.
Ce que montre l'écran
En haut, la règle appliquée par la plateforme : « Appliquées à chaque connexion à partir du claim groups : l'adhésion et le quota sont accordés tant que l'utilisateur est dans le groupe, puis retirés quand le groupe disparaît du jeton. Les adhésions accordées à la main ne sont jamais retirées. Les clés et les quotas sont gérés par la plateforme, et non par LiteLLM. »
Tableau Correspondances de groupes, avec Actualiser et Nouvelle correspondance :
| Colonne | Contenu |
|---|---|
| Groupe | Nom du groupe de l'annuaire, tel qu'il figure dans le claim groups ou entra_groups du jeton. |
| Projet | Slug du projet que rejoignent les membres. |
| Rôle | Rôle accordé : developer, viewer, auditor, finops, security_officer, agent ou tenant_admin. |
| Profil de quota | Nom du profil de quota appliqué à chaque membre, vide sinon. |
| Accès actifs | Nombre d'utilisateurs qui détiennent actuellement cette correspondance. |
| Mis à jour | Date du dernier changement. |
Un clic sur une ligne ouvre un panneau latéral avec la correspondance lue dans l'API. État vide : Aucune correspondance de groupe.
Tableau Profils de quota, avec Actualiser et Nouveau profil de quota :
| Colonne | Contenu |
|---|---|
| Nom | Nom du profil. |
| Période | month, day, hour, run ou request. |
| Application | hard (bloque) ou soft (avertit). |
| Plafond de coût | Plafond de dépense sur la période. |
| Plafond de jetons | Plafond de jetons sur la période. |
| Devise | Code de devise à trois lettres du plafond de coût. |
État vide : Aucun profil de quota, « Créez un profil pour attribuer un quota aux membres d'un groupe. »
Actions
| Bouton ou action | Ce qu'il fait | Appel d'API | Rôles |
|---|---|---|---|
| Ouverture de l'écran, Actualiser (correspondances) | Lit les correspondances. | GET /v1/identity/group-mappings | tenant_admin, security_officer, auditor |
| Nouvelle correspondance puis Créer | Formulaire Groupe (obligatoire, par exemple ai-risk-analysts), Projet (obligatoire, slug du projet, par exemple risk), Rôle (obligatoire), Profil de quota (nom du profil). | POST /v1/identity/group-mappings | tenant_admin |
| Clic sur une correspondance | Ouvre le panneau de détail. | GET /v1/identity/group-mappings/{id} | tenant_admin, security_officer, auditor |
| Modifier (correspondance) | Boîte de dialogue Groupe, Projet, Rôle, Profil de quota, Retirer le profil de quota, puis Modifier. Les accès de l'ancienne définition sont retirés ; la prochaine connexion applique la nouvelle. | PATCH /v1/identity/group-mappings/{id} | tenant_admin |
| Supprimer (correspondance) | Confirmation destructive, puis suppression ; les adhésions et quotas accordés par la correspondance sont retirés. | DELETE /v1/identity/group-mappings/{id} (impact : GET /v1/lineage/graph) | tenant_admin |
| Actualiser (profils) | Lit les profils de quota. | GET /v1/identity/quota-profiles | tenant_admin, security_officer, auditor |
| Nouveau profil de quota puis Créer | Formulaire Nom (obligatoire), Période (obligatoire), Application, Plafond de coût, Plafond de jetons, Devise (par exemple EUR). Un plafond de coût ou de jetons est obligatoire. | POST /v1/identity/quota-profiles | tenant_admin |
| Modifier (profil) | Boîte de dialogue Période, Application, Plafond de coût, Plafond de jetons. Les quotas utilisateur déjà créés depuis le profil sont mis à jour aussi. | PATCH /v1/identity/quota-profiles/{id} | tenant_admin |
| Supprimer (profil) | Confirmation destructive, puis suppression. Refusée tant qu'une correspondance utilise le profil. | DELETE /v1/identity/quota-profiles/{id} (impact : GET /v1/lineage/graph) | tenant_admin |
Rôles
D'après services/control-plane/src/eai/domains/identity/group_mappings.py : la lecture exige tenant_admin,
security_officer ou auditor (READ_ROLES, platform_admin passe toujours) ; créer, modifier et supprimer
exigent tenant_admin. Un groupe n'accorde jamais platform_admin. Le portail affiche les boutons à tout utilisateur ;
le serveur décide.
Les adhésions ajoutées à la main dans Membres et rôles ne sont jamais retirées par une correspondance. Une adhésion accordée par une correspondance puis modifiée par un administrateur devient manuelle.
Tâches courantes
Donner aux membres d'un groupe de l'annuaire l'accès à un projet
- Créer un profil de quota (facultatif). Bouton Nouveau profil de quota : Nom
analysts, Périodemonth, Applicationhard, Plafond de coût200, DeviseEUR, puis Créer. Résultat attendu : une nouvelle ligne de profil. En cas d'échec :validation_error(HTTP 422) si aucun plafond de coût ni de jetons n'est donné ;conflict(HTTP 409) si le nom existe. - Créer la correspondance. Bouton Nouvelle correspondance : Groupe tel que transmis par Keycloak
(
ai-risk-analysts), slug du Projet (risk), Rôledeveloper, Profil de quotaanalysts, puis Créer. Résultat attendu : une ligne avec Accès actifs à 0. En cas d'échec :not_foundpour un slug de projet ou un nom de profil inconnu ;conflictsi le même groupe, projet et rôle sont déjà associés. - Vérifier à la connexion suivante. Demandez à un membre du groupe de se reconnecter. Résultat attendu : Accès
actifs augmente et le membre apparaît dans Membres et rôles. En cas d'échec : le jeton ne porte pas de claim
groupsou le nom du groupe diffère (un/en tête est ignoré) ; vérifiez le mapper Keycloak.
Changer le rôle donné par un groupe
- Modifier la correspondance. Menu de la ligne > Modifier, choisissez le nouveau Rôle, puis Modifier.
Résultat attendu : Accès actifs retombe à 0, puis remonte au fil des connexions des membres. En cas d'échec :
conflictsi une autre correspondance a déjà le même groupe, projet et rôle.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
forbidden (HTTP 403) sur les listes | Votre rôle n'est ni tenant_admin, ni security_officer, ni auditor. | Adressez-vous à un administrateur du tenant. |
validation_error (HTTP 422) sur une correspondance | Aucun projet donné. | Remplissez Projet avec un slug de projet. |
validation_error (HTTP 422) sur un profil | Ni Plafond de coût ni Plafond de jetons n'est rempli. | Remplissez au moins un plafond. |
not_found (HTTP 404) | Slug de projet, nom de profil ou identifiant inconnu. | Vérifiez le slug dans Projets et environnements et le nom du profil dans le tableau. |
conflict (HTTP 409) sur Supprimer d'un profil | Une correspondance utilise encore le profil. | Modifiez les correspondances avec Retirer le profil de quota, puis supprimez-le. |
| Accès actifs reste à 0 | Aucun membre ne s'est connecté depuis le changement, ou le jeton n'a pas de claim de groupes. | Demandez à un membre de se reconnecter ; vérifiez le mapper de groupes de Keycloak. |