Détection d'anomalies dans les journaux de stockage de fichiers : Isolation Forest, CatBoost et Autoencodeur
Le machine learning identifie efficacement les menaces dans les journaux de stockage de fichiers, où des millions d'opérations de lecture, d'écriture et de suppression sont enregistrées quotidiennement. Trois algorithmes—Isolation Forest, CatBoost et autoencodeur—analysent des séries temporelles multidimensionnelles de l'activité des utilisateurs, distinguant le comportement normal des schémas suspects sans données étiquetées.
Les données sont agrégées en intervalles de temps : pour chaque créneau, l'intensité des opérations par type est comptée. Cela produit un vecteur de caractéristiques où les écarts signalent une copie interne ou un chiffrement massif.
Isolation Forest : Isoler les anomalies avec du hasard
Isolation Forest construit un ensemble d'arbres avec des divisions aléatoires des caractéristiques. Les anomalies sont isolées plus rapidement car leurs caractéristiques diffèrent significativement de la majorité. L'algorithme est non supervisé : il ne nécessite aucun étiquetage et se concentre sur le chemin de la racine à la feuille.
from sklearn.ensemble import IsolationForest
if_model = IsolationForest(n_estimators=100, contamination=0.05, bootstrap=False, random_state=42)
Pour les séries temporelles, des caractéristiques de décalage sont ajoutées :
data['prev_10min'] = (data.rolling(window='10min', min_periods=1)['events'].sum()).astype(int)
data['prev_5min'] = (data.rolling(window='5min', min_periods=1)['events'].sum()).astype(int)
data['prev_3min'] = (data.rolling(window='3min', min_periods=1)['events'].sum()).astype(int)
Hyperparamètres clés :
- n_estimators : équilibre entre précision et vitesse
- contamination : proportion attendue d'anomalies (0,05)
- max_samples : taille de sous-échantillon (256 par défaut)
- bootstrap : False pour la diversité
Le anomaly_score via decision_function est normalisé [-0,5, 0,5]. Les valeurs < -0,25 sont des anomalies confiantes :
data['anomaly'] = np.where(if_model.decision_function(data[['events', 'prev_3min', 'prev_5min', 'prev_10min']]) > -0.25, 0, 1)
L'analyse SHAP montre la dominance des décalages de 10 minutes. Avantages :
- Complexité O(n log n) pour le traitement en temps réel
- Fonctionne sur CPU sans stocker les données
- Déploiement facile
CatBoost pour prédire l'activité normale
CatBoostRegressor est entraîné sur des données historiques pour prédire l'intensité attendue. Les anomalies se produisent où |réel - prédit| dépasse un seuil.
from catboost import CatBoostRegressor
model = CatBoostRegressor()
expected_value = model.predict()
anomaly_score = abs(actual_value - expected_value)
Schéma de division des données :
- Entraînement (3 semaines) : activité normale
- Validation (1 semaine) : réglage
- Test (2 jours) : anomalies
Les caractéristiques élargissent le contexte :
- Temporelles : jour de la semaine, heure
- Décalage : événements sur 1h, 30m, 10m, 5m, 3m
- Roulantes : moyenne/écart-type/quantile(0,8) sur 3/7 jours
Les statistiques roulantes sont calculées sans fuite :
# Statistiques roulantes
data['week_mean'] = round(data.rolling(window=7, min_periods=1)['events'].mean(), 2)
L'apprentissage roulant met à jour le modèle quotidiennement sur l'ensemble historique complet.
Autoencodeur : Compression et reconstruction
Un autoencodeur neuronal compresse les séquences normales dans un espace latent, tandis que les anomalies sont mal reconstruites (erreur de reconstruction élevée).
Architecture : encodeur LSTM/GRU + décodeur. L'entraînement sur des données normales minimise l'erreur quadratique moyenne. Un seuil d'erreur détermine les anomalies.
Avantages pour les séries : capture les dépendances à long terme. Inconvénients : nécessite un GPU, sensible aux hyperparamètres.
Comparaison des approches :
| Modèle | Vitesse | Interprétabilité | Ressources | Adaptation aux tendances |
|--------|----------|--------------------|---------|---------------------|
| Isolation Forest | Élevée | SHAP | CPU | Décalages |
| CatBoost | Moyenne | Importance des caractéristiques | CPU/GPU | Apprentissage roulant |
| Autoencodeur | Faible | Attention | GPU | Séquences |
Points clés à retenir
- Isolation Forest est leader en vitesse et rentabilité pour une utilisation en temps réel
- CatBoost est précis pour prédire les tendances avec des caractéristiques étendues
- L'autoencodeur excelle sur les séquences complexes mais est gourmand en ressources
- Tous les modèles sont non supervisés : ils fonctionnent sans étiquetage
- Combiner décalages et statistiques roulantes améliore la précision de 15-20%
Intégration SIEM : les modèles se mettent à jour en ligne, les alertes se déclenchent sur anomaly_score > seuil. Les tests sur des anomalies synthétiques confirment un score F1 > 0,85 pour tous.
— Editorial Team
Aucun commentaire pour le moment.