Aller au contenu principal

Sécurité des fichiers

L'écran Sécurité des fichiers permet de suivre la chaîne obligatoire que chaque fichier traverse avant Docling et le RAG (envoi, quarantaine, ClamAV, YARA-X, validation), l'état en direct de chaque instance de moteur, les nombres des dernières 24 heures, les analyses et les fichiers bloqués, les règles du tenant, et de tester un fichier sans l'ingérer. Chemin dans le portail : /security/file-security, menu Sécurité et gouvernance > Sécurité des fichiers. Il sert aux responsables sécurité et aux administrateurs de tenant qui pilotent l'analyse, et aux auditeurs qui la consultent.

Ce que montre l'écran​

L'écran (FileSecurity dans portal/src/screens/file-security.tsx, requêtes dans portal/src/lib/file-security.ts) comporte, de haut en bas :

  • Bandeau d'alerte « La sécurité des fichiers n'est pas entièrement assurée », affiché au besoin avec une ligne par alerte : mode développement, plateforme pas prête (envois refusés, refus par défaut), ClamAV ou YARA-X non configuré, hors ligne ou dégradé, signatures ClamAV plus anciennes que l'âge autorisé.
  • Chaîne obligatoire (« Aucun fichier n'atteint Docling ni le RAG avant que les deux moteurs et la validation l'aient libéré. ») : les étapes Envoi > Quarantaine > ClamAV > YARA-X > Validation > Docling > RAG / IA. Chaque étape moteur affiche {healthy}/{total} en ligne, dégradé, Hors ligne ou Non configuré ; les étapes de la plateforme affichent Actif. Dessous : le badge Mode (application stricte ou développement), Prêt ou Pas prêt, et « Vérifié le » avec la date. Lu dans GET /v1/file-security/status, rafraîchi toutes les 30 secondes.
  • Cartes Dernières 24 heures, lues dans GET /v1/file-security/stats (rafraîchies toutes les 60 secondes) : Fichiers analysés, Libérés, Bloqués, Logiciels malveillants, Suspects, Dernier blocage (ou Jamais), puis les nombres Par source.
  • Quatre onglets :
