cristi4nhdz/osint-threat-intel-pipeline
GitHub: cristi4nhdz/osint-threat-intel-pipeline
一个基于 Python 和 spaCy 的多源威胁情报收集与 NLP 富化流水线,将安全新闻自动转化为结构化的威胁知识。
Stars: 0 | Forks: 0
# OSINT 威胁情报流水线
该流水线从 NewsAPI 拉取网络安全和威胁情报新闻,将原始事件推送到 Kafka,并使用 spaCy 的 transformer 模型运行 NLP 富化处理以提取实体和信号。富化后的输出将输送到仪表板进行审查。目前尚未完成,但核心摄取和富化阶段正在进行中。
## 目录
- [概述](#overview)
- [技术栈](#tech-stack)
- [功能特性](#features)
- [入门指南](#getting-started)
- [前置条件](#prerequisites)
- [环境设置](#environment-setup)
- [运行流水线](#running-the-pipeline)
- [项目结构](#project-structure)
## 概述
从 NewsAPI 拉取网络安全和威胁情报新闻,将原始事件推送到 Kafka,并通过 spaCy transformer 模型运行 NLP 富化处理以提取实体和信号。富化后的输出将输送到仪表板进行审查。核心摄取和富化功能已可用,仪表板仍在构建中。
## 技术栈
| 层级 | 技术 |
| --- | --- |
| 语言 | Python 3.x |
| NLP | spaCy (`en_core_web_trf`) |
| 消息传递 | Apache Kafka |
| 存储 | Snowflake |
| 编排 | Docker Compose |
| 环境 | Conda |
| 代码检查 | flake8, pylint, black, mypy, yamllint |
## 功能特性
- **新闻摄取** — 从 NewsAPI 获取可配置主题的文章,并将其发布到 Kafka 主题
- **NLP 富化** — 使用 spaCy 的 `en_core_web_trf` transformer 模型进行实体提取和威胁信号分类,并结合基于关键字的匹配来识别威胁行为者、恶意软件和攻击技术
- **相关性评分** — 文章在发布到富化主题之前会进行评分和过滤
- **Snowflake 存储** — 从 Kafka 消费富化后的文章并加载到 Snowflake,同时进行 URL 去重
- **Kafka 支持的事件总线** — 解耦的生产者/消费者架构,具备弹性和重放能力
- **配置驱动** — 基于 YAML 的配置,用于管理来源、主题和流水线行为
- **容器化** — 完整的 Docker Compose 设置,用于本地开发
## 入门指南
### 前置条件
- [Docker](https://www.docker.com/) & Docker Compose
- [Miniconda](https://docs.conda.io/en/latest/miniconda.html) 或 Anaconda
- 一个 [NewsAPI](https://newsapi.org/) API 密钥
### 环境设置
**1. 克隆仓库:**
```
git clone https://github.com/cristi4nhdz/osint-threat-intel-pipeline.git
cd osint-threat-intel-pipeline
```
**2. 创建并激活 Conda 环境:**
```
conda env create -f environment.yaml
conda activate osint
```
**3. 下载 spaCy transformer 模型:**
```
python -m spacy download en_core_web_trf
```
**4. 配置您的环境:**
复制或编辑设置文件,填入您的 API 密钥和主题偏好:
```
cp config/settings.example.yaml config/settings.yaml
# 使用你的 keys 编辑 settings.yaml
```
### 运行流水线
**启动基础设施:**
```
docker compose up
```
**运行 Snowflake 设置:**
```
python -m storage.snowflake_setup
```
**运行新闻摄取生产者:**
```
python -m ingestion.run_news
```
**运行富化流水线:**
```
python -m processing.run_enrichment
```
**运行 Snowflake 加载器:**
```
python -m storage.run_loader
```
**关闭:**
```
docker compose down
```
## 项目结构
```
osint-threat-intel-pipeline/
|-- config/ # YAML configuration files
|-- dashboard/ # Dashboard consumer and visualization
|-- ingestion/ # News fetching and Kafka producer
|-- processing/ # NLP enrichment, entity extraction, Kafka consumer
|-- storage/ # Snowflake setup and loader
|-- docker-compose.yml # Container orchestration
|-- environment.yaml # Conda environment spec
|-- README.md
```
标签:Docker, ESC4, HTTP/HTTPS抓包, Kafka, NLP, OSINT, Python, SecOps, Snowflake, SonarQube插件, spaCy, 云安全架构, 仪表盘, 威胁情报, 威胁源监控, 安全运营, 安全防御评估, 实体提取, 开发者工具, 态势感知, 扫描框架, 数据清洗, 数据管道, 无后门, 流式处理, 版权保护, 网络安全, 舆情监控, 软件工程, 软件成分分析, 逆向工具, 隐私保护