Aller au contenu principal

Délégations

L'écran Délégations permet d'accorder une délégation de vos droits à un agent, une application ou un service, de la révoquer avec toutes ses descendantes, de gérer les mandats qui permettent à un agent planifié d'agir par une identité de service, de tester une autorisation à travers chaque couche et de révoquer d'un coup toutes les délégations issues d'un utilisateur. Chemin dans le portail : /security/delegations, menu Sécurité et gouvernance > Délégations. Il sert aux utilisateurs et aux développeurs qui délèguent à un agent, et aux responsables sécurité et administrateurs de tenant qui supervisent et révoquent.

Ce que montre l'écran​

L'écran (Delegations dans portal/src/screens/security-kit.tsx) comporte quatre sections.

  • Tableau Délégations, lu dans GET /v1/delegations (pagination par curseur) : colonnes Délégation, Délégataire (par exemple agent:invoice-assistant), Principal racine, Portées, Profondeur, Profondeur maximale, Statut (active, expired, revoked), Expire. Filtres Statut et Principal racine. Un clic sur une ligne ouvre la délégation chargée par GET /v1/delegations/{delegation_id}, avec la vérification de sa chaîne.
  • Tableau Mandats, lu dans GET /v1/mandates (50 lignes) : colonnes Mandat, Agent, Identité de service, Portées, Finalité, Statut, Approbation, Expire. Filtre Agent. Un clic sur une ligne ouvre le mandat depuis GET /v1/mandates/{mandate_id}.
  • Formulaire Autoriser une action : « Vérifie chaque couche : chaîne, session, utilisateur, agent, délégation, ressource et politique. »
  • Formulaire Révoquer un principal : « Révoque toutes les délégations issues de cet utilisateur. »

Formulaire Nouvelle délégation :

ChampDéfautRemarques
DélégataireObligatoire, agent:, app:, service: ou subagent: suivi d'un nom, par exemple agent:invoice-assistant.
PortéesSéparées par des virgules, par exemple rag:query, tools:invoke ; jamais plus que ce que vous détenez.
Audience, RessourcesListes séparées par des virgules.
Classification maxpublic, internal, confidential, restricted, secret ; jamais au-dessus de votre habilitation.
Profondeur maximale1De 0 à 10.
Redélégation autoriséedésactivéPermet au délégataire de restreindre et de transmettre la délégation.
Durée de vie (secondes)3600Au moins 60, au plus la limite de la plateforme (delegation_max_ttl_seconds, 86400 par défaut).
FinalitéTexte libre.

Formulaire Nouveau mandat : Agent (obligatoire), Identité de service (obligatoire), Finalité (obligatoire, au moins 3 caractères), Portées, Audience, Ressources, Classification max, Profondeur maximale (0), Durée de vie (jours) (30, au plus mandate_max_ttl_days, 365 par défaut), Planification.

Actions​

