LaibaMumtaz/threat-intel-platform
GitHub: LaibaMumtaz/threat-intel-platform
基于 Spring Boot 微服务和 Apache Kafka 构建的分布式威胁情报平台,实现了从外部情报源自动采集、提取、评分到查询的完整 IOC 处理流水线。
Stars: 0 | Forks: 0
# 分布式网络威胁情报平台(微服务)
**课程名称:** 软件构建与开发 (COMP-370)
**提交给:** Dr. Malik Nabeel Ahmed Awan
## 1. 执行摘要
本项目展示了一个分布式**网络威胁情报平台**的架构设计和实现细节,旨在满足复杂计算问题 的要求。该平台通过 Spring Boot、Apache Kafka 和 MySQL 采用事件驱动的微服务架构构建。它能够自主摄取、提取、验证、排名和持久化入侵指标——特别是 IPv4 地址和域名——这些指标来源于全球威胁情报 API(AbuseIPDB 和 AlienVault OTX)。
该架构的核心目标是通过解耦服务边界和利用异步消息代理,实现高可用性、容错能力和水平可扩展性。
## 2. 系统架构与组件设计
该系统放弃了传统的单体架构,转而采用五个可独立部署的微服务。Apache Kafka 充当中枢神经系统,在服务之间实现无缝的数据流传输和背压管理。
### 2.1 高层架构图
```
graph TD
classDef external fill:#FFB3B3,stroke:#333,stroke-width:2px,color:#000;
classDef service fill:#99CCFF,stroke:#2874A6,stroke-width:2px,color:#000;
classDef broker fill:#A9DFBF,stroke:#239B56,stroke-width:2px,color:#000;
classDef db fill:#F9E79F,stroke:#B7950B,stroke-width:2px,color:#000;
subgraph APIs [External Threat Intel APIs]
AIPDB[AbuseIPDB API]:::external
AVOTX[AlienVault OTX]:::external
end
subgraph Services [Spring Boot Microservices]
IS[Ingestion Service]:::service
ES[Extraction Service]:::service
PS[Processing Service]:::service
RS[Ranking Service]:::service
QS[Query Service]:::service
end
subgraph Infrastructure [Infrastructure Layer]
Kafka((Apache Kafka Broker)):::broker
DB[(MySQL Database)]:::db
end
AIPDB -.->|Scheduled Fetch| IS
AVOTX -.->|Scheduled Fetch| IS
IS -->|Publishes to raw-iocs| Kafka
Kafka -.->|Consumes| ES
ES -->|Publishes IPs and Domains| Kafka
Kafka -.->|Consumes| PS
PS -->|Saves Initial State| DB
PS -->|Publishes iocs-to-rank| Kafka
Kafka -.->|Consumes| RS
RS -.->|API Call or Fallback| AIPDB
RS -->|Updates Severity Score| DB
DB -.->|Reads Data| QS
QS -->|Exposes REST APIs| Client([Client Dashboard])
```
## 3. 微服务拆分与职责
1. **摄取服务(数据网关):**
作为主要入口点。它利用 Spring 的 `@Scheduled` 任务和 `RestTemplate` 从外部 API 获取原始威胁数据。为了防止同步瓶颈,它将原始 JSON 负载立即推送到 `raw-iocs` Kafka topic 中。
2. **提取服务(数据转换):**
一个专门的消费者服务,用于解析非结构化的 JSON 数据。它利用高级正则表达式 来分离出有效的 IPv4 地址和顶级域名。然后将清理后的数据路由到特定的 Kafka topic(`extracted-ips` 和 `extracted-domains`)。
3. **处理服务(验证与持久化):**
此服务执行业务级别的数据验证。它将验证后的流映射为 Java 持久化 API (JPA) 实体,并以 `PENDING` 状态将它们存储在 MySQL 数据库中,从而弥合了流数据与关系型数据之间的鸿沟。
4. **排名服务(威胁富化):**
它通过查询 AbuseIPDB API 获取 `abuseConfidenceScore` 来计算每个 IOC 的威胁严重程度。一旦完成排名,它会将数据库状态更新为 `MALICIOUS` 或 `SAFE`。
5. **查询服务(分析与展示):**
提供一套 RESTful API 端点,满足 6-9 个操作 API 的需求。它使最终用户能够动态获取总数、按类型过滤威胁并检索特定的恶意记录。
## 4. 高级分布式特性(CCP 要求)
为了满足复杂计算问题的严格要求,该系统结合了高级软件工程模式。
### 4.1 容错与死信队列 (DLQ)
在微服务环境中,网络故障和数据库锁定是不可避免的。为了严格遵守“处理故障和重试”的要求,该平台利用了 **Spring Kafka 的 `@RetryableTopic`**。
- 如果服务遇到故障,它会启动指数退避重试机制(最多尝试 3 次)。
- 在耗尽所有重试次数后,消息将被无缝路由到一个**死信队列 (DLQ)**。这确保了零数据丢失,并允许工程师监控和稍后重新处理失败的事件。
### 4.2 优雅降级(熔断器模式)
外部 API 强制执行严格的每日速率限制(例如,HTTP 429 Too Many Requests)。排名服务实现了**熔断器模式**,而不是任由系统崩溃或停止管道运行。如果 API 限额耗尽,系统会通过应用内部的模拟评分启发式算法进行优雅降级,从而确保连续的数据流和平台可用性。
### 4.3 事件流程序列图
```
sequenceDiagram
autonumber
participant IS as Ingestion
participant K as Kafka Broker
participant ES as Extraction
participant PS as Processing
participant RS as Ranking
participant DLQ as Dead Letter Queue
IS->>K: Produce payload (raw-iocs)
K->>ES: Consume payload
ES->>K: Produce IP/Domain topics
K->>PS: Consume extracted topics
PS->>K: Produce (iocs-to-rank)
K->>RS: Consume for scoring
rect rgb(255, 230, 230)
Note over RS, K: Fault Tolerance Handling
alt API Limit Hit or DB Down
RS--xK: Acknowledgment Failed
K-->>RS: Automatic Retry (3 Attempts)
RS->>DLQ: Route to DLQ (Zero Data Loss)
end
end
```
## 5. 问题解决特征(WP1-WP9)与 SDG 映射
| 特征 | 架构依据 |
| :--- | :--- |
| **WP1(相互冲突的需求)** | 通过使用 Kafka 消息代理解耦同步操作,在实时数据摄取和持久化之间取得了平衡。 |
| **WP2(分析深度)** | 通过实施熔断器和死信队列 (DLQ) 等高级行业模式,设计了一个具有高弹性的管道。 |
| **WP3(知识深度)** | 展示了在集成 Spring Boot、Apache Kafka、JPA/Hibernate 和外部 REST API 方面全面的技术能力。 |
| **WP8(相互依赖性)** | 设计了五个截然不同、松耦合的微服务,这些服务能够协同运作,但可以独立扩展和部署。 |
| **SDG 9 & 16 映射** | 直接有助于构建弹性基础设施 (SDG 9),并通过识别和消除网络威胁来促进安全的数字社会 (SDG 16)。 |
## 6. 结论
开发完成的网络威胁情报平台成功满足并超越了复杂计算问题的要求。通过编排稳健的微服务架构、实施容错机制以及实现事件驱动的数据流,该项目在现代软件工程和分布式系统设计方面展示了极高的成熟度。
标签:AbuseIPDB, Apache Kafka, API集成, CCP复杂计算, IP信誉检测, IP 地址批量处理, Java开发, JS文件枚举, SOC自动化, Spring Boot, 分布式系统, 可观测性, 响应大小分析, 域名安全, 域名枚举, 威胁情报, 威胁评级, 安全软件开发, 容错机制, 密码管理, 开发者工具, 异常检测, 异步消息队列, 微服务架构, 情报生命周期, 指标提取, 数据摄取, 网络信息收集, 网络安全, 网络安全工程, 背压管理, 软件成分分析, 软件架构设计, 隐私保护, 高可用性