aabdulrafay/SDA-Pro-Security-Operations-Platform
GitHub: aabdulrafay/SDA-Pro-Security-Operations-Platform
SDA-Pro-Pro是一个基于Java的企业级安全运营中心(SOC)平台,用于自动化安全事件响应和威胁缓解。
Stars: 0 | Forks: 0
# SDA-Pro:安全事件响应与威胁缓解平台
SDA-Pro是一个分布式、高性能的安全运营中心(SOC)平台,旨在自动化企业网络中安全威胁的分级、丰富和缓解。系统从异构安全传感器中摄取原始日志,通过智能管道进行处理,将其关联到管理事件,并触发自动防御响应剧本。
该项目是为**软件设计与应用(SDA)**课程构建的,展示了**12种经典GoF设计模式**和**混合服务导向(SOA)与事件驱动(EDA)**架构模式的实现。
## 👥 项目组详情
- **章节**:BSSE 6-1
- **提交给**:Uzair Rasheed 先生
| SAP-ID | 姓名 |
| :--- | :--- |
| **54689** | ABDUL RAFAY |
| **54526** | MUHAMMAD MUJAHID |
## 🏗️ 架构概述
SDA-Pro将安全操作分解为不同的层,利用去中心化的事件驱动总线来协调状态和动作变化:
```
graph TD
A[Firewall / EDR / SIEM Webhooks] -->|Raw Alert Payload| B[Alert Ingestion Service]
B -->|Normalize & Process| C[Enrichment & Correlation Pipeline]
C -->|REST Lookups| D[Threat Intel Service]
C -->|Publish Domain Events| E[Observer Event Bus]
E -->|Event: AlertIngested| F[SOC Dashboard MVC]
E -->|Event: AlertIngested| G[Incident Management Service]
G -->|Triage & Transition State| H[Incident Lifecycle State Machine]
H -->|Transition to Containment| I[Response Orchestration Service]
I -->|Strategy Execution| J[Incident Response Facade]
J -->|Run Reversible Decorators| K[Response Actions: Firewall/EDR/AD]
E -->|Event: IncidentStateChanged| F
```
## 🎨 实现的设计模式(12种模式)
| 模式 | 位置/组件 | 目的 |
| :--- | :--- | :--- |
| **单例** | [EventBusPublisher.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/event-bus/src/main/java/com/sdapro/eventbus/publisher/EventBusPublisher.java) | 确保单个系统级事件代理实例协调观察者。 |
| **工厂方法** | [AlertNormalizerFactory.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/alert-ingestion-service/src/main/java/com/sdapro/alertingestion/services/normalizer/AlertNormalizerFactory.java) | 根据传入的传感器类型动态实例化正确的格式适配器。 |
| **抽象工厂** | [EnrichmentProviderFactory.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/middleware/src/main/java/com/sdapro/middleware/enrichment/EnrichmentProviderFactory.java) | 动态生成兼容的智能数据库家族(GeoIP、AssetDB、ThreatIntel)。 |
| **组合** | [Alert.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/shared/contracts/src/main/java/com/sdapro/shared/contracts/alert/Alert.java) | 将单个叶状警报和组合活动在单个接口下统一。 |
| **外观** | [IncidentResponseFacade.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/response-orchestration-service/src/main/java/com/sdapro/responseorchestration/services/facade/IncidentResponseFacade.java) | 提供简化的系统入口点以执行遏制策略计划。 |
| **适配器** | [VirusTotalAdapter.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/threat-intel-service/src/main/java/com/sdapro/threatintel/services/adapter/VirusTotalAdapter.java) | 将异构REST接口标准化为规范声誉指标。 |
| **装饰器** | [AuditLogDecorator.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/response-orchestration-service/src/main/java/com/sdapro/responseorchestration/services/decorator/) | 将功能(审计日志、指标计时、回滚跟踪、审批门)附加到动作上。 |
| **代理** | [CachingProxy.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/threat-intel-service/src/main/java/com/sdapro/threatintel/services/proxy/) | 为REST客户端实现拦截代理过滤器(缓存、速率限制、访问控制)。 |
| **状态** | [IncidentState.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/incident-management-service/src/main/java/com/sdapro/incidentmanagement/domain/incident/) | 封装特定状态的生命周期限制(`New` → `Triage` → `Containment` → `Closed`)。 |
| **责任链** | [EnrichmentPipeline.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/middleware/src/main/java/com/sdapro/middleware/enrichment/EnrichmentPipeline.java) | 将原始警报通过顺序链接的上下文丰富器传递。 |
| **观察者** | [EventBusPublisher.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/event-bus/src/main/java/com/sdapro/eventbus/) | 将异步域事件发送到松散耦合的模块(审计、通知、仪表板)。 |
| **策略** | [ResponseStrategy.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/response-orchestration-service/src/main/java/com/sdapro/responseorchestration/services/strategy/) | 根据威胁级别动态选择剧本(激进、平衡、保守)。 |
## 🛠️ 技术栈与需求
- **Java**:JDK 21+ / JDK 25 兼容性
- **构建系统**:Apache Maven 3.9+
- **Spring Boot**:3.3.0(无Lombok,干净的POJOs)
- **数据库**:PostgreSQL 15(通过Docker Compose部署,本地测试配置中自动回退到内存中的H2数据库)
- **容器化**:Docker & Docker Compose
- **测试**:JUnit 5,Spring Web MVC 测试上下文
## 📚 架构决策记录(ADRs)
关键设计选择记录在[docs/adr/](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/docs/adr/)文件夹中:
- **[ADR-001:混合SOA & EDA模式](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/docs/adr/ADR-001-hybrid-soa-eda.md)**
- **[ADR-002:内存中事件总线](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/docs/adr/ADR-002-in-memory-event-bus.md)**
- **[ADR-003:React + Tailwind CSS MVC仪表板](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/docs/adr/ADR-003-presentation-mvc-react.md)**
- **[ADR-004:威胁情报缓存与速率限制代理](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/docs/adr/ADR-004-threat-intel-proxy.md)**
- **[ADR-005:PostgreSQL数据库持久化集成](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/docs/adr/ADR-005-postgres-persistence.md)**
## 🚀 运行和编译项目
### 1. 编译整个代码库
要编译所有模块并构建相应的JAR包,请运行:
```
mvn clean compile
```
### 2. 运行验证测试
要运行所有测试套件(包括单元测试、MVC控制器模拟和端到端集成场景):
```
mvn test
```
### 3. 通过Docker Compose部署
要将平台微服务部署到容器化环境中:
```
docker-compose up --build
```
这将启动:
* `threat-intel-service` 监听 http://localhost:8083
* `alert-ingestion-service` 监听 http://localhost:8081
* `incident-management-service` 监听 http://localhost:8082
* `soc-dashboard` 监听 http://localhost:8084
### 4. 运行React实时SOC仪表板
要运行基于React的顶级安全指挥中心:
```
cd soc-dashboard
npm run dev
```
打开 http://localhost:5173 以查看和交互实时威胁模拟和事件编排仪表板。
## 🔍 端到端流程演示验证
[EndToEndIntegrationTest.java](file:///c:/Users/lifew/Downloads/SDA-Pro-Security-Operations-Platform/services/alert-ingestion-service/src/test/java/com/sdapro/alertingestion/services/EndToEndIntegrationTest.java) 练习系统集成:
1. **摄取Webhook**:将包含恶意IP `203.0.113.50` 的原始Splunk JSON警报有效负载 POST 到 `/ingest/splunk`。
2. **丰富链**:去重、解析Geo-IP国家详情、查询威胁情报REST API,并自动将严重性提升到**严重**。
3. **域事件广播**:将 `AlertIngestedEvent` 发布到事件总线,通知实时观察者。
4. **分级管理**:创建事件,通过分级转换其生命周期。
5. **遏制与编排**:将事件转换为 `CONTAINMENT` 状态。这触发了响应策略选择器,匹配 `Aggressive Containment Strategy`,锁定主机、阻止威胁IP并禁用受损害的Active Directory用户帐户。
标签:EDA, GOF设计模式, JS文件枚举, MVC模式, SOA, 事件总线, 事件驱动架构, 企业级, 分布式系统, 响应大小分析, 响应策略, 响应编排, 域名枚举, 威胁情报, 威胁缓解, 安全事件响应, 安全事件管理, 安全仪表板, 安全传感器, 安全态势感知, 安全运营中心, 开发者工具, 日志处理, 服务导向架构, 测试用例, 版权保护, 网络映射, 自动化响应, 设计模式, 请求拦截