Aller au contenu principal

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 :

ColonneContenu
GroupeNom du groupe de l'annuaire, tel qu'il figure dans le claim groups ou entra_groups du jeton.
ProjetSlug du projet que rejoignent les membres.
RôleRôle accordé : developer, viewer, auditor, finops, security_officer, agent ou tenant_admin.
Profil de quotaNom du profil de quota appliqué à chaque membre, vide sinon.
Accès actifsNombre d'utilisateurs qui détiennent actuellement cette correspondance.
Mis à jourDate 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 :

ColonneContenu
NomNom du profil.
Périodemonth, day, hour, run ou request.
Applicationhard (bloque) ou soft (avertit).
Plafond de coûtPlafond de dépense sur la période.
Plafond de jetonsPlafond de jetons sur la période.
DeviseCode 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 actionCe qu'il faitAppel d'APIRôles
Ouverture de l'écran, Actualiser (correspondances)Lit les correspondances.GET /v1/identity/group-mappingstenant_admin, security_officer, auditor
Nouvelle correspondance puis CréerFormulaire 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-mappingstenant_admin
Clic sur une correspondanceOuvre 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-profilestenant_admin, security_officer, auditor
Nouveau profil de quota puis CréerFormulaire 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-profilestenant_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.

remarque

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​

  1. Créer un profil de quota (facultatif). Bouton Nouveau profil de quota : Nom analysts, Période month, Application hard, Plafond de coût 200, Devise EUR, 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.
  2. Créer la correspondance. Bouton Nouvelle correspondance : Groupe tel que transmis par Keycloak (ai-risk-analysts), slug du Projet (risk), Rôle developer, Profil de quota analysts, puis Créer. Résultat attendu : une ligne avec Accès actifs à 0. En cas d'échec : not_found pour un slug de projet ou un nom de profil inconnu ; conflict si le même groupe, projet et rôle sont déjà associés.
  3. 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 groups ou 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​

  1. 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 : conflict si une autre correspondance a déjà le même groupe, projet et rôle.

Dépannage​

SymptômeCauseCorrection
forbidden (HTTP 403) sur les listesVotre rôle n'est ni tenant_admin, ni security_officer, ni auditor.Adressez-vous à un administrateur du tenant.
validation_error (HTTP 422) sur une correspondanceAucun projet donné.Remplissez Projet avec un slug de projet.
validation_error (HTTP 422) sur un profilNi 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 profilUne correspondance utilise encore le profil.Modifiez les correspondances avec Retirer le profil de quota, puis supprimez-le.
Accès actifs reste à 0Aucun 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.

Pages liées​