# Exceptions et anomalies — Nomenclature Qualys V3 SANEF

Suivi des cas où la règle V3 produit un résultat incorrect (faux positif/négatif) et nécessite un ajustement de la QQL ou du nommage. À traiter par batch lors des cleanups Qualys.

## Légende statut
- 🔴 **À fixer** : action attendue côté Qualys (modif règle QQL) ou côté SANEF (renommage)
- 🟡 **Workaround** : contournement appliqué dans l'app décodeur ou doc, fix Qualys pas encore fait
- 🟢 **Résolu** : règle V3 modifiée, plus de souci

---

## Exceptions

| # | Date | Tag | Asset / Pattern | Problème | Cause technique | Pourquoi / Impact | Fix appliqué | Statut | Date résolu |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2026-04-22 | `ENV-TST` | `svp*` (Superviseur Péage) | Postes Windows 11 Client tagués Test | Préfixe `sv*` matche `svp*` | **Faussait le KPI patching Test** : ~100 postes SVP comptés comme serveurs Test → reporting incorrect (180 au lieu de ~83 vrais serveurs Test). Risque de perdre les vrais serveurs Test dans la masse et de prioriser à tort le patching côté postes utilisateurs. | Exclusion `and not asset.name:svp*` appliquée à la QQL Qualys + `gen_xlsx.py` | 🟢 | 2026-04-22 |
| 2 | 2026-04-22 | `EQT-SRV` | `svp*` | Postes workstation détectés comme serveurs physiques | Préfixe `s*` matche `svp*` | **Faussait l'inventaire serveurs physiques** : KPI "EQT-SRV" gonflé artificiellement par les ~100 SVP, qui ne sont ni des serveurs ni dans le scope patching serveurs. Faux positifs en reporting infra. | Exclusion `and not asset.name:svp*` appliquée à la QQL Qualys + `gen_xlsx.py` | 🟢 | 2026-04-22 |
| 3 | 2026-04-24 | `POS-BI` | `VPAPTAPSH1.SANEF.GROUPE` (Win 10) | Workstation taggée POS-BI | Préfixe `vpapt*` dans QQL POS-BI matche aussi `vpapta*` (Apta gestion = POS-GES) | **Confusion périmètre métier** : un poste utilisateur apparaît dans le périmètre BI alors qu'il est métier Gestion (Apta Talend). Tableau de bord BI faux + ambiguïté pour les responsables BI/Gestion. | 1) Ajout `and operatingSystem.category2:"Server"` à POS-BI<br>2) Exclusion `vpapta*` de POS-BI (= POS-GES) | 🟢 | 2026-04-24 |
| 4 | 2026-04-24 | Tous les `POS-*` | Tous assets | Postes de travail susceptibles d'être tagués POS-* à tort | Les règles QQL POS-* ne filtraient pas par OS Server | **Pollution générale des KPI métier** : le périmètre métier (Trafic, Péage, BI, Gestion, FluxLibre, Infra) devient ambigu si des postes utilisateurs y entrent. Les chefs de projet ne savent pas qui est responsable de quoi. Le scope patching/sécurité serveurs devient difficile à isoler. | Ajout `and operatingSystem.category2:"Server"` à toutes les règles POS-* | 🟢 | 2026-04-24 |
| 4b | 2026-04-24 | Tous les `ENV-*` | Tous assets | Workstations avec préfixe v*/s*/l* hors svp* pourraient être tagués ENV-* | Les règles QQL ENV-* filtraient uniquement sur préfixe nom, pas sur category2 OS | **Cohérence du parc serveur** : ENV (PRD/REC/PPR/TST/DEV) ne doit catégoriser QUE les serveurs (le poste de travail d'un dev n'est pas "ENV-DEV"). Sinon les counts SLA/cycle de vie sont biaisés. | Ajout `and operatingSystem.category2:"Server"` à toutes les règles ENV-* | 🟢 | 2026-04-24 |
| 5 | 2026-04-24 | `OS-LIN-SRV` | Ubuntu / Oracle Linux / SUSE / Rocky / Alma / Fedora / Amazon Linux | App montre 723 vs Qualys 730 (-7) | Décodeur app ne reconnaissait que `red hat`, `centos`, `debian` comme Linux | **Chiffres incohérents en présentation DSI** : si on cite "730 serveurs Linux" dans un slide et que l'app dit 723, on perd la confiance dans l'outil. Et à long terme le parc SANEF va voir arriver d'autres distros (Rocky/Alma post-CentOS, Ubuntu pour conteneurs, etc.) → besoin de couvrir large. | Patterns Linux étendus dans `_filter_os_only` côté app (ubuntu, oracle linux, suse, sles, rocky, alma, fedora, amazon linux) | 🟢 | 2026-04-24 |
| 6 | 2026-04-24 | `POS-BI` vs `POS-GES` | `vpapt*` vs `vpapta*` / `vrapt*` vs `vrapta*` | Préfixe `vpapt*` dans POS-BI englobait `vpapta*` (Apta = POS-GES) | Pas d'exclusion mutuelle dans QQL | **Tag double / contradictoire** : un asset Apta apparaissait à la fois comme POS-BI (à tort) et POS-GES (correct). Reporting flou + ownership métier ambigu. | POS-BI modifié : `vpapt* and not (asset.name:vpapta* or asset.name:vrapta*)` | 🟢 | 2026-04-24 |
| 7 | 2026-04-24 | `POS-INF` vs `POS-GES` | `aii*` vs `aiiat*` / `dsi*` vs `dsiat*` | Préfixes courts (`aii`, `dsi`) dans POS-INF englobaient `aiiat`/`dsiat` (Aide pilotage / Reporting DSI = POS-GES) | Pas d'exclusion mutuelle | **Confusion Infrastructure vs Gestion DSI** : les serveurs d'aide au pilotage et de reporting DSI étaient comptés comme infra technique, alors qu'ils sont des outils de gestion. Mauvaise priorisation des incidents et MEP. | POS-INF modifié : exclusion `not (asset.name:vpaiiat* or asset.name:vraiiat* or asset.name:vrdsiat*)` | 🟢 | 2026-04-24 |
| 8 | 2026-04-24 | `POS-INF` vs `POS-GES` | `ges*` (Gestion fichiers POS-INF) vs `gesb*` (Gestion budgets POS-GES) | Le préfixe générique `ges*` n'existait pas dans POS-INF V3 mais le décodeur app l'avait avec POS-INF (legacy "Gestion fichiers") | Décodeur app : `ges` mappé POS-INF (legacy) | **Faux positif visible dans l'app** : pour les `vpgesb*` (gestion budgets), le décodeur suggérait POS-INF alors que c'est POS-GES. Si on suivait la suggestion on aurait collé le mauvais tag. | Map `ges`→POS-INF retirée du décodeur app (`server_decoder.py`) | 🟢 | 2026-04-24 |
| 9 | 2026-04-24 | Tags Qualys natifs (Cloud Agent*, Obsolete, Active...) | Tous assets | Affichés comme "Hors V3" dans le décodeur de l'app | Pas reconnus comme natifs | **Fausses alertes ergonomiques** : l'opérateur voyait "Hors V3 - à supprimer" sur des tags Qualys built-in qu'il NE FAUT PAS supprimer (ils reviendraient au prochain check Cloud Agent). Risque d'erreur manuelle et perte de temps à investiguer. | Liste `QUALYS_BUILTIN_EXACT` + `QUALYS_BUILTIN_PREFIX` ajoutée dans `server_decoder.py` ; affichés en violet "Tag Qualys natif (auto-attribué)" | 🟢 | 2026-04-24 |
| 10 | 2026-04-24 | `POS-DMZ` | Assets en zone DMZ | Suggéré "Hors V3" alors qu'utilisé légitimement | POS-DMZ pas dans la liste V3 dynamique mais utilisé en STAT manuel pour la zone réseau DMZ | **Tag SANEF légitime non reconnu** : POS-DMZ est utilisé pour identifier les serveurs en zone DMZ (sécurité périmétrique). Si l'app dit "Hors V3" l'opérateur risque de le supprimer alors qu'il sert au reporting sécu. | Décodeur app suggère POS-DMZ si zone Excel = "DMZ" | 🟢 | 2026-04-24 |
| 11 | 2026-04-24 | `TAG-SED` `TAG-SEI` | 18 assets en POS-DMZ sans SED ni SEI | Audit DMZ : 48 POS-DMZ vs 34 SED∪SEI = 14 orphelins (corrigé manuellement par Khalid) | Tags SED/SEI sont STAT (bulk SQATM), pas DYN — ajout manuel oublié à mesure que de nouveaux assets DMZ arrivent | **Trou de classification sécu** : un asset DMZ sans SED/SEI n'est pas distingué entre frontal exposé (priorité audit) et backend (priorité moindre). Risque de mal prioriser les patchs/scans. | Khalid a complété manuellement bulk_tag_sed.txt et bulk_tag_sei.txt + bulk SQATM | 🟢 | 2026-04-24 |
| 12 | 2026-04-24 | `POS-TRA` manquant | `vpgmoaprx1` | Serveur Trafic non taggé POS-TRA | Le préfixe `vpgmo*` (Gestion Mode Opératoire) n'était pas couvert par la QQL POS-TRA | **Asset Trafic non visible dans le périmètre Trafic** | Ajout `asset.name:vpgmo* or asset.name:vrgmo*` à la QQL POS-TRA + parens + Server filter | 🟢 | 2026-04-24 |
| 13 | 2026-04-24 | `POS-GES` manquant | `vppintaweb1`, `vppintaweb2` (Pré-Prod ENV-PPR OK) | Serveurs Intranet Gestion non taggés POS-GES | Différence entre QQL console Qualys et `gen_xlsx.py` + pas de re-evaluate | **Sites Intranet non rattachés au périmètre Gestion** | Resync QQL POS-GES depuis `gen_xlsx.py` + parens + Server filter + Re-evaluate | 🟢 | 2026-04-24 |
| 14 | 2026-04-24 | `POS-DMZ` à vérifier | `vppataels1` | Patrouille ELS — légitimité DMZ à confirmer | Le serveur est tagué POS-DMZ mais à confirmer en zone DMZ | **Faux positif POS-DMZ potentiel** : si pas réellement en DMZ, fausse l'audit DMZ | Vérification confirmée — toutes anomalies POS-DMZ rectifiées | 🟢 | 2026-04-24 |
| 15 | 2026-04-24 | `POS-TRA` manquant | `vrexpbtex1`, `vrameased1` | Serveurs Trafic Recette non taggés POS-TRA | Préfixes `vrexp*` et `vramea*` absents de la QQL POS-TRA | **Assets Trafic Recette non visibles dans le périmètre Trafic** | Ajout `vrexp*` à la QQL POS-TRA (vramea* déjà couvert par vrame*) + parens + Server | 🟢 | 2026-04-24 |
| 16 | 2026-04-24 | `POS-INF` vs `POS-GES` | `*echat*` (`vpechat`, `vrechat`, `vdechat`) | Préfixes Echat/Achat dans les 2 règles → double tag | Erreur historique de classification : Echat/Achat est métier Gestion (POS-GES), pas Infrastructure | **Conflit tag** : assets `vpechat01` recevaient à la fois POS-INF et POS-GES | Retrait `asset.name:vpechat*`, `vrechat*`, `vdechat*` de la QQL POS-INF (gardés uniquement dans POS-GES) | 🟢 | 2026-04-24 |
| 17 | 2026-04-24 | Toutes les ENV-* et POS-* | Toutes les rules QQL | Précédence opérateurs : `OR ... AND Server` sans parenthèses → seul le dernier OR est filtré par Server | Manque de parenthèses autour des grands `OR` dans les rules QQL | **Filtre Server inopérant** : les workstations passaient à travers les filtres ENV-*/POS-* (sauf le dernier item du OR) → KPI faussés | Ajout systématique de `( ... )` autour de tous les grands OR dans toutes les rules ENV-* et POS-* (5+6 = 11 règles) + `gen_xlsx.py` mis à jour | 🟢 | 2026-04-24 |
| 18 | 2026-04-24 | `TAG-OBS` | OS obsolètes manquants | Liste TAG-OBS incomplète | Manquaient : Win Server 2008 R2, Win7 (sans espace, embedded), RHEL 7 (EOL juin 2024), Oracle Linux 5/6, SLES 11/12, Solaris 10, AIX 6.1 + typo "Server  5" double espace | **Audit obsolescence incomplet** : assets EOL non détectés → risque sécu non remonté | Liste étendue dans `gen_xlsx.py` + typo fixée (à appliquer en console Qualys) | 🟡 | (gen_xlsx fait, console à faire) |
| 19 | 2026-04-24 | `POS-DMZ` vs `TAG-SED`/`TAG-SEI` | 7 assets en désaccord audit DMZ | 3 en POS-DMZ sans SED/SEI + 4 avec SED/SEI hors POS-DMZ | Tags STAT manuels non synchronisés à la création/modif d'assets DMZ | **Trou audit sécurité** : assets DMZ non classifiés en exposition directe/indirecte → mauvaise priorisation patch/scan | Rectification finale 2026-04-25 : 3 ajouts à SED/SEI (`vppintaweb1` SED, `vppintaweb2` SED, `vrameased1` SEI) + 1 retrait `vpdecasas4` (n'aurait pas dû être en SEI) + 3 confirmés légitimement hors DMZ (LAN exposé via NAT : `vpdsiawsus1` SED, `vppeaabst3` SEI, `vpvpnaems1` SED Ubuntu). Total cohérent : POS-DMZ=48, SED+SEI=48 | 🟢 | 2026-04-25 |

