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, 事件总线, 事件驱动架构, 企业级, 分布式系统, 响应大小分析, 响应策略, 响应编排, 域名枚举, 威胁情报, 威胁缓解, 安全事件响应, 安全事件管理, 安全仪表板, 安全传感器, 安全态势感知, 安全运营中心, 开发者工具, 日志处理, 服务导向架构, 测试用例, 版权保护, 网络映射, 自动化响应, 设计模式, 请求拦截