MatteoGeusa/ETL-Pipeline-Cyber-Threat-Intelligence

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

Stars: 0 | Forks: 0

Una data pipeline (ETL) end-to-end completamente automatizzata per l'estrazione, la trasformazione e l'analisi giornaliera delle vulnerabilità di sicurezza informatica (CVE) pubblicate dal National Vulnerability Database (NIST). ## Overview Il sistema segue il paradigma **ETL (Extract, Transform, Load)**, coordinato tramite un DAG (Directed Acyclic Graph) su Apache Airflow per garantire ordine di esecuzione e gestione automatica degli errori (retries). 1. **Extract (API REST ➔ Data Lake):** Uno script Python interroga le API governative del NIST. Per aggirare i blocchi dei WAF (Web Application Firewall) e gestire il rate-limiting, viene implementato un controllo tramite `User-Agent`. I dati grezzi vengono estratti in formato JSON e caricati direttamente in un bucket Google Cloud Storage, organizzati in una struttura a partizionamento temporale (`raw/cve/YYYY-MM-DD/`). 2. **Transform (JSON ➔ Pandas ➔ Parquet):** Il dato grezzo viene prelevato dal Data Lake, appiattito e pulito. Vengono isolate solo le metriche cruciali (ID Vulnerabilità, Descrizione, Punteggio di Gravità CVSS V3). Il dataframe risultante viene serializzato nel formato colonnare **Parquet** (tramite `pyarrow`) per abbattere i costi di storage e velocizzare le future query, per poi essere ricaricato in GCS (`processed/cve/YYYY-MM-DD/`). 3. **Load (Data Lake ➔ Data Warehouse):** I file Parquet processati vengono caricati in una tabella **Google BigQuery** sfruttando il protocollo di rete interno di Google (`gs://`), senza far transitare i dati per il nodo di orchestrazione. BigQuery deduce automaticamente lo schema grazie ai metadati intrinseci del formato Parquet. ## Stack Tecnico * **Cloud Provider:** Google Cloud Platform (GCS, BigQuery, IAM, Application Default Credentials). * **Infrastructure as Code:** Terraform (Provisioning automatizzato di bucket e dataset). * **Orchestrazione:** Apache Airflow (Standalone Docker Container). * **Containerizzazione:** Docker & Docker Compose (creazione di immagini personalizzate tramite `Dockerfile`). * **Linguaggio Core:** Python 3.10 * `pandas` & `pyarrow`: Manipolazione dei dati e compressione. * `google-cloud-storage` & `google-cloud-bigquery`: Interazione con i servizi cloud tramite SDK nativi. * `requests`: Consumo delle API esterne.