---

## Tags Qualys legacy à nettoyer (concurrence avec V3)

À supprimer ou désactiver une fois la transition V3 validée :

| Tag legacy | Remplacé par V3 | Statut migration |
|---|---|---|
| `Production` | `ENV-PRD` | À supprimer |
| `Recette` | `ENV-REC` | À supprimer |
| `Linux Server` | `OS-LIN-SRV` | À supprimer |
| `Windows Server` | `OS-WIN-SRV` | À supprimer |
| `flux_libre`, `Flux Libre`, `FreeFlow` | `POS-FL` | À fusionner/supprimer |
| `DEX` | À déterminer | À analyser |
| `DSI` | `POS-INF` (partiellement) | À analyser |
| `VRF_INCONNUE` | `VRF-*` (à créer) | Configurer VRF métier |
| `TAG-SRVEXPOSEINTERNET` | `TAG-SED` | À fusionner |

---

## Workflow de mise à jour

1. **Constat anomalie** : ajouter une ligne dans le tableau ci-dessus avec date, tag, asset, problème
2. **Validation Khalid** : décider du fix (Qualys QQL, app décodeur, ou les deux)
3. **Implémentation** :
   - Si fix QQL : modifier la règle dans console Qualys + mettre à jour `C:\Claude\sanef\QL\gen_xlsx.py` pour la doc
   - Si fix app : modifier `C:\Claude\sanef\sanef-qualys-manager\server_decoder.py`
4. **Test** : recharger les tags dans la console Qualys, vérifier le delta sur 5-10 assets témoins
5. **Statut** : passer à 🟢 dans le tableau

---

## Contacts / liens utiles

- Console Qualys : https://qualysguard.qualys.eu > VMDR > Assets > Tags
- Référentiel V3 : `C:\Claude\sanef\QL\docs\SANEF_Qualys_Tags_V3_RuleTypes_v2.xlsx`
- Décodeur app : `C:\Claude\sanef\sanef-qualys-manager\server_decoder.py`
- Mémoire détaillée : `C:\Users\netadmin\.claude\projects\C--Users-netadmin\memory\qualys.md`
