
Prototype de détection des menaces internes basé sur Streamlit, utilisant XGBoost et Isolation Forest pour analyser les données d'activité des employés, générer des résumés de risque et fournir des explications par employé basées sur SHAP.
ThreatDetect est un prototype de détection des menaces internes basé sur Streamlit qui analyse les données d'activité des employés et signale les comportements potentiellement risqués. Il utilise un classifieur XGBoost entraîné ainsi qu'un détecteur d'anomalies Isolation Forest pour produire des résumés de risque au niveau organisationnel et des informations explicables au niveau des employés.
L'application peut être exécutée localement avec Streamlit. Une démo déployée a été précédemment publiée à :
streamlit_app.py — application principale Streamlitrequirements.txt — dépendances des paquets PythonAI_Model_Code/insider_threat_model.pkl — pipeline d'inférence sauvegardée et artefacts du modèle entraînéAI_Model_Code/insider_threat_clean_dataset.csv — ensemble de données d'exemple intégré pour l'EDAAI_Model_Code/cos720_ai_model_FINAL.ipynb — notebook de développement du modèleassets/app_styling.css — style d'interface utilisateur personnalisé pour l'application Streamlitunit testing/ — fichiers de test pour la préparation des caractéristiques et la logique d'explicationdocs/TECHNICAL_DOCUMENTATION.md — documentation technique du projetstreamlitpandasnumpyscikit-learnmatplotlibseabornplotlyxgboostshapInstallez toutes les dépendances avec :
pip install -r requirements.txt
git clone https://github.com/jazbengu/ThreatDetect.git
cd ThreatDetect
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Lancez l'application avec :
streamlit run streamlit_app.py
Ouvrez ensuite l'URL locale affichée dans le terminal (généralement http://localhost:8501).
Run Threat Detection pour calculer les probabilités de risque pour chaque enregistrement.AI_Model_Code/insider_threat_clean_dataset.csv.Organisational Search via CSV est le principal flux de travail de détection des menaces par lot.Single Search est affiché dans la barre latérale mais n'est pas implémenté actuellement dans la logique de l'application.Exploratory Data Analysis est disponible pour l'exploration de l'ensemble de données et les vérifications rapides d'anomalies.AI_Model_Code/insider_threat_model.pkl contient un package de modèle sérialisé avec :
xgb_model : classifieur XGBoost entraînéiso_forest : détecteur d'anomalies Isolation Forest entraînéscaler : StandardScaler pour les entrées numériqueslabel_encoders : encodeurs pour les caractéristiques catégoriellesfeature_columns : liste ordonnée des caractéristiquescat_cols, num_cols, bin_cols : regroupements de caractéristiquesbest_threshold : seuil de classification utilisé pour les décisions de risqueshap_explainer : explicateur SHAP pour l'explicabilitéLe fichier du modèle est chargé par streamlit_app.py et utilisé pour prétraiter les entrées, calculer les probabilités de risque et générer des explications.
Le dépôt inclut des tests dans unit testing/.
Exécutez la suite de tests avec :
pytest "unit testing/"
Ce dépôt est configuré pour l'amélioration et les tests. Les améliorations futures peuvent inclure l'expansion de la couverture des caractéristiques et le réentraînement du modèle avec des données supplémentaires sur les menaces internes.