
Streamlit 기반 내부자 위협 탐지 프로토타입으로, XGBoost와 Isolation Forest를 사용하여 직원 활동 데이터를 분석하고, 위험 요약을 생성하며, SHAP 기반 개별 직원 설명을 제공합니다.
ThreatDetect는 Streamlit 기반의 내부 위협 탐지 프로토타입으로, 직원 활동 데이터를 분석하여 잠재적인 위험 행동을 식별합니다. 학습된 XGBoost 분류기와 Isolation Forest 이상 탐지기를 함께 사용하여 조직 수준의 위험 요약과 설명 가능한 직원 수준의 인사이트를 제공합니다.
이 앱은 Streamlit을 사용하여 로컬에서 실행할 수 있습니다. 배포된 데모는 다음에서 확인할 수 있었습니다:
streamlit_app.py — 주요 Streamlit 애플리케이션requirements.txt — Python 패키지 종속성AI_Model_Code/insider_threat_model.pkl — 저장된 추론 파이프라인 및 학습된 모델 아티팩트AI_Model_Code/insider_threat_clean_dataset.csv — EDA용 번들 샘플 데이터셋AI_Model_Code/cos720_ai_model_FINAL.ipynb — 모델 개발 노트북assets/app_styling.css — Streamlit 앱용 사용자 정의 UI 스타일링unit testing/ — 특성 준비 및 설명 로직을 위한 테스트 파일docs/TECHNICAL_DOCUMENTATION.md — 프로젝트 기술 문서streamlitpandasnumpyscikit-learnmatplotlibseabornplotlyxgboostshap모든 종속성을 다음 명령어로 설치합니다:
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
다음 명령어로 앱을 시작합니다:
streamlit run streamlit_app.py
그런 다음 터미널에 표시된 로컬 URL (보통 http://localhost:8501)을 엽니다.
위협 탐지 실행 버튼을 클릭하여 각 레코드의 위험 확률을 계산합니다.AI_Model_Code/insider_threat_clean_dataset.csv에 있는 번들 샘플 데이터셋을 사용합니다.CSV를 통한 조직 검색은 주요 일괄 위협 탐지 워크플로입니다.단일 검색은 사이드바에 표시되지만 현재 앱 로직에서 구현되지 않았습니다.탐색적 데이터 분석은 데이터셋 탐색 및 빠른 이상 확인에 사용할 수 있습니다.AI_Model_Code/insider_threat_model.pkl에는 직렬화된 모델 패키지가 포함되어 있으며, 다음이 포함됩니다:
xgb_model: 학습된 XGBoost 분류기iso_forest: 학습된 Isolation Forest 이상 탐지기scaler: 수치 입력용 StandardScalerlabel_encoders: 범주형 특성 인코더feature_columns: 정렬된 특성 목록cat_cols, num_cols, bin_cols: 특성 그룹화best_threshold: 위험 결정에 사용된 분류 임계값shap_explainer: 설명 가능성을 위한 SHAP 설명기모델 파일은 streamlit_app.py에 의해 로드되어 입력 전처리, 위험 확률 계산 및 설명 생성에 사용됩니다.
저장소에는 unit testing/ 아래 테스트가 포함되어 있습니다.
다음 명령어로 테스트 스위트를 실행합니다:
pytest "unit testing/"
이 저장소는 개선 및 테스트를 위해 구성되어 있습니다. 향후 개선 사항에는 특성 범위 확장 및 추가 내부 위협 데이터로 모델 재학습이 포함될 수 있습니다.