MatteoGeusa/ETL-Pipeline-Cyber-Threat-Intelligence

GitHub: MatteoGeusa/ETL-Pipeline-Cyber-Threat-Intelligence

基于 Airflow 和 Google Cloud Platform 构建的端到端自动化 ETL 数据流水线,每日从 NIST API 采集 CVE 漏洞数据并转换加载至 BigQuery 数据仓库。

Stars: 0 | Forks: 0

一个完全自动化的端到端数据流水线 (ETL),用于提取、转换和分析由 National Vulnerability Database (NIST) 每日发布的网络安全漏洞 (CVE)。 ## 概述 该系统遵循 **ETL (Extract, Transform, Load)** 范式,通过 Apache Airflow 上的 DAG (Directed Acyclic Graph) 进行协调,以确保执行顺序和自动化的错误处理 (retries)。 1. **Extract (API REST ➔ Data Lake):** 一个 Python 脚本查询 NIST 的政府 API。为了绕过 WAF (Web Application Firewall) 的拦截并管理 rate-limiting,通过 `User-Agent` 实现了控制。原始数据以 JSON 格式提取并直接加载到 Google Cloud Storage bucket 中,按时间分区结构 (`raw/cve/YYYY-MM-DD/`) 进行组织。 2. **Transform (JSON ➔ Pandas ➔ Parquet):** 从 Data Lake 中提取原始数据,进行展平和清理。仅隔离出关键指标(漏洞 ID、描述、CVSS V3 严重性评分)。由此产生的 dataframe 被序列化为列式存储格式 **Parquet**(通过 `pyarrow`),以降低存储成本并加速未来的查询,随后重新加载到 GCS (`processed/cve/YYYY-MM-DD/`) 中。 3. **Load (Data Lake ➔ Data Warehouse):** 处理后的 Parquet 文件利用 Google 的内部网络协议 (`gs://`) 加载到 **Google BigQuery** 表中,无需让数据经过编排节点。得益于 Parquet 格式的内在元数据,BigQuery 会自动推断 schema。 ## 技术栈 * **Cloud Provider:** Google Cloud Platform (GCS, BigQuery, IAM, Application Default Credentials)。 * **Infrastructure as Code:** Terraform(自动配置 bucket 和 dataset)。 * **编排:** Apache Airflow (Standalone Docker Container)。 * **容器化:** Docker & Docker Compose(通过 `Dockerfile` 构建自定义镜像)。 * **核心语言:** Python 3.10 * `pandas` & `pyarrow`: 数据处理和压缩。 * `google-cloud-storage` & `google-cloud-bigquery`: 通过原生 SDK 与云服务进行交互。 * `requests`: 消费外部 API。
标签:Apache Airflow, CVE, ECS, ETL, Google Cloud, JavaCC, Terraform, 基准测试, 数字签名, 数据工程, 数据管道, 版权保护, 请求拦截, 软件工程, 逆向工具