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, 云合规, 云计算, 威胁情报, 子域名变形, 安全仪表盘, 开发者工具, 异常检测, 数据处理管道, 数据规范化, 无后门, 日志解析, 网络安全审计, 规则引擎, 访问控制, 证书伪造, 逆向工具