OngletContenu
MoteursDeux sections, Passerelles ClamAV et Workers YARA-X, chacune avec un badge {healthy}/{total} en bonne santé et une carte par instance : adresse, En ligne ou Hors ligne, Version, Latence, et pour ClamAV Version des signatures, Publiées le, Âge (avec une alerte quand les signatures sont périmées), pour YARA-X Règles (version et nombre), sha256 des règles, Chargées le. Une erreur de l'instance s'affiche en rouge. Sans instance : « Aucune instance déclarée ».
AnalysesTableau lu dans GET /v1/file-security/scans (50 lignes, curseur), filtres Statut (En quarantaine, Libéré, Bloqué), Verdict (Sain, Logiciel malveillant, Suspect, Inanalysable, Erreur d'analyse, Contraire aux règles) et Source (Connaissances, Médias, Multimodal, Transcription, Connecteur, Canal, API). Colonnes Fichier, Verdict, Statut, Source, Type détecté, Taille, Échantillon conservé, sha256, Date.
Fichiers bloquésLe même tableau avec le statut fixé à bloqué (filtres Verdict et Source). « Les fichiers bloqués par les moteurs ou les règles restent ici en quarantaine. »
RèglesRègles verrouillées (lecture seule, « Règles de la plateforme qu'aucun tenant ne peut modifier. ») : Analyse avant toute ingestion, Moteurs obligatoires, Refus quand un moteur est indisponible, Blocage des logiciels malveillants, Blocage des fichiers inanalysables, chacune avec sa valeur. Règles du tenant : les champs modifiables ci-dessous, lus dans GET /v1/file-security/policy, avec « Modifiées le {at} par {by} » ou « Valeurs par défaut de la plateforme, jamais modifiées. »

Règles modifiables du tenant :

ChampBornesSignification
Taille maximale (octets)1024 au plafond de la plateforme (file_scan_max_bytes, 50 Mio par défaut)Les fichiers plus gros sont refusés.
Conservation en quarantaine (jours)1 à 365Durée de garde d'un échantillon avant sa purge.
Âge maximal des signatures (heures)1 à 720Âge au-delà duquel les signatures ClamAV sont périmées.
Quand les signatures sont périméesAvertir et continuer l'analyse ou Bloquer les envoisComportement face aux signatures périmées.
Autoriser les archivesinterrupteurLes ZIP et autres archives sont ouverts et analysés dans la limite d'imbrication.
Bloquer les macros OfficeinterrupteurUn document avec macros est bloqué au lieu d'être signalé.
Bloquer un type déclaré différent du type détectéinterrupteurDétecté à partir des octets magiques du fichier.
Conserver les échantillons chiffrés des fichiers bloquésinterrupteurPermet de réanalyser un fichier bloqué ; purgé après la conservation.
Types autorisésau moins un type connuTypes détectés à partir du contenu ; tout autre type est refusé.

Un clic sur une ligne, ou Détails, ouvre l'analyse (GET /v1/file-security/scans/{scan_id}) : badges de verdict et de statut, Source, Type déclaré, Type détecté, Taille, sha256, Envoyé par, Reçu le, Analysé le, Échantillon conservé, Échantillon purgé le, Réanalyse de (lien vers l'enregistrement d'origine), Motifs, la section ClamAV (résultat, Signature, Instance, Version, Version des signatures, Durée) et la section YARA-X (résultat, Version des règles, sha256 des règles, Instance, Durée, et les correspondances Règle, Gravité, Action, Verdict, ou « Aucune correspondance YARA-X. »).

Actions​

Bouton ou actionEffetAppel APIRôles
Tester un fichier (en-tête de page), puis AnalyserOuvre une boîte de dialogue : choisissez un Fichier, cliquez Analyser. Le fichier est analysé comme un envoi (quarantaine, ClamAV, YARA-X, règles) mais jamais ingéré ; la boîte montre le verdict, le statut, les motifs et le sha256, avec Ouvrir l'analyse.POST /v1/file-security/scansTout utilisateur du tenant
Actualiser (Chaîne obligatoire)Relit l'état des moteurs.GET /v1/file-security/statustenant_admin, security_officer, auditor
Filtres Statut, Verdict, SourceFiltrent la liste dès qu'une valeur est choisie.GET /v1/file-security/scans (paramètres status, verdict, source)Tout utilisateur du tenant (seulement ses propres analyses sans rôle de lecteur)
Détails (menu de la ligne) ou clic sur une ligneOuvre l'analyse.GET /v1/file-security/scans/{scan_id}Tout utilisateur qui voit l'analyse
Réanalyser (menu de la ligne ou détail), puis ConfirmerAnalyse à nouveau l'échantillon conservé avec les moteurs et règles actuels ; un nouvel enregistrement est créé et ouvert, l'envoi d'origine n'est jamais libéré. Message « Réanalyse terminée : {verdict}. »POST /v1/file-security/scans/{scan_id}/rescanActivé pour platform_admin, tenant_admin, security_officer quand un échantillon est conservé ; serveur : security_officer, tenant_admin
Purger l'échantillon (menu de la ligne ou détail), puis ConfirmerSupprime définitivement l'échantillon chiffré ; l'enregistrement et son verdict restent. Message « Échantillon purgé. » Audité.DELETE /v1/file-security/scans/{scan_id}/sampleComme Réanalyser
Enregistrer les règles (Règles)N'envoie que les champs modifiés. Message « Règles enregistrées. » Audité sous file_security.policy.update.PUT /v1/file-security/policysecurity_officer, tenant_admin (champs désactivés pour les autres)
Annuler les modifications (Règles)Remet le formulaire aux règles chargées, sans appel.AucunLecteurs des règles
Annuler (boîtes de dialogue)Ferme la boîte sans appel.AucunTous
Réessayer (état d'erreur)Relit la section en erreur.La route de la sectionCeux de la section
danger

Purger l'échantillon est irréversible : le fichier ne peut plus être réanalysé. Ne purgez qu'une fois l'analyse close.

Rôles​

Le portail désactive Réanalyser et Purger l'échantillon hors de SCAN_OPERATORS (platform_admin, tenant_admin, security_officer) et les champs des règles hors de POLICY_WRITERS (security_officer, tenant_admin), tous deux dans portal/src/lib/file-security.ts ; un lecteur voit « Lecture seule : un responsable sécurité ou un administrateur du tenant modifie les règles. » Le Control Plane (services/control-plane/src/eai/domains/file_security/__init__.py, rôles dans services/control-plane/src/eai/domains/file_security/service.py) décide :

  • état et règles : tenant_admin, security_officer, auditor (READERS) ;
  • modification des règles, réanalyse, purge : security_officer, tenant_admin (WRITERS) ;
  • test d'un fichier, liste et statistiques : tout utilisateur du tenant ; sans rôle de lecteur, seulement les analyses que cet utilisateur a envoyées ;
  • platform_admin passe tous les contrôles de rôle.

Tâches courantes​

Vérifier que l'analyse protège la plateforme​

  1. Lire le bandeau et la chaîne. Un moteur absent ou hors ligne signifie que les envois sont refusés (refus par défaut) ou, en mode développement, ignorés. Ouvrez l'écran. Résultat attendu : aucun bandeau d'alerte, chaque étape moteur en ligne, Mode application stricte et Prêt. En cas d'échec : le mode développement ne doit jamais apparaître en production ; Non configuré signifie que le moteur n'est pas installé (installez-le avec le Navin Manager).
  2. Ouvrir les moteurs. Onglet Moteurs. Résultat attendu : chaque instance En ligne, une date Publiées le récente pour les signatures et le sha256 des règles attendu. En cas d'échec : l'alerte de signatures périmées signifie que le miroir interne des signatures n'est pas à jour.
  3. Tester avec un fichier anodin. Cliquez Tester un fichier, choisissez un fichier, Analyser. Résultat attendu : le verdict Sain et le statut Libéré. En cas d'échec : file_scan_unavailable (HTTP 503) signifie que les moteurs n'ont pas répondu ; rien n'a été ingéré.

Examiner un fichier bloqué​

  1. Le trouver. Onglet Fichiers bloqués, filtre Verdict au besoin. Résultat attendu : les fichiers bloqués avec leur verdict et leur source. En cas d'échec : « Aucun fichier bloqué » signifie que rien n'a été bloqué.
  2. Lire l'analyse. Cliquez la ligne. Résultat attendu : les Motifs, la Signature ClamAV ou les correspondances YARA-X. En cas d'échec : not_found signifie que l'analyse ne vous est pas visible (envoyée par quelqu'un d'autre et vous n'avez pas de rôle de lecteur).
  3. Réanalyser après une mise à jour des règles. Un faux positif peut disparaître avec de nouvelles signatures ou règles. Réanalyser, puis Confirmer. Résultat attendu : « Réanalyse terminée : {verdict}. » et le nouvel enregistrement s'ouvre, avec Réanalyse de qui pointe vers l'original. En cas d'échec : le bouton est désactivé sans échantillon conservé (« Aucun échantillon conservé pour ce fichier : réanalyse et purge indisponibles. ») ; file_sample_unavailable (HTTP 409) côté API.
  4. Purger l'échantillon. Une fois l'analyse close, l'échantillon chiffré ne sert plus. Purger l'échantillon, puis Confirmer. Résultat attendu : « Échantillon purgé. » et Échantillon conservé Non. En cas d'échec : forbidden signifie que vous n'êtes ni security_officer ni tenant_admin.

Durcir les règles du tenant​

  1. Changer les valeurs. Onglet Règles, section Règles du tenant : baissez Taille maximale (octets), activez Bloquer les macros Office, décochez les Types autorisés que vous n'acceptez pas. Résultat attendu : les champs changent et Enregistrer les règles est activé. En cas d'échec : des champs désactivés et « Lecture seule » signalent un rôle manquant ; un message rouge liste les problèmes (par exemple « Choisissez au moins un type autorisé. »).
  2. Enregistrer. Cliquez Enregistrer les règles. Résultat attendu : « Règles enregistrées. » et « Modifiées le {at} par {by} » avec votre nom. En cas d'échec : file_security_rule_locked (HTTP 422) pour une règle verrouillée ; invalid_request (HTTP 422) avec field et reason pour une valeur hors bornes.

Dépannage​

SymptômeCauseCorrection
Bandeau « La plateforme n'est pas prête à analyser »Aucun moteur ne répond : les envois sont refusés (refus par défaut).Vérifiez les passerelles ClamAV et les workers YARA-X dans Moteurs.
file_scan_unavailable (HTTP 503)Les moteurs d'analyse sont indisponibles ; le fichier n'a pas été ingéré.Rétablissez les moteurs, puis réessayez.
file_blocked (HTTP 422) sur un envoi ailleursLe fichier a été bloqué par l'analyse (verdict dans le message) ; il n'a pas été ingéré.Lisez l'analyse dans Fichiers bloqués.
file_sample_unavailable (HTTP 409)Aucun échantillon n'est conservé pour cette analyse.Activez Conserver les échantillons chiffrés des fichiers bloqués pour les prochains fichiers.
file_security_rule_locked (HTTP 422)Ces règles de sécurité des fichiers sont verrouillées et ne peuvent pas être modifiées.Ne modifiez que les règles du tenant.
invalid_request (HTTP 422) avec unknown_typesUn type autorisé n'est pas un type connu.Choisissez des types de la liste.
invalid_request (HTTP 400) avec content_base64Le contenu envoyé n'est pas un base64 valide (invalid base64), ou il manque.Choisissez à nouveau le fichier ; par l'API, envoyez un content_base64 valide ou un file multipart.
forbidden (HTTP 403) sur l'état ou les règlesLa lecture exige tenant_admin, security_officer ou auditor.Demandez l'un de ces rôles.
invalid_cursor (HTTP 400)Le curseur de pagination est invalide.Changez un filtre ou rechargez la page.

Pages liées​