janinelurenana/cloud-security-analyzer
GitHub: janinelurenana/cloud-security-analyzer
这是一个模拟 AWS 云安全监控管道的分析工具,通过模块化架构解析日志并检测云资源配置错误与异常活动。
Stars: 1 | Forks: 0
# 云安全配置错误与活动分析器
## 概述
本项目模拟了一个简化的云安全监控管道,其灵感来源于现实世界中的 AWS 安全工具(例如,CloudTrail + GuardDuty)。
它接收原始的 AWS 风格日志和资源配置,对不一致的数据进行规范化,应用确定性检测规则,并通过 JSON 报告和本地仪表板生成结构化的安全发现。
该系统在设计上有意采用了严格的关注点分离,以反映现实世界中的管道架构。
## 系统架构
```
raw_cloudtrail.json ──┐
├──▶ parser.py ──▶ detect.py ──▶ report.py ──▶ report.json
raw_resources.json ──┘ │
▼
app.py (dashboard)
```
### 组件职责
* **parser.py**
负责接收和规范化原始 AWS JSON。将嵌套的、不一致的数据转换为结构化的 CSV 格式。
* **detect.py**
纯检测引擎。应用基于规则的逻辑并返回安全发现。无 I/O 操作。
* **report.py**
表示层。将安全发现格式化为控制台输出,并将其持久化到 JSON 中。
* **app.py**
只读仪表板。使用 Streamlit 可视化来自 `report.json` 的安全发现。
* 仪表板:
## 执行管道
### 阶段 1 — 数据接收与规范化
* 解析原始 CloudTrail 日志和资源配置
* 展平嵌套的 JSON 结构
* 处理空值、缺失字段和不一致的模式
* 输出规范化的数据集:
* `parsed_access_logs.csv`
* `parsed_resources.csv`
### 阶段 2 — 检测引擎
* 对规范化后的数据集应用确定性规则
* 评估:
* 资源配置错误
* 可疑活动模式
* 返回结构化的安全发现列表
### 阶段 3 — 报告
* 将安全发现格式化为易读的控制台输出
* 生成 `output/report.json` 以供下游使用
### 阶段 4 — 可视化
* Streamlit 仪表板读取 `report.json`
* 显示:
* 严重程度分布
* 规则细分
* 可过滤的安全发现表格
## 项目结构
```
cloud-security-analyzer/
│
├── 01-data/
│ ├── raw_cloudtrail.json
│ ├── raw_resources.json
│ ├── parsed_access_logs.csv
│ └── parsed_resources.csv
│
├── 02-analysis/
│ ├── parser.py
│ ├── detect.py
│ ├── report.py
│ └── run.py
│
├── 03-output/
│ └── report.json
│
├── 04-dashboard/
│ ├── summary_cards.png
│ ├── charts_breakdown.png
│ └── findings_high_only.png
│
├── app.py
├── analysis.md
└── README.md
```
## 安装
```
pip install pandas streamlit plotly
```
## 运行系统
### 步骤 1 — 执行完整管道
```
cd analysis
python run.py
```
此步骤将执行:
1. JSON → CSV 规范化
2. 基于规则的检测
3. 报告生成 (`output/report.json`)
### 步骤 2 — 启动仪表板
```
streamlit run app.py
```
访问地址:
```
http://localhost:8501
```
## 检测逻辑
该引擎评估两类风险:
### 1. 资源配置错误
* 公开的 S3 存储桶
* 开放了 SSH (端口 22) 的公开 EC2 实例
* 权限过高的 IAM 角色 (管理员级别访问权限)
* 未加密的存储资源
* 禁用了 CloudWatch 监控的 EC2 实例
### 2. 可疑活动模式
* 暴力破解登录尝试 (基于时间窗口)
* 多 IP 登录异常
* 短时间内过度的管理员活动
### 规则摘要
| # | 规则 | 严重程度 |
| - | ----------------------- | -------- |
| 1 | 公开存储 | HIGH |
| 2 | 开放 SSH 端口 | HIGH |
| 3 | 权限过高的角色 | MEDIUM |
| 4 | 未加密 | MEDIUM |
| 5 | 暴力破解尝试 | HIGH |
| 6 | 可疑 IP 行为 | HIGH |
| 7 | 管理员过度使用 | MEDIUM |
| 8 | 监控已禁用 | LOW |
行为规则的阈值可在 `detect.py` 中进行配置。
## 设计决策
### 为什么选择 CSV 作为中间格式?
CSV 提供了一种扁平、结构化的表示形式,与深度嵌套的 JSON 相比,它简化了规则评估和调试过程。
### 为什么使用基于规则的检测?
系统使用确定性规则以确保:
* 完全透明 (每一项发现都是可解释的)
* 结果的可重复性
* 控制模拟的简单性
### 为什么采用解耦架构?
分离解析器、检测和报告层可以带来以下优势:
* 独立测试组件
* 轻松替换输入格式
* 明确的系统边界
### 为什么跳过服务间日志?
服务生成的事件会引入噪音,降低行为分析的信号质量。该系统专注于用户驱动的活动。
## 示例输出
```
[detect] 43 finding(s) returned.
SUMMARY
────────────────────────────
Total findings : 43
HIGH : 14
MEDIUM : 21
LOW : 8
```
## 输入数据
| 来源 | 记录数 |
| ------ | ------- |
| CloudTrail 日志事件 | 100 |
| S3 存储桶 | 9 |
| EC2 实例 | 10 |
| IAM 角色 | 7 |
| **资源总数** | **26** |
## 局限性与未来改进
### 当前的局限性
* 每个资源仅表示单个端口(简化模型)
* 模拟的 AWS 数据(无实时集成)
* * 使用两个独立的数据集(`raw_cloudtrail.json` 和 `raw_resources.json`),而真实的 SIEM 会在查询时连接数据集。
* 无异常评分或行为基线分析
### 计划的改进
* 支持多端口资源建模
* 集成真实的 AWS 日志源
* 引入风险评分系统
* 添加时间序列行为分析
* 扩展规则集以实现更广泛的覆盖
## 核心要点
本项目演示了如何使用以下方式构建云安全监控管道:
* 结构化数据规范化
* 确定性的基于规则的检测
* 分层的系统设计
它优先考虑清晰度、模块化和可解释性,而非复杂性。
标签:AWS, CloudTrail, DPI, GuardDuty, Kubernetes, Python, Streamlit, 云合规, 云计算, 威胁情报, 子域名变形, 安全仪表盘, 开发者工具, 异常检测, 数据处理管道, 数据规范化, 无后门, 日志解析, 网络安全审计, 规则引擎, 访问控制, 证书伪造, 逆向工具