Bouton ou actionEffetAppel APIRôles
Nouvelle délégation (puis Créer)Crée une délégation racine de vous vers le délégataire ; portées et classification sont plafonnées par les vôtres.POST /v1/delegationsTout utilisateur du tenant (un agent ne peut pas créer de délégation racine)
Révoquer (menu de la ligne d'une délégation active)Ouvre un formulaire avec Raison (obligatoire), puis Révoquer : la délégation, chaque descendante et leurs contextes d'exécution sont révoqués.POST /v1/delegations/{delegation_id}/revokePrincipal racine, créateur ou mandant ; tenant_admin, security_officer pour toutes
Clic sur une ligne (Délégations)Ouvre la délégation avec sa chaîne.GET /v1/delegations/{delegation_id}Parties de la délégation ; tenant_admin, security_officer, auditor, agent
Nouveau mandat (puis Créer)Demande un mandat ; il attend une approbation décidée par une autre personne.POST /v1/mandatestenant_admin, developer, security_officer (bouton masqué pour les autres)
Révoquer (menu de la ligne d'un mandat approved ou pending)Ouvre un formulaire avec Raison (obligatoire), puis Révoquer.POST /v1/mandates/{mandate_id}/revokeDemandeur ; tenant_admin, security_officer pour tous
Clic sur une ligne (Mandats)Ouvre le mandat.GET /v1/mandates/{mandate_id}Tout utilisateur du tenant
Exécuter (Autoriser une action)Contrôle une Action (obligatoire, par exemple tool.invoke) pour une Délégation ou un Identifiant d'exécution, avec Portée, Ressource (tool:crm.lookup), Relation, Classification des données facultatives ; affiche la décision.POST /v1/delegations/authorizeTout utilisateur du tenant
Exécuter (Révoquer un principal)Après une confirmation, révoque toutes les délégations issues de Principal, avec une Raison (tous deux obligatoires).POST /v1/delegations/revoke-principaltenant_admin, security_officer (formulaire masqué pour les autres)
Filtrer, icône d'actualisationAppliquent les filtres, relisent une liste.GET /v1/delegations ou GET /v1/mandatesTout utilisateur du tenant

Rôles​

Le portail masque Nouveau mandat aux rôles autres que tenant_admin, developer, security_officer, et le formulaire Révoquer un principal aux rôles autres que ROLES.delegationAdmins (tenant_admin, security_officer, portal/src/lib/kit.ts). Le Control Plane (services/control-plane/src/eai/domains/delegation/routes.py, services/control-plane/src/eai/domains/delegation/service.py, services/control-plane/src/eai/domains/delegation/mandates.py) décide le reste :

  • chacun dans le tenant peut déléguer ses propres droits, jamais plus que ce qu'il détient ;
  • tenant_admin, security_officer et auditor voient toutes les délégations ; les autres utilisateurs ne voient que celles dont ils sont la racine, le créateur ou le mandant ;
  • un mandat est approuvé par une autre personne que son demandeur, dans la boîte des approbations ;
  • platform_admin passe tous les contrôles de rôle.

Tâches courantes​

Déléguer un accès en lecture à un agent​

  1. Ouvrir le formulaire. Une délégation permet à l'agent d'agir pour vous dans des limites. Cliquez Nouvelle délégation. Résultat attendu : un panneau latéral avec Profondeur maximale 1 et Durée de vie (secondes) 3600. En cas d'échec : sans tableau, la liste ne s'est pas chargée ; cliquez Réessayer.
  2. Fixer les limites. Saisissez Délégataire agent:<nom>, Portées rag:query, Classification max internal, laissez Redélégation autorisée désactivé. Résultat attendu : le formulaire est complet. En cas d'échec : rien à relancer à cette étape.
  3. Créer. Cliquez Créer. Résultat attendu : le message Créé et une ligne active avec son échéance. En cas d'échec : delegation_scope_exceeds (HTTP 403) ou delegation_classification_exceeds (HTTP 403) si vous demandez plus que ce que vous détenez ; delegation_ttl_exceeded (HTTP 400) au-delà de la limite de la plateforme ; invalid_request (HTTP 400) pour un délégataire sans préfixe connu.
  4. La tester. Formulaire Autoriser une action : Action rag.query, Délégation le nouvel identifiant, puis Exécuter. Résultat attendu : la décision de chaque couche. En cas d'échec : invalid_request avec « delegation_id or run_id is required » quand les deux sont vides.

Gérer le départ d'un utilisateur​

  1. Trouver ses délégations. Filtre Principal racine avec l'identifiant de l'utilisateur, Filtrer. Résultat attendu : chaque délégation issue de cet utilisateur. En cas d'échec : un tableau vide si vous n'êtes pas administrateur et que les délégations ne sont pas les vôtres.
  2. Tout révoquer. Formulaire Révoquer un principal : Principal l'identifiant de l'utilisateur, Raison, Exécuter, acceptez la confirmation. Résultat attendu : le résultat liste les délégations révoquées ; leurs lignes passent à revoked après actualisation. En cas d'échec : forbidden (HTTP 403) si vous n'êtes ni tenant_admin ni security_officer.

Donner un mandat à un agent planifié​

  1. Le demander. Un agent planifié n'a pas d'utilisateur derrière lui : le mandat le lie à une identité de service. Cliquez Nouveau mandat, remplissez Agent, Identité de service, Finalité, Portées, Durée de vie (jours), puis Créer. Résultat attendu : une ligne pending avec son Approbation. En cas d'échec : service_identity_not_found (HTTP 404), service_identity_disabled (HTTP 409), delegation_scope_exceeds (HTTP 403) quand les portées dépassent celles de l'identité, mandate_ttl_exceeded (HTTP 400).
  2. Le faire approuver. Une autre personne décide l'approbation dans la boîte des approbations. Résultat attendu : le statut approved. En cas d'échec : le demandeur ne peut pas décider sa propre approbation.

Dépannage​

SymptômeCauseCorrection
delegation_root_forbidden (HTTP 403)Un agent ne peut pas créer de délégation racine : il peut seulement restreindre celle qu'il a reçue.Créez la délégation depuis un utilisateur ou une application.
delegation_scope_exceeds (HTTP 403)Les droits demandés dépassent les droits détenus par le délégant.Réduisez Portées.
delegation_classification_exceeds (HTTP 403)La classification demandée dépasse l'habilitation du délégant.Abaissez Classification max.
delegation_ttl_exceeded (HTTP 400)La durée dépasse le maximum de la plateforme.Réduisez Durée de vie (secondes).
invalid_request (HTTP 400) avec max_depthProfondeur maximale au-dessus de 10.Choisissez une valeur de 0 à 10.
forbidden (HTTP 403) sur RévoquerVous n'êtes pas partie de la délégation ni administrateur.Demandez à un tenant_admin ou à un security_officer.
delegation_not_found (HTTP 404)Délégation inconnue, ou que vous ne pouvez pas voir.Vérifiez l'identifiant et vos rôles.
mandate_closed (HTTP 409)Le mandat est déjà rejeté ou révoqué.Demandez un nouveau mandat.
validation_error (HTTP 422) sur Autoriser une actionAction doit ressembler à tool.invoke, Ressource à tool:crm.lookup.Corrigez le format.

Pages liées​