Repository navigation
feat(soar): triage apprenant des alertes (empreintes + boutons Discord + suppression + digest) - #24
Merged
Merged
Conversation
…d, suppression, digest hebdo Classement Wiz-like des alertes SOAR depuis Discord : - Empreinte sha256(rule.id|agent|champ-clé) par famille de règle : FIM sur le chemin, auth sur le compte visé, sudo sur le compte qui élève (srcuser), repli sur la description normalisée. Table soar_triage (Migrate + schema.sql). - Quatre boutons Components V2 sur chaque alerte (By design / Faux positif / J'enquête / Résolu), custom_id triage:<statut>:<empreinte> validé côté serveur. Handler InteractionCreate idempotent (hot-reload double-session sans danger), réservé aux membres portant « Gérer les messages » sur le canal d'alertes, traçabilité par ID Discord immuable (decided_by_id). - Suppression AVANT post des empreintes by_design/false_positive — comptée, jamais silencieuse : digest hebdomadaire des suppressions (top 10 + agrégat + total vie-entière), ancre persistée en soar_state, retenté tant que Discord est indisponible, reset soustractif des compteurs (une suppression concurrente survit au reset). investigating/resolved continuent de poster ; une récidive après résolution rouvre l'empreinte. - Au clic : ack différé puis re-rendu depuis l'état frais du message et la dernière décision en DB — un clic concurrent ou une édition d'enrichissement IA ne sont jamais écrasés. Fail-open sur toute erreur DB : une alerte de sécurité part toujours. - CI : tests SOAR/triage MySQL (SOAR_TEST_DSN) exécutés dans le job db-tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Quoi
Le chantier SOAR Triage apprenant (design validé le 2026-08-25) : classer une alerte depuis Discord (
By design/Faux positif/J'enquête/Résolu) et ne plus revoir les similaires — sans jamais rendre une suppression invisible.Comment
sha256(rule.id | agent | champ-clé)par famille — FIM → chemin, auth → compte visé, sudo → compte qui élève (srcuser, pasdstuserqui vaut toujours root), repli description normalisée. Alertes de statut agent (Perdu/Retrouvé) incluses, une empreinte par direction.soar_triage(nouvelle, viacoreTables+ miroirschema.sql) : statut, compteurs de suppression, sample JSON (matière de la phase 2 similarité), décideur (username affiché + ID Discord immuable pour la traçabilité).custom_idvalidé côté serveur (verdict connu + 64 hex). HandlerInteractionCreateidempotent (la double-session transitoire d'un hot-reloadApplyDiscordreste inoffensive — commentaire du registry mis à jour) et réservé aux membres portant Gérer les messages sur le canal d'alertes.by_design/false_positive, fail-open sur toute erreur DB (une alerte de sécurité part toujours).investigating/resolvedcontinuent de poster ; une récidive après résolution rouvre.soar_state, retenté tant que Discord est indisponible, reset soustractif (une suppression concurrente survit), réancrage sur ancre corrompue ou future.Tests
SOAR_TEST_DSN, désormais exécutés en CI dans le job db-tests) : cycle de vie du store, compteurs/reset du digest, suppression de bout en bout danscheckSoarEvents, machine à états de l'ancre.go test ./... -racecomplet au vert en local contre MariaDB 11.8.Revue
Passée par une revue multi-lentilles (concurrence, sécurité, API Discord, logique métier, conventions) + vérification adversariale : 11 constats confirmés, tous corrigés dans cette branche (autorisation des boutons, empreinte sudo, traçabilité par ID, ancre future, convergence des clics concurrents, CI, simplifications).
NB : la branche
devavait été supprimée par la fermeture de la PR #22 (release v0.11.12) — recréée depuismainpour restaurer le git-flow.Phase 2 (similarité Qdrant) et phase 3 (page Triage du dashboard) suivront dans des chantiers séparés.