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 ligneou Non configuré ; les étapes de la plateforme affichent Actif. Dessous : le badge Mode (application stricteoudéveloppement), Prêt ou Pas prêt, et « Vérifié le » avec la date. Lu dansGET /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 :
| Onglet | Contenu |
|---|---|
| Moteurs | Deux 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 ». |
| Analyses | Tableau 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és | Le 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ègles | Rè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 :
| Champ | Bornes | Signification |
|---|---|---|
| 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 à 365 | Duré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ées | Avertir et continuer l'analyse ou Bloquer les envois | Comportement face aux signatures périmées. |
| Autoriser les archives | interrupteur | Les ZIP et autres archives sont ouverts et analysés dans la limite d'imbrication. |
| Bloquer les macros Office | interrupteur | Un document avec macros est bloqué au lieu d'être signalé. |
| Bloquer un type déclaré différent du type détecté | interrupteur | Détecté à partir des octets magiques du fichier. |
| Conserver les échantillons chiffrés des fichiers bloqués | interrupteur | Permet de réanalyser un fichier bloqué ; purgé après la conservation. |
| Types autorisés | au moins un type connu | Types 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 action | Effet | Appel API | Rôles |
|---|---|---|---|
| Tester un fichier (en-tête de page), puis Analyser | Ouvre 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/scans | Tout utilisateur du tenant |
| Actualiser (Chaîne obligatoire) | Relit l'état des moteurs. | GET /v1/file-security/status | tenant_admin, security_officer, auditor |
| Filtres Statut, Verdict, Source | Filtrent 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 ligne | Ouvre 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 Confirmer | Analyse à 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}/rescan | Activé 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 Confirmer | Supprime définitivement l'échantillon chiffré ; l'enregistrement et son verdict restent. Message « Échantillon purgé. » Audité. | DELETE /v1/file-security/scans/{scan_id}/sample | Comme 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/policy | security_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. | Aucun | Lecteurs des règles |
| Annuler (boîtes de dialogue) | Ferme la boîte sans appel. | Aucun | Tous |
| Réessayer (état d'erreur) | Relit la section en erreur. | La route de la section | Ceux de la section |
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_adminpasse tous les contrôles de rôle.
Tâches courantes
Vérifier que l'analyse protège la plateforme
- 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 stricteet 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). - 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.
- 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é
- 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é.
- Lire l'analyse. Cliquez la ligne. Résultat attendu : les Motifs, la Signature ClamAV ou les correspondances YARA-X. En cas d'échec :
not_foundsignifie 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). - 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. - 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 :
forbiddensignifie que vous n'êtes nisecurity_officernitenant_admin.
Durcir les règles du tenant
- 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é. »).
- 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) avecfieldetreasonpour une valeur hors bornes.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
| 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 ailleurs | Le 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_types | Un type autorisé n'est pas un type connu. | Choisissez des types de la liste. |
invalid_request (HTTP 400) avec content_base64 | Le 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ègles | La 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. |