Événements et chaîne
L'écran Événements et chaîne vous permet de chercher dans la piste d'audit de votre tenant, de vérifier que sa
chaîne de hachage est intacte et d'exporter une période vers un stockage immuable (WORM). Chemin dans le portail :
/audit/events (menu Audit > Événements et chaîne, titre de page Événements d'audit). Les auditeurs,
les responsables sécurité et les administrateurs de tenant l'utilisent pour répondre à « qui a fait quoi, quand,
avec quelle décision ».
Ce que montre l'écran
| Zone | Contenu |
|---|---|
| Section Chaîne de hachage | Chaque événement contient le hachage du précédent ; la vérification recalcule la chaîne. Avant une vérification : Non vérifiée pendant cette session. Après : le badge Chaîne intacte ou Chaîne rompue et le JSON du résultat (valid, count, broken_at, reason, verified_at). |
| Filtres | Acteur (identifiant de l'acteur), Action (nom exact, ou préfixe terminé par * comme finops.*), Ressource (type ou type:id), Résultat (success, failure, denied), Identifiant de trace, Du et Au (horodatages ISO 8601). |
| Tableau Événements | Colonnes : Séquence, Heure, Acteur, Action, Type de ressource, Identifiant de ressource, Décision, Résultat. Du plus récent au plus ancien, 50 événements par page. |
| Panneau de détail | Un clic sur une ligne charge l'événement complet (acteur, ressource, décision, preuve, hachages). |
| Exporter vers un stockage WORM | Formulaire : Du (par exemple 2026-01-01T00:00:00Z), Au, Rétention (jours) (365 par défaut), avec un panneau Résultat. Les exports sont écrits sur un stockage immuable (WORM) et tracés dans la piste d'audit. |
| État vide | Aucun événement d'audit : chaque mutation et décision de politique écrit un événement. |
Chaque recherche et chaque vérification est elle-même enregistrée comme un accès à la piste d'audit.
Actions
| Bouton ou action | Ce qu'il fait | Appel API | Rôles |
|---|---|---|---|
| Vérifier la chaîne | Recalcule la chaîne de hachage du tenant et affiche le verdict. | GET /v1/audit/verify | auditor, security_officer, tenant_admin, platform_admin |
| Filtrer | Applique les filtres remplis. | GET /v1/audit/events (actor, action, resource, outcome, trace_id, from, to, limit, cursor) | auditor, security_officer, tenant_admin, platform_admin |
| Actualiser (icône flèche ronde) | Recharge la liste. | GET /v1/audit/events | Mêmes rôles |
| Charger plus | Charge la page suivante d'événements plus anciens. | GET /v1/audit/events (cursor) | Mêmes rôles |
| Clic sur une ligne | Ouvre le panneau de détail. | GET /v1/audit/events/{event_id} | Mêmes rôles |
| Exécuter (Exporter vers un stockage WORM) | Écrit les événements de la période, signés, avec un manifeste, sur le stockage WORM (le profil de stockage audit_worm du tenant, sinon le profil de plateforme nommé par EAI_AUDIT_WORM_STORAGE_PROFILE), et renvoie le manifeste. | POST /v1/audit/export | auditor, security_officer, tenant_admin, platform_admin |
Rôles
| Rôle | Accès |
|---|---|
auditor, security_officer, tenant_admin | Ouvrent l'écran (portal/src/lib/nav-access.ts), cherchent, vérifient et exportent (READERS de services/control-plane/src/eai/domains/observability/audit_api.py). |
platform_admin | Mêmes droits ; chaque route exige un contexte de tenant (sinon tenant_required). |
| Autres rôles | L'entrée est masquée ; la page affiche Vos rôles n'ouvrent pas cette page. |
Un verdict Chaîne rompue signifie qu'un événement de la piste a été modifié ou supprimé. Ne le corrigez pas à la
main : conservez le JSON du résultat (il nomme broken_at et la reason) et ouvrez un incident de sécurité.
Tâches courantes
Vérifier l'intégrité de la piste d'audit
- Vérifier la chaîne. La vérification prouve qu'aucun événement n'a été altéré depuis son écriture. Cliquez sur
Vérifier la chaîne.
Résultat attendu : le badge Chaîne intacte et un JSON avec
valid: trueet lecountdes événements vérifiés. En cas d'échec : avec Chaîne rompue, conservez le JSON et déclarez un incident dans Incidents.
Trouver qui a modifié un quota
- Filtrer sur l'action. Saisissez
finops.quota.*dans Action pour lister tous les événements de quota (création, modification, suppression, et les réservations des passerelles), puis cliquez sur Filtrer. Résultat attendu : le tableau liste les événements de quota avec leur Acteur. En cas d'échec : si Aucun événement d'audit s'affiche, élargissez Du et Au ou vérifiez le préfixe de l'action. - Ouvrir l'événement. Cliquez sur la ligne pour lire l'événement complet.
Résultat attendu : le panneau montre l'acteur, la ressource, la décision et la preuve.
En cas d'échec :
not_foundsignifie que l'identifiant de l'événement n'est pas dans votre tenant.
Exporter un trimestre pour un audit externe
- Remplir la période. Dans Exporter vers un stockage WORM, saisissez Du et Au en horodatages
ISO 8601 et la Rétention (jours) pendant laquelle le stockage doit garder l'export (1 à 3650).
Résultat attendu : les champs sont remplis.
En cas d'échec : si un avis de rôle remplace le formulaire, demandez le rôle
auditor. - Exporter. Cliquez sur Exécuter.
Résultat attendu : le panneau Résultat montre le manifeste : fichier,
count,sha256, signature et rétention. En cas d'échec :storage_profile_not_foundoustorage_capability_missingsignifie que le profil de stockage WORM est absent ou non vérifié ; voyez Profils de stockage.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
| Vos rôles n'ouvrent pas cette page | Vos rôles ne sont pas parmi auditor, security_officer, tenant_admin, platform_admin. | Demandez le rôle auditor. |
Erreur forbidden (HTTP 403) : « Vous n'avez pas le rôle requis pour cette opération. » | Le jeton n'a aucun rôle de lecture de la piste d'audit. | Reconnectez-vous avec un compte d'auditeur. |
Erreur tenant_required (HTTP 403) | Administrateur de plateforme sans tenant. | Connectez-vous à un tenant. |
Erreur storage_profile_not_found (HTTP 404) : « Profil de stockage ... introuvable. » | EAI_AUDIT_WORM_STORAGE_PROFILE nomme un profil de plateforme qui n'existe pas. | Créez le profil ou corrigez le réglage. |
Erreur storage_capability_missing (HTTP 409) | Le profil WORM n'a pas de capacité vérifiée de verrouillage d'objet ou de rétention. | Vérifiez le profil dans Profils de stockage. |
Erreur validation_error (HTTP 422) | Rétention (jours) hors de 1 à 3650, ou un horodatage qui n'est pas ISO 8601. | Corrigez le champ. |
| Chaîne rompue | Un événement a été modifié ou supprimé. | Conservez le résultat et ouvrez un incident. |