serasr/audit-log-risk-scoring
GitHub: serasr/audit-log-risk-scoring
Serasr/audit-log-risk-scoring是一款基于机器学习的用户活动日志风险分析系统。
Stars: 0 | Forks: 0
# 信任与安全风险分析系统
## 用户活动日志中的统计调查与滥用模式检测




## 本项目做什么
复制信任与安全分析师用于调查用户活动日志中滥用行为的**端到端分析工作流程**:
1. **检测** - 统计异常值检测(Z分数)+ 机器学习辅助风险评分将事件的前2%呈现给分析师审查
2. **调查** - 群组比较、趋势分析和政策有效性测量量化滥用发生的方式和时间
3. **解释** - 每个标记的事件都包含一个简单语言解释(“标记原因:外部IP,非工作时间访问,角色权限超出”)
4. **报告** - 调查备忘录和标记账户CSV文件,可供政策、工程和领导层利益相关者共享
## 问题陈述
安全和信任与安全团队面临一个核心分析挑战:在每天50K+事件的高量活动日志中识别恶意行为,没有分析师可以审查所有内容,滥用模式不断演变。
该系统使用**行为分析** - 理解每个用户的“正常”行为,以大规模呈现上下文异常活动。
## 分析师工作流程
```
Raw Event Logs (50K+ events · 90 days · 300 users)
│
▼
[1] Behavioural Feature Engineering - 23 signals
Temporal · Velocity · Geographic · Role Deviation
Session · User Baseline · Composite Risk Signal
│
▼
[2] Statistical Analysis
Z-score outlier detection - fast first-pass filter
Cohort comparison (t-test) - normal vs suspicious users
Trend analysis - week-over-week abuse rate
Policy effectiveness - before/after intervention
│
▼
[3] ML-Assisted Risk Scoring (supporting role)
Isolation Forest ranks 50K events
Analyst reviews top 2% - evaluated with Precision@K
│
▼
[4] Investigation Report
Stakeholder memo · Flagged accounts CSV · Recommendations
```
## 检测到的滥用模式
| 模式 | 关键信号 | 现实世界类似物 |
|---------|-------------|---------------------|
| **账户接管** | 新的外部IP + 非工作时间 + 敏感资源 | 被威胁行为者使用的受损害凭证 |
| **凭证填充** | 来自旋转IP的快速登录失败爆发 | 自动化密码喷洒攻击 |
| **数据泄露** | 从低权限角色大量导出 | 内部人员在辞职前复制数据 |
| **权限提升** | 资源敏感性超出角色权限 | 用户访问超出授权的系统 |
| **内部威胁** | 受信任的用户 + 非工作时间 + 不寻常的事件序列 | 员工窃取知识产权 |
## 统计方法
### Z分数异常值检测
快速初步过滤 - 无需模型,立即可解释:
```
z_score = (bytes_transferred - mean) / std
# 用户传输了189,916字节,与平均值1,017相比 = z = 5.2 → 标记
```
### 群组比较(Welch的t检验)
量化可疑用户与正常用户的不同:
| 指标 | 正常平均值 | 可疑平均值 | 比率 | p值 |
|--------|-------------|-----------------|-------|---------|
| is_external_ip | 0.000 | 0.221 | 638.5x | <0.0001 |
| bytes_transferred | 1,017 | 189,916 | 186.7x | <0.0001 |
| login_failures_recent | 0.30 | 8.70 | 29x | 0.0003 |
### 政策有效性(双比例Z检验)
前后分析加统计显著性测试 - 回答“我们的干预措施实际上减少了滥用吗?”
### 趋势分析
每日滥用率与7天滚动平均值和周同比变化。
## 结果
| 指标 | 分数 |
|--------|-------|
| ROC-AUC | **0.9998** |
| 平均精度 | **0.9852** |
| Precision@10 | **1.0** - 前10个标记的 = 10/10 真实滥用 |
| Precision@50 | **1.0** - 前50个标记的 = 50/50 真实滥用 |
| Precision@100 | **1.0** |
| 召回率 | **1.0** |
## 样本调查备忘录输出
```
╔══════════════════════════════════════════════════════════════════╗
║ TRUST & SAFETY · RISK INVESTIGATION MEMO ║
╚══════════════════════════════════════════════════════════════════╝
EXECUTIVE SUMMARY
Analysed 50,440 events across 300 accounts.
Flagged 1,009 high-risk events (2.0%) affecting 88 unique accounts.
ABUSE PATTERN BREAKDOWN
credential_stuffing 222 events (22.0%)
account_takeover 106 events (10.5%)
insider_threat 45 events (4.5%)
data_exfiltration 36 events (3.6%)
KEY SIGNALS (p < 0.05)
is_external_ip 638.5x above normal
bytes_transferred 186.7x above normal
login_failures_recent 29x above normal
RECOMMENDATIONS
1. IMMEDIATE: Review top-50 flagged accounts
2. SHORT-TERM: Rate-limit login failures >10 in 60 seconds
3. MEDIUM-TERM: Tighten viewer/external role access controls
```
## 样本标记账户输出
```
user_id risk_score analyst_explanation
user_0144 1.000 Flagged due to: external IP; off-hours activity;
role clearance exceeded; large transfer (358,063 bytes)
user_0130 0.996 Flagged due to: external IP; off-hours activity;
first-time IP subnet
user_0203 0.988 Flagged due to: large transfer (4,821,302 bytes);
off-hours activity
```
## 技术栈
| 组件 | 技术 | 目的 |
|-----------|-----------|---------|
| 特征工程 | Python, Pandas, NumPy | 23个行为信号 |
| 统计分析 | SciPy(t检验,z检验) | 异常值检测,群组比较,政策测量 |
| 机器学习风险评分 | Scikit-learn(隔离森林) | 优先排序分析师审查队列 |
| 评估 | Scikit-learn指标 | Precision@K,ROC-AUC,平均精度 |
| CI/CD | Azure DevOps | 每次提交自动运行 + 质量门控 |
## 项目结构
```
AuditRiskScoring/
├── run_pipeline.py # Entry point
├── data/simulate_logs.py # 50K events, 5 abuse patterns
├── features/feature_engineering.py # 23 behavioural signals
├── analysis/statistical_analysis.py # Z-scores, t-tests, trends, policy effectiveness
├── models/risk_scorer.py # Isolation Forest + Precision@K
├── reports/investigation_report.py # Stakeholder memo + flagged CSV
└── azure-pipelines.yml # CI/CD with quality gate
```
## 如何运行
```
git clone https://dev.azure.com/AIML-DataAnalytics-Projects/_git/AuditRiskScoring
cd AuditRiskScoring
pip install -r requirements.txt
python run_pipeline.py
```
**输出:**
- `reports/investigation_memo.txt` - 利益相关者摘要
- `reports/flagged_accounts.csv` - 前100个标记事件及其解释
- `reports/daily_abuse_trend.csv` - 滥用率随时间变化
- `artifacts/metrics.json` - 模型评估指标
## CI/CD(Azure DevOps)
每次提交到`master`自动:
1. 运行完整分析流程
2. **质量门控**:如果ROC-AUC < 0.75则构建失败
3. 发布模型工件和报告
## 许可证
MIT
标签:Apex, Azure DevOps, MIT 许可, ROC-AUC, 代码示例, 凭证填充, 安全策略, 工程安全, 异常事件, 异常检测, 异常模式检测, 提示词设计, 数据分析, 机器学习, 用户活动日志, 用户行为分析, 精确率, 统计分析, 账户接管, 逆向工具, 领导力沟通, 风险分析