Accès d'urgence
L'écran Accès d'urgence permet de demander un accès d'urgence (rôles ou portées supplémentaires pour une durée limitée), de le suivre jusqu'à l'approbation par deux personnes distinctes, de le révoquer et, en tant que bénéficiaire, d'émettre le contexte d'exécution signé qui porte l'élévation. Chemin dans le portail : /security/break-glass, menu Sécurité et gouvernance > Accès d'urgence. Il sert à tout utilisateur du tenant qui a besoin d'un accès d'urgence, et aux responsables sécurité et administrateurs de tenant qui supervisent et approuvent.
Ce que montre l'écran
L'écran (BreakGlass dans portal/src/screens/security-kit.tsx) commence par l'indication « Un accès exige deux approbateurs distincts (responsable sécurité ou administrateur du locataire), jamais le demandeur ni le bénéficiaire. Décidez-le dans la boîte des approbations. », puis le tableau Accès accordés lu dans GET /v1/break-glass (50 lignes).
| Colonne | Contenu |
|---|---|
| Accès | Identifiant de l'accès. |
| Demandeur | Qui a demandé. |
| Bénéficiaire | Qui reçoit l'élévation (le demandeur par défaut). |
| Rôles | Rôles accordés, par exemple tenant_admin. |
| Raison | Justification. |
| Statut | pending, active, expired, rejected, revoked. |
| Approbation | Identifiant de la demande d'approbation. |
| Expire | Fin de l'accès. |
Filtre Statut. Un clic sur une ligne ouvre l'accès chargé par GET /v1/break-glass/{grant_id}. Un accès active dont l'échéance est passée devient expired à la lecture suivante. Tableau vide : « Aucun accès », « Demandez un accès d'urgence avec un motif et une durée. »
Formulaire Demander un accès :
| Champ | Défaut | Remarques |
|---|---|---|
| Raison | Obligatoire, au moins 10 caractères. | |
| Durée (s) | 900 | Obligatoire, de 60 à break_glass_max_seconds (3600 par défaut). |
| Rôles | Rôles du tenant séparés par des virgules, par exemple tenant_admin ; platform_admin est refusé. | |
| Portées | Portées séparées par des virgules. Rôles ou portées : au moins un. | |
| Bénéficiaire | Par défaut : vous. | |
| Référence d'incident | Lien vers l'incident. |
Actions
| Bouton ou action | Effet | Appel API | Rôles |
|---|---|---|---|
| Demander un accès (puis Créer) | Enregistre l'accès pending et ouvre une demande d'approbation avec un quorum de deux approbateurs distincts, demandeur et bénéficiaire exclus ; audité sous break_glass.request. | POST /v1/break-glass | Tout utilisateur du tenant |
Révoquer (menu de la ligne, accès pending ou active) | Ouvre un formulaire avec une Raison facultative, puis Révoquer : l'élévation cesse aussitôt. | POST /v1/break-glass/{grant_id}/revoke | Demandeur ; security_officer, tenant_admin pour tous |
Émettre un contexte (menu de la ligne, accès active) | Ouvre un formulaire avec Audience (liste) et Durée de vie (secondes) (30 à 86400), puis Émettre un contexte : renvoie un contexte d'exécution signé portant l'élévation, borné par l'échéance de l'accès, affiché dans un panneau latéral. | POST /v1/break-glass/{grant_id}/context | Le bénéficiaire seulement |
| Clic sur une ligne ou Voir le détail | Ouvre l'accès. | GET /v1/break-glass/{grant_id} | Demandeur, bénéficiaire ; tenant_admin, security_officer, auditor |
| Filtrer, icône d'actualisation | Appliquent le filtre Statut, relisent la liste. | GET /v1/break-glass (paramètre status) | Tout utilisateur du tenant |
L'approbation elle-même ne se décide pas sur cet écran : les deux approbateurs la décident dans la boîte des approbations.
Un accès d'urgence élève les privilèges. Gardez une Durée (s) courte, renseignez Référence d'incident et révoquez l'accès dès la fin de l'urgence.
Rôles
Le portail ne masque aucun bouton sur cet écran ; les actions de ligne suivent le statut de l'accès. Le Control Plane (services/control-plane/src/eai/domains/delegation/routes.py et services/control-plane/src/eai/domains/delegation/break_glass.py) décide :
- tout utilisateur du tenant peut demander ;
tenant_admin,security_officeretauditorvoient tous les accès, les autres utilisateurs seulement ceux qu'ils ont demandés ou reçoivent ; - les approbateurs sont
security_officeroutenant_admin, deux distincts, jamais le demandeur ni le bénéficiaire ; - le demandeur, un
security_officerou untenant_adminpeut révoquer ; - seul le bénéficiaire peut émettre le contexte d'exécution d'un accès
active; platform_adminpasse tous les contrôles de rôle, mais ne peut jamais être accordé par accès d'urgence.
Tâches courantes
Obtenir un accès d'urgence
- Le demander. L'accès est limité dans le temps et rattaché à un incident. Cliquez Demander un accès, remplissez Raison (au moins 10 caractères), Durée (s), Rôles
tenant_admin, Référence d'incident, puis Créer. Résultat attendu : le message Créé et une lignependingavec son Approbation. En cas d'échec :break_glass_duration_exceeded(HTTP 400) pour une durée hors de 60 au maximum ;invalid_request(HTTP 400) pour un rôle inconnu,platform_admin, ni rôle ni portée, ou une raison trop courte. - Le faire approuver. Deux approbateurs décident la demande d'approbation dans la boîte des approbations. Sollicitez deux
security_officeroutenant_admin, autres que vous et le bénéficiaire. Résultat attendu : le statutactiveet une date Expire. En cas d'échec : le statutrejectedsignifie qu'un approbateur a refusé. - Émettre le contexte. L'élévation voyage dans un contexte d'exécution signé. En tant que bénéficiaire, menu de la ligne > Émettre un contexte, Audience et Durée de vie (secondes) facultatives, puis Émettre un contexte. Résultat attendu : un panneau latéral avec le contexte signé. En cas d'échec :
forbidden(HTTP 403) si vous n'êtes pas le bénéficiaire ;break_glass_not_active(HTTP 409) si l'accès n'est pasactive;context_wrong_audience(HTTP 400) pour une audience inconnue.
Mettre fin à l'accès plus tôt
- Le révoquer. La révocation ferme l'élévation avant son échéance. Menu de la ligne > Révoquer, Raison facultative, puis Révoquer. Résultat attendu : le message Terminé et le statut
revoked. En cas d'échec :break_glass_closed(HTTP 409) si l'accès est déjà expiré, rejeté ou révoqué ;forbiddensi vous n'êtes ni le demandeur ni un rôle approbateur.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
break_glass_duration_exceeded (HTTP 400) | La durée doit être comprise entre 60 secondes et le maximum de la plateforme. | Réduisez Durée (s). |
invalid_request (HTTP 400) avec roles | Un rôle est inconnu ou vaut platform_admin, ou ni rôle ni portée n'est fourni. | Indiquez des rôles du tenant ou des portées. |
invalid_request avec « a justification of 10 characters at least is required » | Raison est trop courte. | Rédigez une justification plus longue. |
validation_error (HTTP 422) | Durée (s) sous 60 ou Raison sous 10 caractères, refusés avant tout contrôle. | Corrigez le champ. |
break_glass_not_found (HTTP 404) | Accès inconnu, ou que vous ne pouvez pas voir. | Vérifiez l'identifiant et vos rôles. |
break_glass_not_active (HTTP 409) | L'accès n'est pas actif. | Attendez les approbations, ou demandez un nouvel accès. |
break_glass_closed (HTTP 409) | L'accès est déjà fermé. | Rien à révoquer. |
context_wrong_audience (HTTP 400) | L'audience n'est pas connue de la Context Authority. | Laissez Audience vide ou utilisez une audience connue. |